资源描述:
《石油大学试题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
石油大学试题1.1Heiloworld.让我们用C语言向世界问好。最早的程序基本是这个样子的:程序一:ftincludevoidmain(){printf("Helloworld.
1z,);)程序二:#includeintmain(){printf("Helloworld.
2");return0;)上面的程序你任意模仿一个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。输入:无输出:Helloworld.#includeintmain(){printf("Helloworld.
3");)1.2WelcometoBeijing.让我们来练习如何显示多行文字。
4输入:无输出:就是下面的那段文字。#includevoidmain(){printfC,Welcome
5,/);printf("to
6");printf("Beijing.
7");)1.3练习最简单的printf和scanfprintf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。输入:整型变量x的值。输出:输出整型变量x对应的十进制、八进制和十六进制形式。认真观察T的八进制和十六进制输出,请想想是为什么。ftincludeintmain(){intx;scanf(“猊",&x);printf("x=/d,”,x);printf("x=/o,",x);printf("x=%x
8”,x);return0;)1.4练习两个整数之间的运算背景:基本练习。输入:接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123444输出:分别输出进行+、-、*、/、*之后的运行结果。#includeintmain()
9{intx,y;scanf("%d%d”,&x,&y);printf(//%d+%d=%d
10,/,x,y,x+y);printf("%dTd=%d
11”,x,y,x-y);printf("%d*%d=%d
12”,x,y,x*y);printf("%d/%d=%d
13”,x,y,x/y);printf(/,%d%%%d=%d
14,/,x,y,x%y);return0;)1.4学习打印你的第一个图形背景:我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出一个由星号(*)组成的4*4的正方形。程序如下:ttincludeintmain()(printf(〃****
15〃);printf(〃****
16〃);printf(〃****
17〃);printf("****
18");return0;)要求:按照上面的程序范例,编写一个小程序,要求输出的是4行由*号组成的等腰三角形。输入:无。输出:指定图形。ftincludeintmain(){
19printfC*
20");printfC***
21");printfC*****
22");printf("*******
23");return0;1.1整型数的表示范围编写一个循环程序,输入N值,输出N的阶乘。关于循环程序怎么编写,可以参考教材第3章P66页的例题4.2和第5章P82的例题5.1的内容。注意整型数的表示范围,如果当输入的N比较大时,例如N等于20时,输出怎么是负数了?自己想明白吧!#includevoidmain(){intN,i;intsum=l;N>=2;scanf&N);if(N<=16){for(i=l;i〈=N;i++)sum=sum*i;printf("%d
24",sum);)if(N>=17)printf("Nistoobig!
25");)1.2求正弦函数值已知求正弦sin(x)的近似值的多项式公式为:sin(x)=x-x3/3!+x5/5!-x7/7!++(-1)nx2n+l/(2n+l)!+•••编写程序,要求输入x(单位是弧度)和£,按上述公式计算sin(x)的近似值,要求计算的误差小于给定的£o此题当然要用到循环语句,到第5章去找个猫来照着画吧,循环的终止条件就是本次计算出来的正弦函数值和上次计算的值的差小于给定的£。求两个值的差时,要求出其绝对值,使用库函数fabs(),头文件在math.h里。友情提示:给定的误差值£越小,计算的精度越高,但是要注意喽,
26给的精度太高,你的程序会成为死循环。如果出现死循环的情况,可以用+〈Break〉键退出程序。#includettincludeintmainO{floatx,eps,s,y=0,yO,t;intn,j;scanf”,&x,&eps);n=t=j=l;s=x;do{yO=y;if(n%2==0)y=y-s/t;elsey=y+s/t;s*=x*x;t*=(j+l)*(j+2);j+=2;n++;}while(fabs(yO-y)>eps);printf("%f
27”,sin(x));system("PAUSE");return0;)2.3判断输入的字符的类型我们将字符分为五类:大写字母、小写字母、数字、控制字符、其他字符。编写程序,从键盘输入一个字符,输出字符所属的类型:大写字母时输出capitalletters,小写字母时输出smallletters,数字是输出figures,其他字符时输出others0#includevoidmain()charc;
28c=getchar();if(c<0x20)printf("Thecharacterisacontrolcharacter'll");elseif(c>='0,&&c<='9')printf("figures'n");elseif(c>=,A'&&c<='Z')printf("capitalletters
29,/);elseif(c>='a'&&c<='z')printf("smallletters
30/,);elseprintf("others'n");)2.1找零钱假定有5角、1角、5分、2分和1分共5种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法。例如,当要给某顾客找7角2分钱时,会给他一个5角,2个1角和1个2分的硬币。试编写一个程序,输入的是要找给顾客的零钱(以分为单位),输出的是应该找回的各种硬币数目,并保证找回的硬币数最少。ttincludeintmain()(intxl,x2,x3,x4,x5;intx;scanf("%d",&x);xl=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(/,%d
31,/,xl);printf("%d
32”,x2);printf("%d
33',x3);
34printf(//%d
35,/,x4);printf(//%d
36//,x5);return0;)3.2计算时钟的夹角背景:钟面上的时针和分针之间的夹角总是在0度~359度之间。举例来说,在十二点的时候两针之间的夹角为0度,而在六点的时候夹角为180度,在三点的时候为90度。本题要解决的是计算0:00到12:00之间任意一个时间的夹角。输入:每组测试数据包含两个数字:第一个数字代表小时(大于等于0小于12),第二个数字代表分(在区间[0,59]上)。输出:对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。友情提示:以表中心到12点的连线为基准,分针每走1分钟是6度,时针与基准的夹角每个小时也是30度,从整点开始,每过1分钟时针再增加0.5度。提示:时钟夹角计算公式|5.5m-30h|,h为时针,m为分针。求浮点型绝对值的函数为fabs,需要包含math,h头文件ttinclude“stdio.h"#include"math,h”intmain()inth,m;doubleangle;scanf("%d%d”,&h,&m);angle=fabs(5.5*m-30*h);if(angle>180)angle=360-angle;printf(z,At%d:%02dtheangleis%.Ifdegrees.
37",h,m,angle);)3.3照猫画猫:计算圆柱的侧面积及体积
38如果已知圆柱的底面半径r,以及高h,则可计算出圆柱的侧面积s=2nrh,体积v=nr2ho其中n-3.1415926输入第一行输入圆柱的底面半径r第二行输入圆柱的高h输出s=<圆柱的侧面积>,v=<圆柱的体积>要求1.所有变量都定义为双精度类型3.1果精确到小数点后两位#include"stdio.h"ttdefinen3.1415926intmain()(floatr,h,s,v;printf;scanf&r,&h);s=2*n*r*h;v=n*r*r*h;printf("s=%6.2f,v=%6.2f
39”,s,v);)3.4分离整数任意从键盘上输入一个三位正整数,要求正确地分离出它的个位、十位和百位,并分别在屏幕上输出。比如输入的三位正整数ttinclude"stdio.h"intmain()intx,hundreds,tens,units;printf;scanf("%d",&x);hundreds=x/100;tens=x%100/10;units=x%100%10;printf("units=%d,tens=%d,hundreds=%d
40//,units,tens,hundreds);)3.5鸡兔同笼已知笼中有头h个,有脚f条,问笼中鸡兔各有多少只?输入:头和脚的数目
41输出:兔子和鸡的数目(输出语句为:printf("rabbited,chicken=%d”,rabbit,chicken);)Sample输入:1020输出:rabbit=0,chicken=10ttinclude"stdio.h"intmain(){intchicken,rabbit,f,h;scanf("%d%d”,&h,&f);rabbit=(f-2*h)/2;chicken=(4*h-f)/2;printf("rabbit=%d,chicken=%d
42/,,rabbit,chicken);)3.1温度转换背景:经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:有些使用华氏温度标准(F),有些使用摄氏温度(Oo现在,请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。温度转换的公式为:F=(CX9/5)+32;C=(F—32)X5/9;式中F一华氏温度,C一摄氏温度。输入:第一个数据(1或2)确定转换的类型:华氏转摄氏(1);摄氏转华氏(2);第二个数据是相应需要转换的温度值。输出:相应的转换后的温度值(保留小数点后2位)。ttincludevoidmain(){intlx;
43doublef,c;scanf("%d",&lx);if(lx-l){scanf&f);c=(f-32)*5/9;printf(^TheCentigradeis%.2f
44,z,c);)else{scanf("/If”,&c);f=(c*9/5)+32;printf("TheFahrenheitis%.2f
45',f);})4.2分段函数有一分段函数,y=f(x)。当x小于6时,y=x-12;当x大于等于6且小于15时,y=3xT;当x大于等于15时,y=5x+9.从键盘上输入一个整数x,输出对应的y值。ttincludevoidmain()intx,y;scanf&x);if(x<6)y=x-12;elseif(x<15)y=3*xT;elsey=5*x+9;printf("/d
46",y);
47return0;)4.3整数位数判断输入一个不多于5位的正整数,要求:(1)求它是几位数;(2)逆序打印出各位数字。ttinclude#includettdefineSIZE5intmain(void){intbit_count;〃位数longintinput_num;〃输入数intresult[SIZE];//存放各个位的数inti;scanf(/z%ldz,,&input_num);if(inputnum<0||inputnum>99999){printf("Invalidinput'n");exit(1);)for(bit_count=0;input_num;++bit_count){result[bit_count]=input_num%10;inputnum/=10;printf(/,%d
48,,»bit_count);for(i=0;i49");exit(0);)4.4四位数拆分
50输入一个四位数,判断千位、百位、十位和个位数字之和是否为偶数,如果是,输出Yes,如果不是,输出No;如果不是四位数,输出Invaliddata。#includevoidmain(){intx,a,b,c,d,e;scanf("%d",&x);if(x/1000=l)printf(''Invaliddata'n");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("Yes
51");elseprintf("No
52");4.5磨磨你的砍柴刀:判断三角形的形状要求:输入三角型的三条边,判断三角形的形状。假设输入的三边边长均>0。输入:三角型的3条边的长度(int型)。输出:等边三角形:equilateraltriangle.等腰三角形:isocelestriangle.不构成三角形:non-triangle.一般三角形:triangle.#includevoidmain(){
53floata,b,c;scanf/z,&a,&b,&c);if(a+b54");elseif(a==b&&b==c)printf(^equilateraltriangle.
55");elseif(a==b||b==c||a==c)printfC'isocelestriangle.
56");elseprintf("triangle.
57");J4.6字符加密输出从键盘上输入一个字符,进行加密以后再输出在屏幕上。加密规律是:输入小写英文字母时,输入a输出Z、输入b输出丫、输入c输出X、...、输入z输出A。输入大写英文字母时,将该字母ASCII码值再加上该值的1/2后输出所对应的字符,例如数字A的ASCII码值是65,加上其值的1/2后是98(小数四舍五入),则输出字符'b,。输入数字时,将该数字原ASCII码值再加上该值十进制的十位上的数后输出,例如数字9的ASCH码值是57,加上十位上的数5后是62,则输出字符'>'。输入其他字符时原样输出。友情提示:整数之间运算的结果要取整,例如5/2的结果是2,而5.0/2.0对小数四舍五入的结果就是3.0了。所以输入大写英文字母时的输出要仔细考虑。ttincludeintmain(){charch;inta;ch=getchar();if(ch>=97&&ch<=122){ch=187-ch;putchar(ch);}elseif(ch>=65&&ch<=90){a=ch%2;if(a==l)(char)a=(ch+1)/2+ch;else(char)a=ch/2+ch;putchar(a);)
58elseif(ch>=48&&ch<=57){ch=ch/10+ch;putchar(ch);}elseputchar(ch);printf("
59");)4.7判断某年某月的天数一年有365天,有的月份有31天,有的有30天,2月份闰年的时候是29天,非闰年的时候是28天。现在要求从键盘上输入一个年份和月份,输出其对应的天数。#includemain(){intyear,month,days;scanf("%d%d”,&year,&month);switch(month){case1:case3:case5:case7:case8:case10:case12:days=31;break;case4:case6:case9:case11:days=30;break;case2:if((year%4==0)&&(year%100!=0)||(year%400==0))days=29;elsedays=28;)printf("%d
60",days);)
614.8花多少钱买衣服周末商场促销呢,某品牌服装既可以买套装,也可以买单件。若买的不少于50套,每套80元;不足50套的每套90元,只买上衣每件60元,只买裤子每条45元。编写程序,输入计划购买的上衣数量a和裤子的数量b,计算并输出应该付的款mo#includevoidmain(){inta,b,y;scanf(,/%d%d//,&a,&b);if(b<=a&&b<50)y=90*b+(a-b)*60;if(b〈=a&&b>=50)y=80*b+(a-b)*60;if(a=50)y=80*a+(b-a)*45;printf("%d
62",y);)4.9到邮局去寄包裹你去邮局给朋友寄礼物。发现邮局对邮寄包裹的费用是这样规定的:如果包裹长宽高任意一个尺寸超过1米,或重量超过30千克,不予邮寄;对可以邮寄的包裹每件收手续费0.2元,不同重量的邮资按下表计算:重量(千克)收费标准(元)小于100.80大于等于10但不超过200.75大于等于20但不超过300.70编写程序,输入包裹的长、宽、高尺寸和重量,输出所需的邮资(输
63出结果中包含两位小数即可),超出尺寸或重量的输出“Error”.#includevoidmain()floata,b,c,m,y;scanf("%f,%f,%f,%f/,,&a,&b,&c,&m);if(a>l||b>l||c>l||m>30)printf(/,Error
64,/);else{y=0.80*m+0.2;elseif(m<20)y=0.75*m+0.2;elsey=0.70*m+0.2;printf(“先2f
65",y);4.10输出星期几的英文表示输入用数字(1—7)表示的星期几,输出星期几的英文表示,输入的数字有误,输出单词"Enor(回车)#includevoidmain(){inta;scanf&a);switch((int)(a))(case1:printf("Monday'n");break;case2:printf("Tuesday'n");break;case3:printf("Wednesday'n");break;case4:printf("Thursday'n");break;case5:printf("Friday'n");break;case6:printf("Saturday'n");break;
66case7:printf("Sunday'n");break;default:printf(,/Error
67,/);))4.1输出一行星号编写程序在一行中输出N个星号。输入:N值输出:一行中N个星号ftincludeintmain()intn,i;scanf("%d",&n);for(i=0;i68');return0;)4.2打印平行四边形输入图形的高n和首字符c,输出如下例(n=5,c='A')所示的图形.ABCDEBCDEFCDEFGDEFGHEFGHI输入:整数n例如5和某个字符例如A输出:高为5和首字符A的平行四边形#includevoidmain(){intn,m,i,d;
69charp,t;scanf("%d,祝",&n,&p);for(m=0;m70");4.2空心的倒三角型背景:请根据要求打印可空心倒三角形。输入:输入三角形的高度(h>0)o输出:打印相应的空心倒三角形。图样参见测试用例。#includettincludeintmain(){inth,i,j,k,m,n;scanf(“/d”,&h);if((h>l)&&(h%2!=0)){
71for(i=l;i<=(2*h-l);i++){printf('*");}printf('
72");for(j=l;j<=(h-2);j++)(for(k=l;k〈=j;k++)printf("");printf('*");for(m=l;m<=(2*h-3-2*j);m++)printf(/z");}printf('*");printf('
73");}for(n=l;n<=(h-1);n++){printf(/z");}printf('*
74");)elseprintf(''Invalidinput'n");return0;)选做5.4打印实心正方形
755.1题中你已经打印了一行*号,这次在屏幕上输出一个由星号组成的n行n列的正方形。程序输入n值,输出如下例(n=4)所示的高和上底均为n的正方形:****************ttinclude#includeintmain()inta=l,n,b;scanf(〃%d”,&n);while(a〈=n)b=l;do(printf('*");b++;)while(b<=n);printf('
76");a++;return0;)选做5.5空心字符菱形输入:菱型起始字母和菱形的高度。输出:参看测试用例,打印空心的由字符组成的菱形。ttincludettincludeintmain()
77{charch;intn,a=l,b,c;scanf("%c%d”,&ch,&n);while(a〈=n){b=l;while(b〈=n-a)printfC");b++;)printf(“枇",ch);c=l;if(a>=2){while(c<=2*a-3){printfC");C++;)printfch);)ch=ch+l;printf('
78");a++;]a=l;ch=ch-2;while(a<=n-l)(
79b=l;while(b〈=a){printfC");b++;printf('%c”,ch);c=l;if(a<=n-2)while(c<=2*n-2*a-3){printf(,/");C++;)printfch);)ch=ch-l;printf(〃
80〃);a++;Ireturn0;)选做5.6输出一个字母K吧!输入一个整数n,输出图形K。如n=4时,输出如下图形。*************
81ftinclude#includeintmain()(intn,i=l,j;scanf("%d",&n);while(i<=n-l)j=l;
82printf(〃*");while(j<=n-i)(printf(""):j++;)printf;i++;printf;i=l;while(i<=n-l){j=l;printf("*〃);while(j<=i)(printf(w");j++;)printf("*
83〃);i++;}选做输入return0;5.7输出X图形n值,输出下例(n=3)所示的图形:*输入:整数n(例如3)输出:如上图所示X形图形ftinclude84h>ttincludeintmain(){intn,i=l,j,k;scanf&n);while(i<=n-l)j=l;while(j<=i-l){printf(z/");j++;)printf("*");k=l;while(k<=2*n-2*iT){printf("〃);k++;)printf(〃*〃);j=l;while(j<=iT)(printf("");j++;printf("
85〃);i++;i=l;while(i<=n-l)(printfC");i++;
86}printf(〃*");i=l;while(i<=n-l)(printf(/z");i++;printf;i=l;while(i〈=nT){j=l;while(j<=n-i-l)(printf(z/;j++;)printf(〃*");k=l;while(k〈=2*iT)
87k++;printf("*");j=l;while(j<=n-i-l)printf(〃;j++;}printf('
88");i++;return0;)选做5.8输出图形编程,输入n值,输出下例(n=5)所示的高为n的图形:#includeftincludeintmain0intn,i=l,j,k,1;scanf("%d",&n);while(i<=n-l)(j=l;while(j〈=i){printf(〃*");j++;)k=l;while(k<=2*n-2*i-l){printf(,z");k++;
89)1=1;while(K=i){printf('*");1++;)printf('
90");i++;Ii=l;while(i<=2*n-l){printf('*");i++;Iprintf('
91");return0;)选做5.9画个空心的梯形吧编程,输入n,输出如下例(n=5)所示的高和上底均为n的等腰空心梯形。ttincludettincludeintmain()intn,i=l,j,k;scanf("/d",&n);while(i<=n){
92j=l;while(j〈=n-i)(printf(,z");j++;)printf('*");if(i==l){for(k=l;k<=n-2;k++)printf(〃*");)elseif(i-n)4for(k=l;k<=3*n-4;k++)printf('*");)else{for(k=l;k〈=n+2*i-4;k++)printfC");)printf('*");j=l;while(j〈=n-i)j++;printf(〃
93〃);i++;Ireturn0;)
94选做5.10输出菱形图案输入n,输出如下例(n=3)所示的菱形:********ttinclude#includeintmain(){intn,i,j,k;scanf("%d",&n);for(i=l;i<=n;i++){for(j=l;j<=n-i;j++){printfC");)for(k=l;k<=2*i-l;k++)(printf('*");for(i=l;i<=n-l;i++){for(j=l;j<=i;j++){printf(,z");)
95for(k=l;k<=2*n-2*i-l;k++){printf('*");)printf('
96");}return0;)5.11最大公约数输入两个正整数m和n,求它们的最大公约数和最小公倍数比如,输入m和n的值分别为14和21,则最大公约数为7,最小公倍数为42o#includevoidmain()intm,n,i,j;scanf("%d%d”,&m,&n);for(i=m;i>=l;i一)if(n%ii-0){printf("thegreatestcommondivisoris%d
97',i);break;
98if(j%m-0&&j%n-0){printf("theleastcommonmultipleis%d
99',j);break;5.12水仙花数输出所有的水仙花数。所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如153是一水仙花数,因为153=13+53+33输出语句:printf(,,%d
100,,5n);#includevoidmain()intn,i,j,k;for(n=100;n<=999;n=n+l)i=n/100;j=(n/10)%10;k=n%10;//取出n的百位数//取数n的十位数//取出n的个位数if(n==i*i*i+j*j*j+k*k*k)printf("/d
101",n);5.13完数一个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,且6=1+2+3,因此6是完数,从键盘上输入一个正整数,判断其是否为完数。如果是,则按照如下格式输出。比如,输入6,则输出Yes,itsfactorsare123;如果输入8,则输出No#include#includeintmain()
102intn,i,c,sum=O;scanf("/d",&n);for(i=l;i103");)elseprintf("No
104");)5.14素数输入两个正整数m和n,求出[m,n]区间的所有素数ttincludettincludevoidmain(){intm,n,i,j,k;scanf&m,&n);for(i=m;i105if(i%j==O)break;if(j>k)printf('%d",i);}printf(〃
106〃);)5.15找出最大素数素数是指一个只能被1和它本身整除的数,在数论中占有重要的研究地位,在当代密码学中也被广泛应用。输入:取值范围输出:该范围内的最大素数#includeintmain(){inta,i,j;scanf("%d",&a);for(i=a;i>l;i-)(for(j=2;j107",i);break;
1085.16回文数输入一个数,判断是否为回文数,如果是,输出Yes,否则输出No#includettinclude#includechar*chan(intcount);intmain(intargc,char*argv口){char*str;inti,n;str=chan(0);n=strlen(str);for(i=0;i<(n-l)/2;i++){if(str[i]!=str[n-l-i]){n=0;break;})if(n){printf("Yes'n");)elseprintf("No
109");free(str);system("pause");return0;char*chan(intcount)chara;staticchar*p;if((a=getchar())!='
110')I
111count++;chan(count);}else{p=malloc(sizeof(char)*(count+1));*(p+count)=0;returnp;)*(p+count-1)=a;returnp;选做5.17自守数自守数是指一个数的平方的尾数等于该数自身的自然数。例如252=625,762=5776。输入一个自然数,判断其是否为自守数。如果是,则输出Yes,否则输出Nottincludettincludeintmain()intn,i,j,a=0,b=l,c;scanf&n);i=n*n;j=i-n;while(n>0)n=n/10;a++;}for(c=l;c<=a;c++){b=b*10;if(j%b==O)
112{printf("Yes
113");}else{printf("No
114");Ireturn0;)选做5.18求亲密数若正整数A的全部约数(包括1,不包括A本身)之和等于B;且整数B的全部约数(包括1,不包括B本身)之和等于A,则A、B为亲密数。编程,输入正整数A,输出亲密数A,B(A<=B),若不存在亲密数,则输出Nooutputo例如:220和284就是一对亲密数。220的约数是:1、2、4、5、10、11、20、22、44、55、110,约数之和是284;284的约数是:1、2、4、71、142,约数之和是220。#includettincludeintmain(){intn,a,b=0,c=0;scanf("%d",&n);for(a=l;a115(if(b%a~0){c=c+a;)if(n==c)(printf("%d-%d
116”,c,b);else(:printf("Nooutput'n");Ireturn0;)选做5.19高次方的尾数输入2个正整数m和n,求mn后三位数。比如输入m和n的值分别为13和13,则1313的后三位数字为253ottincludettincludeintmain()intm,n,a,b=l,c;scanf("%d%d”,&m,&n);for(a=l;a〈=n;a++)(b=b*m;b=b%1000;
117Iprintf(//Thelast3digitsof%d**%dis:%d
118”,m,n,b);return0;)选做5.20阶乘尾数零的个数输入一个正整数n,求其阶乘尾数0的个数。比如,输入n的值为100,则其阶乘尾数0的个数为24Ottinclude#includeintmain()(intn,a,b,c;scanf("%d",&n);a=n/25;b=n/5;c=a+b;printf("Thenumberof0intheendof%d!is:%d.
119”,n,c);return0;)5.21看看是谁做的好事某四位同学中有一个做了好事,不留名,表扬信来了,校长问是谁做的好事.以下四个人中有三个人说的是真话.A说:不是我B说:是CC说:是DD说:他说的不对!编写程序:输出是谁做的好事,只输出对应的大写字母,输出格式printf("%c
120",ch);。#includettincludeintmain(){charch;
121for(ch=,A*;ch<=*D);ch++)(if(ch=='A'&&ch=='C'&&ch=='D'&&ch!='D')printf,ch);if(ch!='A'&&ch!='C"&&ch=='D'&&ch!='D')printf(“枇
122",ch);if(ch!='A'&&ch=='C'&&ch!='D'&&ch!='D')printf(“枇
123",ch);if(ch!='A'&&ch=='C"&&ch=='D'&&ch=='D')printf("枇
124",ch);I}5.22贪吃的猴子有一只猴子,第一天摘了若干个桃子,当即吃了一半,但还觉得不过瘾,就又多吃了一个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一半加5个)。到第n天早上再想吃的时候,就只剩下一个桃子了。输入:天数n输出:第一天的桃子个数,输出语句为printf("Themonkeygot%dpeachsinfirstday.
125",sum);Smaple:Input:5OutputThemonkeygot114peachsinfirstday.#include#includeintmain(){intn,i;
126longintm=l;scanf("%d",&n);for(i=l;i<=n-l;i++){m=(n-i+m)*2;Iprintf("Themonkeygot%dpeachsinfirstday.
127",m);return0;)5.23百马百担有100匹马,驮100担货,其中大马驮3担,中马驮2担,两匹小马驮1担输入:无输出:大、中、小马的个数,用逗号分隔。例如:2,30,68说明:大、中、小马都必须有,结果中要列出所有的组合可能每个结果占一行因为有多个结果,结果的排序按照大马的个数从少到多^includevoidmain(){intx,y,z;for(x=l;x<33;x++)for(y=l;y<50;y++){z=(100-3*x-2*y)*2;if(x+y+z-100)printf("%d,%d,x,y,z);5.24四大湖问题我国有4大淡水湖。A说:洞庭湖最大,洪泽最小。鄱阳湖第三。B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三。C说:洪泽湖最小,洞庭湖第三。D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。4个人每人仅答对了一个,请你编程给出4个湖从大到小的顺序。
128^includettincludeintmain()inta,b,c,d;for(a=l;a<=4;a++)for(b=l;b<=4;b++){if(b==a)continue;for(c=l;c<=4;c++)(if(c==a||c==b)continue;for(d=l;d<=4;d++)(if(d==a||d==b||d==c)continue;if((b==l||d==4||a==3)==1&&(d==l||b==41|a==21|c==3)==1&&(d==41|b=3)=l&&(a==l||c=4||d==2||b—3)==1)if(a-l)printf("鄱阳湖
129");if(a—2)printf("鄱阳湖
130");if(a==3)printf("鄱阳湖
131");if(a—4)printf(“鄱阳湖
132");if(b—1)printf("洞庭湖
133");if(b==2)printf("洞庭湖
134”);if(b==3)printf("洞庭湖
135");if(b==4)printf("洞庭湖
136”);if(c==l)printf("太湖
137");if(c-2)printf("太湖
138");if(c-3)printf("太湖、n");if(c==4)printf("太湖
139");if(d==l)printf("洪泽湖
140");if(d==2)printf("洪泽湖
141");if(d=3)printf("洪泽湖
142");if(d—4)printf("洪泽湖
143");
144break;)}break;)break;}return0;)选做5.25黑色星期五在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,不管哪个月的13日又恰逢星期五就叫“黑色星期五”。输入某年年号和该年的元旦是星期几(「7),输出该年所有的“黑色星期五”的日期(年/月/日)。输入:4位年号和该年元旦是星期几输出:所有的“黑色星期五”的日期(年/月/日)#includeftincludeintmain()inty,m,d,x;scanf("%d%d”,&y,&x);for(m=l;m<=12;m++)(if(m==l||m==3||m==5||m~7||m==8||m==10||m==12){for(d=l;d<=31;d++){if(d==13&&x==5)printf(,,%d/%d/%d
145,/,y,m,d);x++;if(x==8)x=l;if(m==4||m==6||m==9||m==ll)
146{for(d=l;d<=30;d++){if(d==13&&x==5)printf(,,%d/%d/%d
147/,,y,m,d);x++;if(x==8)x=l;if(((y%4==0&&y/100!=0)||y%400==0)&&m==2)for(d=l;d<=29;d++)if(d==13&&x==5)printf("%d/%d//d
148”,y,m,d);x++;if(x==8)x=l;if(y%4!=0&&m==2)(for(d=l;d<=28;d++){if(d==13&&x==5)printf("%d/%d/%d
149”,y,m,d);x++;if(x==8)x=l;
150return0;)选做5.26抓疑犯某地刑侦大队对涉及六个嫌疑人的一桩疑案进行分析:(1)A、B至少有一人作案;(2)A、E、F三人中至少有两人参与作案;(3)A、D不可能是同案犯;(4)B、C或同时作案,或与本案无关;(5)C、D中有且仅有一人作案;(6)如果D没有参与作案,则E也不可能参与作案。试编一程序,将作案人找出来。输出格式为(以下结果不是最终答案):A:不是罪犯B:是罪犯C:是罪犯D:不是罪犯E:不是罪犯F:是罪犯#includettincludeintmain()iintA,B,C,D,E,F;for(A=0;A<=1;A++)for(B=0;B<=1;B++)for(C=0;C<=1;C++)for(D=0;D<=1;D++)for(E=0;E<=1;E++)for(F=0;F<=1;F++)if(A+B>=1&&A+E+F>=2&&A+D==1&&(B+C==0||B+C==2)&&C+D==1&&(D+E
151==0||D+E==2))if(A-l)printf("A:是罪犯
152");if(A-=0)printf("A:不是罪犯
153");if(B==l)printf("B:是罪犯
154");if(B==O)printf("B:不是罪犯
155");if(C==l)printf("C:是罪犯
156");if(C==O)printf("C:不是罪犯
157");if(D==l)printf("D:是罪犯
158");if(D==O)printf("D:不是罪犯
159");if(E==l)printf("E:是罪犯
160");if(E==0)printf("E:不是罪犯
161");if(F-l)printf("F:是罪犯
162");if(F==0)printf("F:不是罪犯
163");)return0;)选做5.27零钱换整钱小明去银行存钱,拿了一堆硬币。已知1角的硬币厚度为1.8mm,5
164角的硬币厚1.5mm,1元的硬币为2.0mm。小明将1角的硬币放成一摞,将5角的硬币硬币放成一摞,将1元的硬币放成一摞,发现3摞硬币一样高。银行正好把这些硬币换成若干张面值为10元的纸币。问小明至少带了多少钱的硬币(元为单位),每种面值的硬币有多少个?输入:无输出:1角的数量,5角的数量,1元的数量,总金额。(例如:20,30,40,50)说明:在结果中只输出各个对应的数字即可ftincludettincludeintmain()inta,b,c,d;for(a=l;a<=100;a++)for(b=l;b<=100;b++)for(c=l;c<=100;c++)if(20*a==15*b&&20*a==18*c)(d=(a*10+b*5+c)%100;if(d!=O)break;d=(a*10+b*5+c)/10;printf("%d,%d,%d,%d
165”,c,b,a,d);}return0;)选做5.28马戏团观众人数一个马戏团表演,n个座位全满,全部门票收入是120元,现在知道,男人每人5元,女人每人2元,小孩每人1角。编程,输入总人数n,输出满足要求的男人、女人和小孩人数的全部方案。若n人无法满足条件,则输出"Nooutput'n"。
166输入:人数n输出:男人、女人和小孩人数ftinclude#includeintmain()(intn,a,b,c;scanf("%d",&n);for(a=0;a<=24;a++)for(b=0;b<=(120-5*a)/2;b++)for(c=0;c<=(120-5*a-2*b)*10;c++)if(5*a+2*b+c/10==120&&a+b+c==n)printf("%d%d%d
167”,a,b,c);return0;)选做5.29爱因斯坦的数学题爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩一阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶?输出语句格式为:printf("Stairsnumber=%d
168z,,number);ttinclude#includeintmain(){intnumber;for(number=1;number<=1000;number++)if(number%2==l&&number%3-=2&&number%5==4&&number%7==0)(printf("Stairsnumber=%d
169,/,number);break;
170)return0;)选做5.30抓交通肇事犯一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方,请根据以上线索求出车号。ttincludettincludeintmain()inta,b,c,n;for(a=0;a<=9;a++)for(b=0;b<=9;b++)if(a!=b){n=1100*a+ll*b;for(c=30;c<1000;c++)if(n==c*c)