




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中国(zhn u)石油大学c语言上机题答案(d n)大全(2014版)最全最详细(xingx)1.1 Hello world.让我们用C语言向世界问好。最早的程序基本也是这个样子的:程序一:#include void main() printf(Hello world.n);程序二:#include int main() printf(Hello world.n); return 0;上面的程序你任意模仿一个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。 输入:无输出:Hello world.#includeint main() printf(Hello wo
2、rld.n);1.2 Welcome to Beijing.让我们来练习如何显示多行文字。 输入:无输出:就是下面的那段文字。#includevoid main()printf(Welcomen);printf(ton);printf(Beijing.n);1.3 练习最简单的printf和scanfprintf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。 输入:整型变量x的值。输出:输出整型变量x对应的十进制、八进制和十六进制形式。认真观察-1的八进制和十六进制输出,请想想是为什么。#include int main()int x;scanf(%d,&x);prin
3、tf(x=%d,x);printf(x=%o,x);printf(x=%xn,x);return 0;1.4 练习两个(lin )整数之间的运算背景(bijng):基本(jbn)练习。输入:接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123 444输出:分别输出进行+、-、*、/、*之后的运行结果。#includeint main()int x,y; scanf(%d%d,&x,&y); printf(%d+%d=%dn,x,y,x+y); printf(%d-%d=%dn,x,y,x-y); printf(%d*%d=%dn,x,y,x*y); printf(%d/%d=%dn,
4、x,y,x/y); printf(%d%d=%dn,x,y,x%y); return 0;1.5 学习打印你的第一个图形背景:我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。程序如下:#include int main() printf(*n); printf(*n); printf(*n); printf(*n); return 0;要求:按照上面的程序范例,编写一个小程序,要求输出的是 4 行由*号组成的等腰三角形。输入:无。输出:指定图形。#include int main() printf( *n); printf( *n)
5、; printf( *n); printf(*n); return 0;2.1 整型数的表示(biosh)范围编写一个(y )循环程序,输入 N 值,输出(shch) N 的阶乘。关于循环程序怎么编写,可以参考教材第3章P66页的例题4.2和第5章P82的例题5.1的内容。注意整型数的表示范围,如果当输入的 N 比较大时,例如 N 等于 20 时,输出怎么是负数了?自己想明白吧!#includevoid main()int N,i;int sum=1;N=2;scanf(%d,&N);if(N=16)for (i=1;i=17)printf(N is too big!n);2.2 求正弦函数值
6、已知求正弦 sin(x) 的近似值的多项式公式为: sin(x) = x - x3/3! + x5/5! - x7/7!+ + (-1)n x2n+1/(2n+1)! + 编写程序,要求输入 x (单位是弧度)和,按上述公式计算 sin(x) 的近似值,要求计算的误差小于给定的。 此题当然要用到循环语句,到第5章去找个猫来照着画吧,循环的终止条件就是本次计算出来的正弦函数值和上次计算的值的差小于给定的。求两个值的差时,要求出其绝对值,使用库函数fabs(),头文件在math.h里。友情提示:给定的误差值越小,计算的精度越高,但是要注意喽,给的精度太高,你的程序会成为死循环。如果出现死循环的情况
7、,可以用+键退出程序。#include #include int main() float x,eps,s,y=0,y0,t; int n,j; scanf(%f%f,&x,&eps); n=t=j=1; s=x; do y0=y; if (n%2=0) y=y-s/t; else y=y+s/t; s*=x*x; t*=(j+1)*(j+2); j+=2; n+; while(fabs(y0-y)eps);printf(%fn,sin(x);system(PAUSE); return 0;2.3 判断(pndun)输入的字符的类型我们将字符(z f)分为五类:大写字母、小写字母、数字、控制字
8、符、其他字符。编写程序,从键盘输入一个字符(z f),输出字符所属的类型:大写字母时输出capital letters, 小写字母时输出small letters,数字是输出figures,其他字符时输出 others。#includevoid main()char c; c = getchar ( ); if (c = 0 & c = A & c = a & c = z) printf (small lettersn); else printf (othersn);3.1 找零钱 假定有 5 角、 1 角、 5 分、 2 分和 1 分共 5 种硬币,在 给顾客找硬币时,一般都会尽可能地选用硬
9、币个数最小的方法。 例如,当要给某顾客找 7 角 2 分钱时,会给他一个 5 角, 2 个 1 角 和 1 个 2 分的硬币。试编写一个程序,输入的是要找给顾客的零 钱(以分为单位),输出的是应该找回的各种硬币数目,并保 证找回的硬币数最少。#include int main() int x1,x2,x3,x4,x5; int x; scanf(%d,&x); x1=x/50; x2=x%50/10; x3=x%50%10/5; x4=x%50%10%5/2; x5=x%50%10%5%2/1; printf(%dn,x1); printf(%dn,x2); printf(%dn,x3); p
10、rintf(%dn,x4); printf(%dn,x5); return 0; 3.2 计算(j sun)时钟的夹角背景:钟面上的时针和分针之间的夹角(ji jio)总是在 0 度 359 度之间。举例来说,在十二点的时候(sh hou)两针之间的夹角为 0 度,而在六点的时候夹角为 180 度,在三点的时候为 90 度。本题要解决的是计算 0:00 到 12:00之间任意一个时间的夹角。输入: 每组测试数据包含两个数字:第一个数字代表小时 ( 大于等于 0 小于 12) ,第二个数字代表分 ( 在区间 0, 59 上 ) 。 输出: 对应每组测试数据,用常用格式显示时间以及这个时候时针和分
11、针间的最小夹角,精确到小数点后一位。友情提示:以表中心到12点的连线为基准,分针每走1分钟是6度,时针与基准的夹角每个小时也是30度,从整点开始,每过1分钟时针再增加0.5度。 提示:时钟夹角计算公式|5.5m-30h|,h为时针,m为分针。求浮点型绝对值的函数为fabs,需要包含math.h头文件#include stdio.h#include math.hint main()int h,m;double angle;scanf(%d%d,&h,&m);angle=fabs(5.5*m-30*h);if(angle180)angle=360-angle;printf(At %d:%02d t
12、he angle is %.1f degrees.n,h,m,angle);3.3 照猫画猫:计算圆柱的侧面积及体积如果已知圆柱的底面半径 r ,以及高 h ,则可计算出圆柱的侧面积 s=2rh ,体积 v= r 2 h 。其中 =3.1415926 输入 第一行输入圆柱的底面半径 r第二行输入(shr)圆柱的高 h 输出(shch) s=,v= 要求 1. 所有变量都定义为双精度类型2. 结果精确到小数点后两位#include stdio.h #define n 3.1415926 int main() float r,h,s,v; printf; scanf(%f%f,&r,&h); s=
13、2*n*r*h; v=n*r*r*h; printf(s=%6.2f,v=%6.2fn,s,v); 3.4 分离整数 任意从键盘上输入一个三位正整数,要求正确地分离出它的个位、十位和百位,并分别在屏幕上输出。比如输入的三位正整数 #include stdio.hint main()int x,hundreds,tens,units;printf;scanf(%d,&x);hundreds=x/100;tens=x%100/10;units=x%100%10;printf(units=%d,tens=%d,hundreds=%dn,units,tens,hundreds);3.5 鸡兔同笼已知笼
14、中有头h个,有脚f条,问笼中鸡兔各有多少只? 输入:头和脚的数目输出:兔子和鸡的数目(输出语句为:printf(rabbit=%d,chicken=%d,rabbit,chicken);)Sample输入:10 20输出:rabbit=0,chicken=10#include stdio.hint main()int chicken,rabbit,f,h;scanf(%d%d,&h,&f);rabbit=(f-2*h)/2;chicken=(4*h-f)/2;printf(rabbit=%d,chicken=%dn,rabbit,chicken);4.1 温度(wnd)转换背景(bijng):
15、 经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用(ciyng)了不同的温度计量单位:有些使用华氏温度标准(F),有些使用摄氏温度(C)。现在,请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。温度转换的公式为:F(C95)32 ;C(F32)59 ;式中F-华氏温度,C-摄氏温度。输入: 第一个数据(1 或 2 )确定转换的类型:华氏转摄氏(1);摄氏转华氏(2);第二个数据是相应需要转换的温度值。 输出: 相应的转换后的温度值(保留小数点后 2 位)。#include void mai
16、n() int lx; double f,c; scanf(%d,&lx); if(lx=1) scanf(%lf,&f); c=(f-32)*5/9; printf(The Centigrade is %.2fn,c); else scanf(%lf,&c); f=(c*9/5)+32; printf(The Fahrenheit is %.2fn,f); 4.2 分段函数有一分段函数,y=f(x)。当x小于6时,y=x-12;当x大于等于6且小于15时,y=3x-1;当x大于等于15时,y=5x+9.从键盘上输入一个整数x,输出对应的y值。 #include void main()int
17、x,y;scanf(%d,&x);if(x6)y=x-12;else if(x15)y=3*x-1;elsey=5*x+9;printf(%dn,y);return 0;4.3 整数(zhngsh)位数判断 输入一个(y )不多于5位的正整数,要求(yoqi): (1)求它是几位数;(2)逆序打印出各位数字。#include #include #define SIZE 5intmain(void) int bit_count;/位数 long int input_num;/输入数 int resultSIZE;/存放各个位的数 int i; scanf(%ld, &input_num); if
18、 (input_num 99999) printf(Invalid inputn); exit(1); for( bit_count = 0; input_num; +bit_count) resultbit_count = input_num % 10; input_num /= 10; printf(%dn,bit_count); for(i = 0; i bit_count; +i) printf(%d,resulti); printf(n); exit(0);4.4 四位数拆分输入一个四位数,判断千位、百位、十位和个位数字之和是否为偶数,如果是,输出Yes,如果不是,输出No;如果不是
19、四位数,输出Invalid data。 #includevoid main() int x,a,b,c,d,e; scanf(%d,&x); if(x/1000=1) printf(Invalid datan); else a=x/1000; b=x%1000/100; c=x%1000%100/10; d=x%1000%100%10; e=(a+b+c+d)%2; if(e=0) printf(Yesn); else printf(Non); 4.5 磨磨你的砍柴刀:判断(pndun)三角形的形状要求(yoqi):输入三角型的三条边,判断三角形的形状。假设输入的三边边长均0。输入(shr):
20、三角型的3条边的长度(int型)。输出:等边三角形:equilateral triangle.等腰三角形:isoceles triangle.不构成三角形:non-triangle.一般三角形:triangle.#includevoid main() float a,b,c; scanf(%f%f%f,&a,&b,&c); if(a+bc|b+ca|c+a。输入其他字符时原样输出。 友情提示:整数之间运算的结果要取整,例如5/2的结果是2,而5.0/2.0对小数四舍五入的结果就是3.0了。所以输入大写英文字母时的输出要仔细考虑。#include int main() char ch; int
21、a; ch=getchar(); if(ch=97&ch=65&ch=48&ch=57) ch=ch/10+ch; putchar(ch); else putchar(ch); printf(n); 4.7 判断(pndun)某年某月的天数一年有365天,有的月份(yufn)有31天,有的有30天,2月份(yufn)闰年的时候是29天,非闰年的时候是28天。现在要求从键盘上输入一个年份和月份,输出其对应的天数。#include main() int year,month,days; scanf(%d %d, &year,&month); switch(month) case 1: case 3
22、: case 5: case 7: case 8: case 10: case 12: days=31;break; case 4: case 6: case 9: case 11:days=30;break; case 2:if(year % 4 =0) & (year % 100 !=0) |(year % 400=0) days=29; else days=28; printf(%dn,days);4.8 花多少钱买衣服周末商场促销呢,某品牌服装既可以买套装,也可以买单件。若买的不少于套,每套元;不足套的每套元,只买上衣每件元,只买裤子每条元。编写程序,输入计划购买的上衣数量 a 和裤子
23、的数量 b ,计算并输出应该付的款 m 。#includevoid main() int a,b,y; scanf(%d%d,&a,&b); if(b=a&b50) y=90*b+(a-b)*60; if(b=50) y=80*b+(a-b)*60; if(ab&a50) y=90*a+(b-a)*45; if(a=50) y=80*a+(b-a)*45; printf(%dn,y);4.9 到邮局(yuj)去寄包裹你去邮局给朋友寄礼物。发现邮局对邮寄包裹的费用是这样规定(gudng)的:如果包裹长宽高任意一个尺寸超过米,或重量超过千克,不予邮寄;对可以邮寄的包裹每件收手续费 0.2 元,不同
24、重量的邮资(yuz)按下表计算: 重量(千克) 收费标准(元) 小于 . 大于等于但不超过 . 大于等于但不超过 . 编写程序,输入包裹的长、宽、高尺寸和重量,输出所需的邮资(输出结果中包含两位小数即可),超出尺寸或重量的输出 Error” .#includevoid main() float a,b,c,m,y; scanf(%f,%f,%f,%f,&a,&b,&c,&m); if(a1|b1|c1|m30) printf(Errorn); else if(m10) y=0.80*m+0.2; else if(m20) y=0.75*m+0.2; else y=0.70*m+0.2; pri
25、ntf(%.2fn,y); 4.10 输出(shch)星期几的英文表示输入(shr)用数字(1-7)表示的星期几,输出星期几的英文表示,输入(shr)的数字有误,输出单词Error(回车)。#includevoid main() int a; scanf(%d,&a); switch(int)(a) case 1:printf(Mondayn);break; case 2:printf(Tuesdayn);break; case 3:printf(Wednesdayn);break; case 4:printf(Thursdayn);break; case 5:printf(Fridayn);
26、break; case 6:printf(Saturdayn);break; case 7:printf(Sundayn);break; default:printf(Errorn); 5.1输出一行星号问题描述编写程序在一行中输出 N 个星号。输入星号个数值N输出一行中N个星号#include int main()int N,i;scanf(%d,&N);for(i=1;i=N;i+)printf(*);printf(n);5.2 打印平行四边形问题描述输入图形的高 n ,输出如下例( n=5 )所示的图形 .*输入(shr)整数(zhngsh)n例如(lr) 5输出由*组成的高为5的平行四
27、边形#include int main()int N,i,j;scanf(%d,&N);for(i=1;i=N;i+)for(j=1;ji;j+)printf( );for(j=1;j=N;j+) printf(*); printf(n);5.3 编程计算问题描述编写程序,输入n的值,求 :1-1/2+1/3-1/4+1/5-1/6+1/7-.+1/n (保留四位小数)输入n的值输出上述算式的求和结果(结果保留四位小数)输入样例1输出样例sum=1.0000#include int main()int n,i,j,sign=-1;double f, sum=0;scanf(%d,&n);for
28、(i=1;i=n;i+)f=1.0/i;sign=-sign;sum=sum+sign*f; printf(sum=%.4lfn,sum);5.4 分数(fnsh)序列问题(wnt)描述有一个(y )分数序列:,输入整数n,求出其前n项的和。输入整数n输出上述分数序列的前n项之和提示:输出语句格式为 printf(sum=%16.10fn,s);输入样例1输出样例sum= 2.0000000000#include int main()int i,n,k;double f,sum=0,a=1.0,b=1.0; scanf(%d,&n); for(i=1;i=n;i+) k=a;a=b;b=a+k
29、; f=b/a;sum=sum+f; printf(sum=%16.10lfn,sum); 5.5 求e的值问题描述编写程序,从键盘输入整数 n , 求 e 的值。e=1+1/1!+1/2!+1/3!+.+1/n! 注意:用 double 型数据计算。输入整数n输出e的值提示:输出(shch)语句 printf(e=%16.10fn,e); 输入(shr)样例2输出(shch)样例e= 2.5000000000#include void main()int n,i,j;double k,f,sum=1; scanf(%d,&n); for(i=1;i=n;i+) for(j=1,k=1;j=i
30、;j+) k=k*j; f=1.0/k; sum=sum+f; printf(e=%16.10lfn,sum); 5.6 最大公约数问题描述输入两个正整数m和n,求它们的最大公约数和最小公倍数输入两个正整数m和n输出m和n的最大公约数和最小公倍数输入样例2 8输出样例the greatest common divisor is 2the least common multiple is 8#include int main() int m,n,r,t,M,N,a,b,c; scanf(%d%d,&m,&n); if(mn) t=m; m=n; n=t; a=m; b=n; while(r=m%
31、n)!=0) m=n; n=r; printf(the greatest common divisor is %dn,n); M=a/n; N=b/n; c=M*N*n; printf(the least common multiple is %dn,c); return 0; 5.7 水仙花数问题(wnt)描述输出所有(suyu)的水仙花数。所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身(bnshn)。例如153是一水仙花数,因为153=13+53+33输入无输出所有的水仙花数 提示:输出语句 printf(%dn,n);#include void main()int i,a,b
32、,c,d; for(i=100;i=999;i+) a=i/100; b=(i%100)/10; c=i%10; d=a*a*a+b*b*b+c*c*c;if(i=d)printf(%dn,i);5.8 完数问题描述一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,且6=1+2+3,因此6是完数。输入一个正整数n输出判断n是否为完数。如果是,则输出Yes和它的所有因子;否则,输出No输入样例6输出(shch)样例Yes,its factors are 1 2 3#include int main()int a,i,sum=0;scanf(%d,&a); for(i=
33、1;ia;i+)if(a%i=0) sum=sum+i;if(sum=a)printf(Yes,its factors are ); for(i=1;ia;i+)if(a%i=0)printf( %d,i);printf(n);else printf(Non);5.9 素数(s sh)问题(wnt)描述输入两个正整数m和n,求出m,n区间的所有素数输入两个整数m和n输出m,n区间的所有素数输入样例2 10输出样例2 3 5 7#include int main()int m,n,i,j;scanf(%d%d,&m,&n);for(i=m;i=n;i+)for(j=2;ji;j+)if(i%j=
34、0) break;if(j=i) printf( %d,i);printf(n); return 0;5.10 回文(hu wn)数问题(wnt)描述输入一个正整数,判断(pndun)是否为回文数。输入一个正整数n输出如果是,输出Yes,否则输出No输入样例12321输出样例Yes#include int main()int a,b,c;scanf(%d,&a);c=a;b=0;while(c0)b=b*10+(int)c%10;c=c/10;if(a=b) printf(Yesn);else printf(Non);5.11 贪吃的猴子问题描述有一只猴子,第一天摘了若干个桃子 ,当即吃了一半
35、,但还觉得不过瘾 ,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一半加5个)。到第n天早上再想吃的时候,就只剩下一个桃子了。输入天数n输出第一天的桃子个数。提示:输出语句为 printf(Themonkeygot%dpeachsinfirstday.n,sum);输入样例5输出(shch)样例Themonkeygot114peachsinfirstday.提示(tsh):问题(wnt)分析:总共 t0日 吃掉 剩余1 t0/2+1 t0-(t0/2+1)=t0/2-1 t1=t0/2-
36、1 =t0=(t1+1)*2 2 t1/2+2 t1-(t1/2+2)=t1/2-2 t2=t1/2-2 =t1=(t2+2)*2.n-1 tn-2/2+(n-1) tn-2-(tn-2/2+(n-1)=tn-2/2-(n-1) tn-1=tn-2/2-(n-1) = tn-2= (tn-1+n-1)*2n 1 0 tn-1=1#include int main()int n,i;double sum;scanf(%d,&n);i=n,sum=1;for(;i1;i-)sum=(sum+(i-1)*2; printf(The monkey got %.0lf peachs in first d
37、ay.n,sum); return 0;5.12 马戏团观众人数问题描述一个马戏团表演, n 个座位全满,全部门票收入是 120 元,现在知道,男人每人 5 元,女人每人 2 元,小孩每人 1 角。根据总人数,计算出男人、女人和小孩各多少人。输入总人数 n输出男人、女人和小孩人数,若 n 人无法满足条件,则输出“No outputn”#include int main()int n,x,y,z,tag=0;scanf(%d,&n);for(x=0;x=n;x+)for(y=0;y=n;y+)for(z=0;z=n;z+)if(x+y+z=n&50*x+20*y+1*z=1200)tag=1;p
38、rintf(%d %d %dn,x,y,z);if(tag=0) printf(No outputn); return 0;5.13 迭代法问题(wnt)描述用迭代法求。求平方根的迭代(di di)公式为:要求(yoqi)前后两次求出的x的差的绝对值小于10-5。输入a输出的值输入样例4输出样例Thesquarerootof4.00is2.00000#include #include int main()double i,a,sq,d;scanf(%lf,&a);d=a;for(sq=1;)i=sq;sq=(sq+a/sq)/2;if(fabs(sq-i)=0.00001)printf(The
39、 square root of %.2lf is %.5lfn,d,sq);break;5.14 cos(x)-x=0利用(lyng)以下所示的简单迭代方法求方程:cos(x)-x=0的一个(y )实根。 xn+1=cos(xn) 迭代(di di)步骤如下: (1)输入数据给x1; (2)x0=x1,把x1的值赋给x0; (3)x1=cos(x0),求出一个新的x1; (4)若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2); (5)所求x1就是方程cos(x)-x=0的一个实根,输出x1,输出语句为printf(x=%lf,x);。提示:本题x0和x1定义为dou
40、ble类型#include #include int main()double a,b,i;scanf(%lf,&b);for(i=1;)a=b;b=cos(a);if(fabs(a-b)=0.000001)printf(x=%lfn,b);break;5.15 求一个三位数,其值等于其各位阶乘之和问题描述编写程序,求某三位数,该数值的大小正好是组成这个数的三个位上的数字阶乘之和。输入无输出满足上述条件的三位数。提示:输出格式为 printf(%dn,num);#include void main()int a,b,c,d,i,j,k,l,x,y,z;for(i=100;i1000;i+)a=
41、i/100;b=(i%100)/10;c=i%10; for(j=1,x=1;j=a;j+) x=x*j; for(k=1,y=1;k=b;k+) y=y*k; for(l=1,z=1;l=c;l+) z=z*l; if(x+y+z=i) printf(%dn,i);6.1 谁能出线(ch xin)背景(bijng):电视台举办(jbn)“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。按规定,每10名学生为一个预赛小组,评委打出分数(0100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。输入: 按顺序给出一个小组10个人的最后得分(int
42、)。输出: 能够出线的学生序号(09)。#include #define N 10int main()int i,max=0,j;int aN;for(i=0;i=max)max=ai; for(j=0;jN;j+) if(aj=max) printf(%dn,j); return 0;6.2 统计素数的个数求出2 到 m 之间 ( 含 m,m=1000) 所有素数并放在数组 a 中。输入:正整数m输出:从小到大的所有素数,及个数(素数输出的时候用%4d来控制)如:输入:10输出:2 3 5 74#include #define N 10int main()int i,j,m,count=0;
43、int aN;scanf(%d,&m);for(i=2;i=m;i+)for(j=2;ji;j+)if(i%j=0) break;if(i=j) count+;printf(%4d,i);printf(n%dn,count); return 0;6.3 冒泡法排序(pi x)冒泡排序(BubbleSort)的基本概念是:依次比较(bjio)相邻的两个数,将小数放在前面,大数放在后面。即在第一趟:首先比较第1个和第2个数,将小数放前,大数(d sh)放后。然后比较第2个数和第3个数,将小数放前,大数放后,如此继续,直至比较最后两个数,将小数放前,大数放后。至此第一趟结束,将最大的数放到了最后。在
44、第二趟:仍从第一对数开始比较(因为可能由于第2个数和第3个数的交换,使得第1个数不再小于第2个数),将小数放前,大数放后,一直比较到倒数第二个数(倒数第一的位置上已经是最大的),第二趟结束,在倒数第二的位置上得到一个新的最大数(其实在整个数列中是第二大的数)。如此下去,重复以上过程,直至最终完成排序。 由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。编写程序,对输入的十个数按照从小到大排序#include #define N 10int main()int i,j,t;int aN;for(j=0;jN;j+)scanf(%d,&aj);for(i=0;iN;i
45、+)for(j=1;jN-i;j+)if(ajaj-1)t=aj-1; aj-1=aj;aj=t;for(j=0;jN;j+)printf( %d,aj);printf(n); return 0;6.4 插入法排序(pi x)如果一个数组中保存的元素(yun s)是有序的(由小到大),向这个数组中插入一个数,使得插入后的数组元素依然保持有序。 定义(dngy)一个数组,长度为11,初始元素为10个,按照从小到大的方式输入,然后输入一个要插入的元素,使得插入后仍然有序。#include int main()int i,j,n,m;int a11;for(i=0;i0;i-)if(aiai-1)m
46、=ai;ai=ai-1; ai-1=m; for(i=0;i11;i+) printf( %d,ai); printf(n);return 0;6.5 求各位数字组成的最大数任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531 。输入: 自然数 n输出: 各位数字组成的最大数#include int main()int i,j,n,count=0,t,m;int a100;scanf(%d,&n);for(i=0;n0;i+)m=n%10;ai=m;count+;n=n/10;for(i=0;icount;i+)for(j=1;jaj-1) t=a
47、j-1; aj-1=aj; aj=t; for(i=0;icount;i+) printf(%d,ai); printf(n);return 0;6.6 数组逆序输出(shch)问题(wnt)描述从键盘(jinpn)上输入一个数组(10个元素),将原数组逆序重新排列后输出。要求输出每个元素时以一个空格隔开。提示:用第一个与最后一个交换。#include #define N 10int main()int j;int aN;for(j=0;jN;j+) scanf(%d,&aj);for(j=0;jN;j+) printf(%d ,a9-j);printf(n); return 0;6.7 求最
48、大值问题描述要求从键盘输入10个整型数据,找出其中的最大值并显示出来。输入范例3 0 54 -710 27 32767 10 1 500 2输出范例32767提示(tsh)先假定(jidng)第一个元素时最大值,然后和其他的元素一个一个的进行比较,直到找到最大值。#include #define N 10int main()int j,t;int aN;for(j=0;jN;j+) scanf(%d,&aj);for(j=0;jN-1;j+)if(aj+1aj) t=aj; aj=aj+1; aj+1=t; printf(%dn,aj); return 0;6.8二维数组 程序定义了44 的二
49、维数组,请编写程序,给二维数组赋值,并使数组下半三角(snjio)元素中的值乘以n 。 例如: 数组中的值为 假设n为10,则输出结果如下:(输出的数按照4位宽度来输出,即%4d)#include #define N 4int main()int i,j,n;int aNN;for(i=0;iN;i+)for(j=0;jN;j+) scanf(%d,&aij);scanf(%d,&n);for(i=0;iN;i+)for(j=0;ji+1;j+)aij=aij*n;for(i=0;iN;i+)for(j=0;jN;j+)printf(%4d,aij);printf(n); return 0;6
50、.9 在屏幕(pngm)上显示杨辉三角形杨辉三角形,又称贾宪三角(JiXin snjio)形,帕斯卡三角形,是 HYPERLINK /view/1923263.htm t _blank 二项式系数(xsh)在 HYPERLINK /view/5670.htm t _blank 三角形中的一种几何排列。其实,中国 HYPERLINK /view/2357690.htm t _blank 古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光辉灿烂的篇章,而 HYPERLINK /view/18626.htm t _blank 贾宪三角的发现就是十分精彩的一页。杨辉三角有如
51、下性质:1、每行数字左右对称,由1开始逐渐变大,然后变小,回到1。 2、第n行的数字个数为n个。 3、每个数字等于上一行的左右两个数字之和。编写程序,输入正数n, 将所有数据存储到二维数组中,并在屏幕上显示对应的杨辉三角形(注意数据之间的空格)。例如:n=5 图形如下:11 11 2 11 3 3 11464 11 5 10 10 5 1#include int main()int i,j,n;int a100100;scanf(%d,&n);for(i=0;in+1;i+)ai0=1;aii=1;for(i=2;in+1;i+)for(j=1;ji;j+)aij=ai-1j-1+ai-1j;
52、for(i=0;in+1;i+)for(j=0;ji+1;j+)printf(%3d,aij);printf(n); return 0;6.10 求二维数组周边(zhu bin)元素之和编写一个(y )程序,求出45的二维数组周边(zhu bin)元素之和。输入:二维数组元素输出:周边元素之和 如:输入:1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 输出:61#include int main()int i,j,sum=0;int a45;for(i=0;i4;i+)for(j=0;j5;j+) scanf(%d,&aij);for(i=0;i4;i+) su
53、m=sum+ai0+ai4; sum=sum+a01+a02+a03+a33+a31+a32; printf(%dn,sum); return 0;6.11 存储并输出一个矩阵编程,输入 n ,存储并输出如下例( n=5 )所示的 图形。 1 2 3 4 5 1 1 2 3 4 1 1 1 2 3 1 1 1 1 2 1 1 1 1 1#include int main()int i,j,k,n;int a100100;scanf(%d,&n);for(i=0;in;i+)for(j=0;ji+1;j+)aij=1;for(i=0;in;i+)for(j=i;jn;j+)aij=j-i+1;
54、for(i=0;in;i+) for(j=0;jn;j+)printf( %d,aij);printf(n); return 0;6.12 给数组中的元素(yun s)按顺序编号对数组 a10 中的十个整数从小到大进行连续编号,输出各个(gg)元素的编号。要求不能改变数组 a 中元素的顺序,且相同的整数(zhngsh)要具有相同的编号。例如数组是: A=(5,3,4,7,3,5,6,8,9,10) 则输出为: (4,1,3,7,1,4,6,8,9,10) #include int main()int i,j,t;int a10,b10;for(i=0;i10;i+)scanf(%d,&ai);
55、bi=ai;for(i=0;i10;i+)for(j=1;j10-i;j+) if(bjbj-1) t=bj-1; bj-1=bj; bj=t; for(i=0;i10;i+)for(j=0;j10;j+) if(ai=bj) printf(%3d,j+1);break;printf(n);return 0;6.13 矩阵(j zhn)加法 方阵(fn zhn)阶数为n(n100),例如(lr)当n=3时,矩阵int a33,矩阵int b33。 矩阵的数据由用户输入。输出新的矩阵c=a+b。 输出格式: c00 c01 c02 c10 c11 c12 c20 c21 c22 每两个数字之间有
56、1个空格关于输入方阵阶数n矩阵a:a00 a01 a02a10 a11 a12a20 a21 a22矩阵b:b00 b01 b02b10 b11 b12b20 b21 b22关于输出矩阵c:c00 c01 c02c10 c11 c12c20 c21 c22注意:输出时每行最后不能有空格#include int main()int i,j,n;int a100100,b100100,c100100;scanf(%d,&n);for(i=0;in;i+)for(j=0;jn;j+)scanf(%d,&aij);for(i=n;in+n;i+)for(j=0;jn;j+)scanf(%d,&bi-n
57、j);for(i=0;in;i+)for(j=0;jn;j+)cij=bij+aij; for(i=0;in;i+) for(j=0;jn-1;j+) printf(%d ,cij);printf(%dn,cin-1); return 0;6.14 矩阵(j zhn)转置 在数学上,矩阵是指纵横排列的二维数据表格,最早来自于方程组的系数(xsh)及常数所构成的方阵。这一概念由19世纪(shj)英国数学家凯利首先提出。矩阵概念在生产实践中也有许多应用,比如矩阵图法以及保护个人帐号的矩阵卡系统(由深圳网域提出)等等。“矩阵”的本意也常被应用,比如监控系统中负责对前端视频源与控制线切换控制的模拟设备
58、也叫矩阵。 设A为nn阶矩阵(即n行n列),第i 行j 列的元素是a(i,j),即:A=a(i,j)定义A的转置为这样一个nn阶矩阵B,满足B=a(j,i),即 b (i,j)=a (j,i)(B的第i行第j列元素是A的第j行第i列元素),记A=B。(有些书记为AT=B,这里T为A的上标) 直观来看,将A的所有元素绕着一条从第1行第1列元素出发的右下方45度的射线作镜面反转,即得到A的转置。输入:有n+1行(2 n10),第一行是一个整数n,代表矩阵为n行n列。后面n行表示矩阵的取值输出:转置后的矩阵#include int main()int i,j,n;int a100100,b10010
59、0;scanf(%d,&n);for(i=0;in;i+)for(j=0;jn;j+)scanf(%d,&aij);for(i=0;in;i+)for(j=0;jn;j+)bji=aij; for(i=0;in;i+) for(j=0;jn-1;j+) printf(%d ,bij); printf(%dn,bin-1);return 0;6.15求一系列整数(zhngsh)中出现最多的数字给定一系列整数(zhngsh),对每个整数的每一位数字统计09各个(gg)数字的出现次数,求出现次数最多的数字。输入:有两行,第一行是整数n(1=n=100),表示有n个整数;第二行是n个整数值输出:出现次
60、数最多的数字d(如果d不唯一,要列出全部)及其出现的次数输入样例:11233输出样例:出现次数最多2次的数字是 3#include int main()int i,n,max;int a100,b10=0;scanf(%d,&n);for(i=0;i0) bai%10+; ai=ai/10; max=b0;for(i=1;i10;i+) if(maxbi) max=bi; printf(出现次数最多%d次的数字是,max); for(i=0;i10;i+) if(max=bi) printf( %d,i); printf(n);return 0;6.16 装箱问题假设有n项物品,大小分别为s1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 微信小程序制作协议合同
- 和租赁合同解除协议范本
- 母婴店合伙合同协议
- 2025生物柴油购销合同范本
- 员工投资分成合同协议
- 模具买卖和使用合同协议
- 毕业就业合同第三方协议
- 2025专业版保温材料采购与销售合同模板
- 2025年铝制销售合同范本
- 商住两用房交房合同协议
- 功夫茶泡茶技巧
- 智能音箱行业发展趋势与市场前景深度解析
- 2025上半年广西现代物流集团社会招聘校园招聘149人笔试参考题库附带答案详解
- 出售东西合同样本
- 2024年四川省自然资源投资集团有限责任公司招聘笔试参考题库附带答案详解
- 云南某公司合并财务报表附注
- 南外加试卷精华.doc
- 前牙预备基本原则.ppt
- 浅谈对学生交响乐团建设的一点看法
- 遗传定律与遗传概率计算题
- 医疗机构申请执业登记注册书(个体诊所)
评论
0/150
提交评论