版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言一中国石油大学(华东)C语言上机题及答案大全1.1Helloworld.让我们用c语言向世界问好。最早的程序基本是这个样子的:程序ー:ttinclude<stdio.h>voidmain()(printf("Helloworld.\n");}程序ニ:ftinclude<stdio.h>intmain(){printf("Helloworld.\n");return0;}上面的程序你任意模仿ー个,看看是否可以通过?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。输入:无输出:Helloworld.#include<stdio.h>intmain(){printf("Helloworld.\n");}1.2WelcometoBeijing.让我们来练习如何显示多行文字。输入:无输出:就是下面的那段文字。#include<stdio.h>voidmain(){printf("Welcome'n");printf("to\n");printf("Beijing.\n");}3练习最简单的printf和scanfprintf函数和scanf函数是C语言中最常用的函数之一,下面让我们练习一下吧。输入:整型变量x的值。输出:输出整型变量x对应的十进制、ハ进制和十六进制形式。认真观察ー1的八进制和十六进制输出,请想想是为什么。#include<stdio.h>intmain(){intx;scanf("%d",&x);printfIx=%d,=x);printf(〃x二%〇,二x);printf(〃x二%x\n',x);return0;}练习两个整数之间的运算背景:基本练习。输入:接受两个整数,每个整数之间使用空格分隔。例如输入格式为:123444输出:分别输出进行+、ー、・、/、・之后的运行结果。finclude<stdio.h>intmainO{intx,y;scanf&x,&y);printf(〃%d+%d=%d\n〃,x,y,x+y);printf("%did二%d\n”,x,y,x-y);printf("刎・%d二%d\n”,x,y,x*y);printf("%d/%d=%d\n",x,y,x/y);printf("%d%%%d=%d\n",x,y,x%y);return0;}学习打印你的第一个图形背景:我们已经学习了printf函数,这里给出了一个小程序,它运行的结果是输出ー个由星号(*)组成的4*4的正方形。程序如下:ftinclude<stdio.h>intmain(){printf("****\n");printf("****\n");printf("****\n");printf("****\n");return0;}要求:按照上面的程序范例,编写ー个小程序,要求输出的是4行由・号组成的等腰三角形。输入:无。输出:指定图形。ttinclude<stdio.h>-1-intmainO{printf(〃*\n");printf("***\n");printf(〃*****\n");printf(〃*******\n");return0;}整型数的表示范围编写ー个循环程序,输入N值,输出N的阶乘。关于循环程序怎么编写,可以参考教材第3章P66页的例题4.2和第5章P82的例题5.1的内容。注意整型数的表示范围,如果当输入的N比较大时,例如N等于20时,输出怎么是负数了?自己想明白吧!#include<stdio.h>voidmainO{intN,i;intsum=l;N>=2;scanf("%d",&N);if(Nく二16){for(i=l;i<=N;i++)sum=sum*i;printf("%d\n",sum);)if(N>=17)printfCNistoobig!\n");}求正弦函数值已知求正弦sin(x)的近似值的多项式公式为:sin(x)=x-x3/3!+x5/5!-x7/7!+ + (-l)nx2n+l/(2n+l)!+…编写程序,要求输入x(单位是弧度)和e,按上述公式计算sin(x)的近似值,要求计算的误差小于给定的£〇此题当然要用到循环语句,到第5章去找个猫来照着画吧,循环的终止条件就是本次计算出来的正弦函数值和上次计算的值的差小于给定的£〇求两个值的差时,要求出其绝对值,使用库函数fabs(),头文件在math.h里。友情提示:给定的误差值£越小,计算的精度越高,但是要注意喽,给的精度太高,你的程序会成为死循环。如果出现死循环的情况,可以用くCtrl>+くBreak〉键退出程序。ttinclude<stdio.h>#include<math.h>intmain(){floatx,eps,s,y=0,yO,t;intn,j;scanf<%f%i,&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\n”,sin(x));system("PAUSE");return0;}判断输入的字符的类型我们将字符分为五类:大写字母、小写字母、数字、控制字符、其他字符。编写程序,从键盘输入一个字符,输出字符所属的类型:大写字母时输出capitalletters,小写字母时输出smallletters,数字是输出figures,其他字符时输出others〇#include<stdio.h>voidmain(){charc;c=getchar();if(c<0x20)printf("Thecharacterisacontrolcharacter\n");elseif(c>=’〇'&&c<='9')printf("figures\n");elseif(c>='A'&&c<="Z")printf("capitalletters\n"):elseif(c>='a'&&c<='z')printf("smallletters\n");else-2-printf("others\n");}1找零钱假定有5角、1角、5分、2分和1分共5种硬币,在给顾客找硬币时,一般都会尽可能地选用硬币个数最小的方法。例如,当要给某顾客找7角2分钱时,会给他ー个5角,2个1角和1个2分的硬币。试编写ー个程序,输入的是要找给顾客的零钱(以分为单位),输出的是应该找回的各种硬币数目,并保证找回的硬币数最少。^include<stdio.h>intmain(){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\n",xl);printf("%d\n",x2);printf("%d\n",x3);printf("%d\n",x4);printf("%d\n",x5);return0;}计算时钟的夹角背景:钟面上的时针和分针之间的夹角总是在0度、359度之间。举例来说,在十二点的时候两针之间的夹角为〇度,而在六点的时候夹角为180度,在三点的时候为90度。本题要解决的是计算0:00到12:00之间任意ー个时间的夹角。输入:每组测试数据包含两个数字:第一个数字代表小时(大于等于0小于12),第二个数字代表分(在区间[〇,59]上)。输出:对应每组测试数据,用常用格式显示时间以及这个时候时针和分针间的最小夹角,精确到小数点后一位。友情提示:以表中心到12点的连线为基准,分针每走1分钟是6度,时针与基准的夹角每个小时也是30度,从整点开始,每过1分钟时针再增加0.5度。提示:时钟夹角计算公式丨5.5m-30h|,h为时针,m为分针。求浮点型绝对值的函数为fabs,需要包含math,h头文件#include"stdio.h"#includemath,nintmain(){inth,m;doubleangle;scanfl%d%dzz,&h,&m);angle=fabs(5.5*m-30*h);if(angle>180)angle=360-angle;printf(*At%d:%02dtheangleis%.Ifdegrees.\n",h,m,angle);}照猫画猫:计算圆柱的侧面积及体积如果已知圆柱的底面半径r,以及高h,则可计算出圆柱的侧面积s=2nrh,体积v=nr2h〇其中n=3.1415926输入第一行输入圆柱的底面半径r第二行输入圆柱的高h输出s=<圆柱的侧面积>バ=く圆柱的体积>要求1.所有变量都定义为双精度类型2.结果精确到小数点后两位finclude"stdio.h"^definen3.1415926intmain(){floatr,h,s,v;printf;scanf("%f%f”,&r,&h);s=2*n*r*h;v=n*r*r*h;printf("s=%6.2f,v=%6.2f\n",s,v);}4分离整数任意从键盘上输入ー个三位正整数,要求正确地分离出它的个位、十位和百位,并分别在屏幕上输出。比如输入的三位正整数tinclude"stdio.h"intmainO{-3-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\n",units,tens,hundreds);}3.5鸡兔同笼已知笼中有头h个,有脚f条,问笼中鸡兔各有多少只?输入:头和脚的数目输出:兔子和鸡的数目(输出语句为:printf("rabbit=%d,chicken=%d",rabbit,chicken);)Sample输出:rabbit=O,chicken=10#include"stdio.h"intmain(){intchicken,rabbit,f,h;scanf(,z%d%d,z,&h,&f);rabbit=(f-2*h)/2;chicken=(4*h-f)/2;print—rabbit=%d,chicken二%d\n,rabbit,chicken);)I温度转换背景:经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:有些使用华氏温度标准(F),有些使用摄氏温度(C)。现在,请你根据温度转换公式设计ー个温度转换程序,可以进行温度转换。如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。温度转换的公式为:F=(CX9/5)+32;C=(F-32)X5/9;式中Fー华氏温度,Cー摄氏温度。输入:第一个数据(1或2)确定转换的类型:华氏转摄氏(1);摄氏转华氏(2);第二个数据是相应需要转换的温度值。输出:相应的转换后的温度值(保留小数点后2位)。#include<stdio.h>voidmain(){intlx;doublef,c;scanf("%d”,&lx);if(lx==l){scanf("%1f',&f);c=(f-32)*5/9;printf("TheCentigradeis%.2f\n",c);}else{scanf("%1f",&c);f=(c*9/5)+32;printf("TheFahrenheitis%.2f\n",f);}}4.2分段函数有一分段函数,y=f(x)。当x小于6时,y=x-12J当x大于等于6且小于15时,y=3x-1;当x大于等于15时,y=5x+9.从键盘上输入一个整数x,输出对应的y值。ttinclude<stdio.h>voidmain(){intx,y;scanf("%d",&x);if(x<6)y=x-12;elseif(x<15)y=3*x-l;elsey=5*x+9;printf("%d\n",y);return0;}3整数位数判断输入ー个不多于5位的正整数,要求:(1)求它是几位数;(2)逆序打印出各位数字。#include<stdio.h>#include<stdlib.h>ttdefineSIZE5intmain(void){-4一intbit_count;〃位数longintinput_num;〃输入数intresult[SIZE];〃存放各个位的数inti;scanf("%ld”,&input_num);if(input_num<0|Iinput_num>99999){printf(^Invalidinput'n");exit(l);)for(bitcount=0;input_num;++bitcount){result[bit_count]=input_num%10;input_num/=10;}printf(*%d\n*,bit_count);for(i=0;i<bit_count;++i)printfC%d*,result[i]);printf('\n");exit(0);}四位数拆分输入ー个四位数,判断千位、百位、十位和个位数字之和是否为偶数,如果是,输出Yes,如果不是,输出No;如果不是四位数,输出Invaliddata。finclude<stdio.h>voidmain(){intx,a,b,c,d,e;scanfC%d”,&x);if(x/1000<lI|x/10000>=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)printfC'Yes\n");elseprintf("No\n");}}磨磨你的砍柴刀:判断三角形的形状要求:输入三角型的三条边,判断三角形的形状。假设输入的三边边长均>0。输入:三角型的3条边的长度(int型)。输出:等边三角形:equilateraltriangle.等腰三角形:isocelestriangle,不构成三角形:non-triangle,一般三角形:triangle.开includeくstdio.h>voidmain(){floata,b,c;scanf&a,&b,&c);if(a+b<c||b+c<a||c+a<b)printf("non-triangle.\n");elseif(a==b&&b==c)printf("equilateraltriangle.\n");elseif(a==bIIb==cIIa==c)printf("isocelestriangle.\n");elseprintf("triangle.\n");}字符加密输出从键盘上输入ー个字符,进行加密以后再输出在屏幕上。加密规律是:输入小写英文字母时,输入a输出Z、输入b输出丫、输入c输出X、...、输入z输出A。输入大写英文字母时,将该字母ASCI!码值再加上该值的1/2后输出所对应的字符,例如数字A的ASCII码值是65,加上其值的1/2后是98(小数四舍五入),则输出字符‘b'。输入数字时,将该数字原ASCII码值再加上该值十进制的十位上的数后输出,例如数字9的ASCII码值是57,加上十位上的数5后是62,则输出字符ッ'。输入其他字符时原样输出。友情提示:整数之间运算的结果要取整,例如5/2的结果是2,而5.0/2.0对小数四舍五入的结果就是3.0了。所以输入大写英文字母时的输出要仔细考虑。#include<stdio.h>intmain(){charch;inta;-5-ch=getchar();if(ch>=97&ach<=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);}elseif(ch>=48&&ch<=57){ch=ch/10+ch;putchar(ch);}elseputchar(ch);printf("\n");}判断某年某月的天数一年有365天,有的月份有31天,有的有30天,2月份闰年的时候是29天,非闰年的时候是28天。现在要求从键盘上输入一个年份和月份,输出其对应的天数。^include<stdio.h>main()tintyear,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\n”,days);}花多少钱买衣服周末商场促销呢,某品牌服装既可以买套装,也可以买单件。若买的不少于5。套,每套80元;不足50套的每套90元,只买上衣每件60元,只买裤子每条45元。编写程序,输入计划购买的上衣数量a和裤子的数量b,计算并输出应该付的款m〇#include<stdio.h>voidmain(){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<b&&a<50)y=90*a+(b-a)*45;if(a<b&&a>=50)y=80*a+(b-a)*45;printfC%d\n*,y);}到邮局去寄包裹你去邮局给朋友寄礼物。发现邮局对邮寄包裹的费用是这样规定的:如果包裹长宽高任意ー个尺寸超过1米,或重量超过30千克,不ア邮寄;对可以邮寄的包裹每件收手续费0.2元,不同重量的邮资按下表计算:重量(千克)收费标准(元)小于1〇〇.80大于等于1〇但不超过200.75大于等于20但不超过300.70编写程序,输入包裹的长、宽、高尺寸和重量,输出所需的邮资(输出结果中包含两位小数即可),超出尺寸或重量的输出"Error”.#include<stdio.h>voidmain(){floata,b,c,m,y;scanf("%f,%f,%f,%fz/,&a,&b,&c,&m);if(a>l||b>l||c>l|m>30)printf("Error\n");else{-6-if(m<10)y=0.80*m+0.2;elseif(m<20)y=0.75*m+0.2;elsey=0.70*m+0.2;printf("%.2f\n",y);}}输入用数字(1一7)表示的星期几,输出星期几的英文表示,输入的数字有误,输出单词“Error(回车)"。tinclude<stdio.h>voidmain(){inta;scanf("%d",&a);switch((int)(a)){case1:printf(〃Monday'n");break;case2:printf(Fuesday\n,z);break;case3:printf<Wednesday、イ');break;case4:printf("Thursday\n");break;case5:printf("Friday\n");break;case6:printf("Saturday\n");break;case7:printf("Sunday\n");break;default:printf("Error\n");}}1输出一行星号编写程序在一行中输出N个星号。输入:N值输出:一行中N个星号#include<stdio.h>intmain(){intn,i;scanf("%d",&n);for(i二〇;iくn;i++)putchar('*');putchar('\n');return0;}5.2打印平行四边形输入图形的高n和首字符c,输出如下例(n=5,c='バ)所示的图形.ABCDEBCDEFCDEFGDEFGHEFGHI输入:整数n例如5和某个字符例如A输出:高为5和首字符A的平行四边形#include<stdio.h>voidmain(){intn,m,i,d;charp,t;scanf("%d,%c",&n,&p);for(m=0;mくn;m++){for(i=0;i<m;i++){printf("");}for(d二〇;dくn;d++){t=p+d+m;printf("祝",t);}for(i=0;i<n-m-l;i++){printf("");}printf("\n");}}5.3空心的倒三角型背景:请根据要求打印可空心倒三角形。输入:输入三角形的高度(h>0)〇输出:打印相应的空心倒三角形。图样参见测试用例。^include<stdio.h>#include<stdlib.h>intmain(){inth,i,j,k,m,n;scanf("%d",&h);if((h>l)&&(h%2!=〇)){-7-for(i=l;i<=(2*h-l);i++){printf("*");}printf("\n");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("");}printf("*");printf("\n");}for(n=l;n<=(h-l);n++){printf,);}printf('*\n");}elseprintf("Invalidinput\n");return0;}选做5.4打印实心正方形5.1题中你已经打印了一行・号,这次在屏幕上输出一个由星号组成的n行n列的正方形。程序输入n值,输出如下例(n=4)所示的高和上底均为n的正方形:********Sinclude<stdio.h>^include<stdlib.h>intmain(){inta=l,n,b;scanf("%d",&n);while(a<=n){b=l;do{printf("*");b++;}while(b<=n);printf("\n");a++;}return0;}选做5.5空心字符菱形输入:菱型起始字母和菱形的高度。输出:参看测试用例,打印空心的由字符组成的菱形。#include<stdio.h>^include<stdlib.h>intmain(){charch;intn,a=l,b,c;scanfC%c%d*,&ch,&n);while(a<=n){b=l;while(b<=n-a){printf(*");b++;}printfch);c=l;if(a>=2)(while(c<=2*a-3){printf("");c++;}printfぐ%c”,ch);}-8-ch=ch+l;printf(〃、n");a++;}a=l;ch=ch-2;while(a<=n-l){b=l;while(b<=a){printfC、、b++;}printfch);c=l;if(a<=n-2){while(c<=2*n-2*a-3){printf("");c++;}printfch);}ch=chT;printf('\n");a++;}return0;}输入ー个整数n,输岀图形K。如n=4时,输出如下图形。************ttinclude<stdio.h>#include<stdlib.h>intmainO{intn,i=l,j;scanf("%d",&n);while(i<=n-l){j=l;printf("*");while(j<=n-i){printf(*つ;j++;}printf(、、n");i++;}printff*\n");i=l;while(i<=n-l){j=l;printf("*");while(j<=i){printf(*");j++;}printf("*\n");i++;}return0;}选做5.7输出X图形输入n值,输出下例(n=3)所示的图形:*********输入:整数n(例如3)输出:如上图所示X形图形tinclude<stdio.h>#include<stdlib.h>intmain(){intn,i=l,j,k;-9一scanf&n);while(iく=nT){j=l;while(j<=i-l){printfC0;j++;}printf(〃*〃);k=l;while(k<=2*n-2*i-l)(printfCつ;k++;}printfぐ*");j=l;while(j<=i-l){printf("");j++;}printf('\n");i++;}i=l;while(i<=n-l){printf("");i++;}printfぐ*");i=l;while(i<=n-l){printf("");i++;}printf("\n");i=l;while(i<=n-l){j=l;while(j<=n-i-l){printf("");j++;}printfぐ*");k=l;while(k<=2*i-l){printf("");k++;}printfぐ*");j=l;printfC0;j++;}printf(〃、n");i++;}return0;}选做5.8输出图形编程,输入n值,输出下例(n=5)所示的高为n的图形:#include<stdio.h>^include<stdlib.h>intmain(){intn,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-1){-10-printfC、、k++;}1=1;while(K=i){printf。*");1++;}printf("\n");i++;}i=l;while(i<=2*n-l){printf("*");i++;}printf("\n");return0;}选做5.9画个空心的梯形吧编程,输入n,输出如下例(n=5)所示的高和上底均为n的等腰空心梯形。^include<stdio.h>ttinclude<stdlib.h>intmain(){intn,i=l,j,k;scanf("%d",&n);while(i<=n){while(j<=n-i){printf(*");j++;}printf("*");if(i==l){for(k=l;k<=n-2;k++)printf(〃*");}elseif(i==n){for(k=l;k<=3*n-4;k++)printf(〃・〃);}else{for(k=l;kく=n+2*i-4;k++)printf(*");}printfぐ・〃);j=l;while(j<=n-i){printfC");j++;)printf("\n");i++;}return0;}选做5.10输出菱形图案输入n»输出如下例(n=3)所示的菱形:*************ftinclude<stdio.h>ttinclude<stdlib.h>intmainO{intn,i,j,k;scanf("%d〃,&n);for(i=l;i<=n;i++){for(j=l;j<=n-i;j++){printf(・つ;}for(k=l;k<=2*i-l;k++){-11-printf("*");}for(i=l;i<=n-l;i++){for(j=l;j<=i;j++){printf(*");}for(k=l;k<=2*n-2*i-l;k++){printf(〃*〃);}printf("\n");}return0;}5.11最大公约数输入两个正整数m和n,求它们的最大公约数和最小公倍数比如,输入m和n的值分别为14和21,则最大公约数为7,最小公倍数为42。#include<stdio.h>voidmain(){intm,n,i,j;scanf("%d%d”,&m,&n);for(i=m;i>=l;i--){if(n%iニニ0&&m%i==0){printf("thegreatestcommondivisoris%d\n",i);break;}}for(j=m;;j++){if(j%mニニ0&&j%nニニ〇){printf("theleastcommonmultipleis%d\n",j);break;}}}5.12水仙花数输出所有的水仙花数。所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。例如153是•水仙花数,因为153二13+53+33输出语句:printf("%d\n",n);^include<stdio.h>voidmain(){intn,i,j,k;for(n=100;nく=999;n=n+1){}i=n/100;//取出n的百位数j=(n/10)%10;/Z取数n的十位数k=n%10;//取出n的个位数if(n==i*i*i+j*j*j+k*k*k)printf("%d\n",n);}ー个数如果恰好等于它的因子之和,这个数就称为完数。例如,6的因子为1,2,3,且6=1+2+3,因此6是完数,从键盘上输入ー个正整数,判断其是否为完数。如果是,则按照如下格式输出。比如,输入6,则输出Yes,itsfactorsare123:如果输入8,则输出No#include<stdio.h>#include<math.h>intmain(){intn,i,c,sum=0;scanf("%d",&n);for(i=l;i<n;i++){if(n%i==0)sum=sum+i;}if(n==sum){printf(zzYes,itsfactorsareつ;for(c=l;c<n;c++){if(n%c==0)printf('%d",c);}printf("\n");-12-}elseprintf("No\n");}14素数输入两个正整数m和n,求出[m,n]区间的所有素数ttinclude<stdio.h>#includeくmath.h>voidmain(){intm,n,i,j,k;scanf("%d%d”,&m,&n);for(i=m;i<n;i++){k=sqrt(i);for(j=2;j<=k;j++)if(i%j==0)break;if(j>k)printf('%d",i);}printf("\n");}找出最大素数素数是指ー个只能被1和它本身整除的数,在数论中占有重要的研究地位,在当代密码学中也被广泛应用。输入:取值范围输出:该范围内的最大素数#include<stdio.h>intmainO{inta,i,j;scanf(〃%d”,&a);for(i=a;i>l;iーー){for(j=2;j<i;j++){if(i%j==O)break;}if(j==i){printf("%d\n",i);break;回文数输入一个数,判断是否为回文数,如果是,输出Yes,否则输出No#include<stdio.h>#include<stdlib.h>#include<string.h>char*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\n");free(str);system("pause");return0;}char*chan(intcount){chara;staticchar*p;if((a=getchar())!-\n){count++;chan(count);}else{p=malloc(sizeof(char)*(count+1));*(p+count)=0;returnp;-13一)*(p+countT)二a;returnp;}自守数是指ー个数的平方的尾数等于该数自身的自然数。例如252=625,762=5776。输入一个自然数,判断其是否为自守数。如果是,则输出Yes,否则输出No^include<stdio.h>^include<stdlib.h>intmainO{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)(printf("Yes\n");}else{printf(*No\nO;}return0;}选做5.18求亲密数若正整数A的全部约数(包括1,不包括A本身)之和等于B;且整数B的全部约数(包括1,不包括B本身)之和等于A,则A、B为亲密数。编程,输入正整数A,输出亲密数A,B(ACB),若不存在亲密数,则输出Nooutput〇例如:220和284就是ー对亲密数。220的约数是:1、2、4、5、10、11、20、22、44、55、I10,约数之和是284;284的约数是:1、2、4、71、I42,约数之和是220。tinclude<stdio.h>ttinclude<stdlib.h>intmainO{intn,a,b=0,c=0;scanf("%d",&n);for(a=l;a<n;a++){if(n%a=0){b=a+b;}}for(a=l;a<b;a++){if(b%a==0){c=c+a;}}if(n==c){printf("%d-%d\n”,c,b);}else{printf(Nooutput\n〃);}return0;}选做5.19高次方的尾数输入2个正整数m和n,求mn后三位数。比如输入m和n的值分别为13和13,则1313的后三位数字为253。sinclude<stdio.h>^include<stdlib.h>intmain(){intm,n,a,b=l,c;scanf(^d%d*,&m,&n);for(a=l;a<=n;a++)-14-(b=b*m;b=b%100〇;}printf(Z/Thelast3digitsof%d**%dis:%d\n”,m,n,b);return0;}选做5.20阶乘尾数零的个数输入ー个正整数n,求其阶乘尾数〇的个数。比如,输入n的值为100,则其阶乘尾数〇的个数为24。tinclude<stdio.h>ttinclude<stdlib.h>intmain(){intn,a,b,c;scanf("%d",&n);a=n/25;b=n/5;c=a+b;printf(z,Thenumberof0intheendof%d!is:%d.\nzz,n,c);return0;}5.21看看是谁做的好事某四位同学中有一个做了好事,不留名,表扬信来了,校长问是谁做的好事.以下四个人中有三个人说的是真话.A说:不是我B说:是CC说:是DD说:他说的不对!编写程序:输出是谁做的好事,只输出对应的大写字母,输出格式printf("%c\n",ch);〇#include<stdio.h>ttinclude<stdlib.h>intmain(){charch;for(ch二'A';chくニ'D';ch++){if(chニニ'A'&&chニニ’C'&&chニニ'D'&&ch!二'D')printf("机、n”,ch);if(ch!='A'&&ch!二'C'&&chニニ'D'&&ch!='D')printf("%c\n",ch);if(ch!二'A'&&chニニ'C'&&ch!='D'&&ch!二'D')printf("%c\n",ch);if(ch!=,A'&&chニニ'C'&&chニニ'D'&&chニニ'D')printf("%c\n",ch);}}5.22贪吃的猴子有一只猴子,第一天摘了若干个桃子,当即吃了一半,但还觉得不过瘾,就又多吃了ー个。第2天早上又将剩下的桃子吃掉一半,还是觉得不过瘾,就又多吃了两个。以后每天早上都吃了前一天剩下的一半加天数个(例如,第5天吃了前一天剩下的一半加5个)。到第n天早上再想吃的时候,就只剩下ー个桃子了。输入:天数n输出:第一天的桃子个数,输出语句为printf("Themonkeygot%dpeachsinfirstday.\n,sum);Smaple:Input:5OutputThemonkeygot114peachsinfirstday.#include<stdio.h>#include<stdlib.h>intmain(){intn,i;longintm=l;scanf("%d",&n);for(Rl;iく二nT;i++){m=(n-i+m)*2;}printf("Themonkeygot%dpeachsinfirstday.\n〃,m);return0;}5.23百马百担有100匹马,驮100担货,其中大马驮3担,中马驮2担,两匹小马驮1担输入:无输出:大、中、小马的个数,用逗号分隔。例如:2,30,68-15-说明:大、中、小马都必须有,结果中要列出所有的组合可能每个结果占一行因为有多个结果,结果的排序按照大马的个数从少到多tinclude<stdio.h>voidmain(){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,%d\n*,x,y,z);}}5.24四大湖问题我国有4大淡水湖。A说:洞庭湖最大,洪泽最小。鄱阳湖第三。B说:洪泽湖最大,洞庭湖最小,鄱阳湖第二。太湖第三。C说:洪泽湖最小,洞庭湖第三。D说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。4个大每人仅答对了一个,请你编程给出4个湖从大到小的顺序。ttinclude<stdio.h>ftinclude<stdlib.h>intmain(){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==aIId==b||d==c)continue;if((b==lId==41Ia==3)==1&&(d==l||b==4,|a=21c==3)==l&&(d==41|b==3)==l&&(a==11|c==41|d==2I|b==3)=1)(if(a=l)printf("鄱阳湖、n");if(a==2)printf(〃鄱阳湖、n”);if(a==3)printf(〃鄱阳湖、n");if(a==4)printf(〃鄱阳湖、n”);if(b==l)printf("洞庭湖、n");if(b=2)printf("洞庭湖、n〃);if(b==3)printf("洞庭湖、n");if(b==4)printf("洞庭湖、n");if(c==l)printf("太湖、n");if(c==2)printf("太湖、n");if(c==3)printf("太湖、n");if(c==4)printf("太湖、n");if(d==l)printf("洪泽湖、n");if(d==2)printf("洪泽湖、n");if(d==3)printf("洪泽湖、n");if(dニニ4)printf("洪泽湖、n");break;}}break;}break;}return0;}选做5.25黑色星期五在西方,星期五和数字13都代表着坏运气,两个不幸的个体最后结合成超级不幸的一天。所以,-16-不管哪个月的13日又恰逢星期五就叫“黑色星期五”。输入某年年号和该年的元旦是星期几(1-7),输出该年所有的“黑色星期五”的日期(年/月/日)。输入:4位年号和该年元旦是星期几输出:所有的“黑色星期五”的日期(年/月/日)#include<stdio.h>#include<stdlib.h>intmain(){inty,m,d,x;scanf("%d%d",&y,&x);for(m=l;m<=12;m++){if(m==lI|m==31|m==51|m--71|m==81|m-101|m==12)for(d=l;d<=31;d++){if(d==13&&x==5)printf(W%d/%d\n*.y,m,d);x++:if(x==8)x=l;}}if(m==4||m-6||m==9|m==ll){for(d=l;d<=30;d++){if(d==13&&x==5)printf("刎/%d/%d\n”,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\n",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\n",y,m,d):x++;if(x==8)x=l;}}}return0;}选做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:是罪犯#include<stdio.h>^include<stdlib.h>-17-intmain(){intA,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>=l&&A+E+F>=2&&A+D==l&&(B+C==0||B+C==2)&&C+D==1&&(D+E==O||D+E==2)){if(A==l)printf("A:是罪犯、n");if(A==O)printf("A:不是罪犯、n");if(B==l)printf("B:是罪犯'n");if(B==O)printf("B:不是罪犯'n");if(C==l)printf("C:是罪犯'n");if(C==O)printf("C:不是罪犯'n");if(D==l)printf("D:是罪犯'n");if(D==0)printf("D:不是罪犯、n");if(E==l)printf("E:是罪犯、n");if(E=O)printf("E:不是罪犯'n");if(F=l)printf("F:是罪犯'n");if(F==O)printf("F:不是罪犯'n");}return0;}选做5.2?零钱换整钱小明去银行存钱,拿了一堆硬币。已知1角的硬币厚度为L8nun,5角的硬币厚1.5mm,1元的硬币为2.0mm。小明将1角的硬币放成一摞,将5角的硬币硬币放成ー摞,将1元的硬币放成一摞,发现3摞硬币ー样高。银行正好把这些硬币换成若干张面值为10元的纸币。问小明至少带了多少钱的硬币(元为单位),每种面值的硬币有多少个?输入:无输出:1角的数量,5角的数量,1元的数量,总金额。(例如:20,30,40,50)说明:在结果中只输出各个对应的数字即可Sinclude<stdio.h>^include<stdlib.h>intmain(){inta,b,c,d;for(a=l;a<=100;a++)for(b=l;b<=100;b++)for(c=l;c<=100;c++)if(2〇・a==15*b&&2〇・a==18*c){d=(a*10+b*5+c)%100;if(d!=0)break;d=(a*10+b*5+c)/10;printf(*%d,%d,%d,%d\n*,c,b,a,d);}return0;}选做5.28马戏团观众人数一个马戏团表演,n个座位全满,全部门票收入是120元,现在知道,男人每人5元,女人每人2元,小孩每人1角。编程,输入总人数n,输出满足要求的男人、女人和小孩人数的全部方案。若n人ー18-无法满足条件,则输出“NooutputXn"〇输入:人数n输出:男人、女人和小孩人数ftinclude<stdio.h>#include<stdlib.h>intmainO(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\n*,a,b,c);return0;}选做5.29爱因斯坦的数学题爱因斯坦出了一道这样的数学题:有一条长阶梯,若每步跨2阶,则最后剩ー阶;若每步跨3阶,则最后剩2阶;若每步跨5阶,则最后剩4阶;若每步跨7阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶?输出语句格式为:printf("Stairsnumber=%d\n",number);^include<stdio.h>ftinclude<stdlib.h>intmain(){intnumber;for(number」;number<=1000;number++)if(number%2==l&&number%3==2&&number%5==4&&number%7==0){printf("Stairsnumber=%d\n",number);break;}return0;}选做5.30抓交通肇事犯ー辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的ー些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是ー个整数的平方,请根据以上线索求出车号。finclude<stdio.h>#include<stdlib.h>intmain(){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)printf(zzThelicenseplateis:%d\n,n);}return0;}5.31求和输入整数m和正整数n,按下列公式计算s:s=m-(m+1)+m+2-(m+3)+,ハ,+(-l)n(m+n)〇输入:m和n输出:sttinclude<stdio.h>intmain(){inti,sign=l,m,n,s=0,t;scanf("%d%d”,&m,&n);for(i=0;iく=n;i++){t二sign*(m+i);sign二一sign;s=s+t;}printf("s二%d\n〃,s);}5.32计算SUM的值已知公式:SUM=1+1/2+1/3+1/4+...+1/n输入:n输出:表达式sum的值。结果保留6位小数一19-ftinclude<stdio.h>intmain(){inti,n;floats=0.0,t;scanf("%d",&n);for(i二1;iく二n;i++){t=l.0/i;s+=t;}printf("sum=%.6f\n,s);return0;}5.33迭代法用迭代法求,求平方根的迭代公式为:要求前后两次求出的x的差的绝对值小于10-5〇#include<stdio.h>#include<math.h>intmain(){doublexl,x2,a;scanf("%lf",&a);{x2=l.0;do{xl=x2;x2=0.5*(xl+a/xl);}while(fabs(x2-xl)>=le-5);printf(*Thesquarerootof%.2fis%.5f\n”,a,x2);}return0;}5.34分数序列有一个分数序列: 输入整数n,求出其前n项的和。输出语句格式为:printf(/zsum=%16.10f\nzz,s);#include<stdio.h>intmain(){inta,b,c,n,i;doubles;}scanf("%d〃,&n);a=2,b=l,s=0;for(i=l;i<=n;i++){s+=(l.0*a/b);c=b;b=a;a=a+c;}printf(*sum=%16.10f\n",s);return0;5.35求)的值编写程序,从键盘输入整数n,求e的值.e=l+l/l!+l/2!+l/3!+..+l/n!注意:用double型数据计算输出语句:printf("e=%lf\n",e);#include<stdio.h>intmain()(doublee=l.0,f=l.0;intn,i;scanf("%d",&n);for(i=l;i<=n;i++){f=f/i;e=e+f;}printf("e=%lf\n”,e);}5.36编程计算编写程序,输入n的值,求:1-1/2+1/3-1/4+1/5-1/6+1/7-...+l/n(保留四位小数)ftinclude<stdio.h>intmain(){inti,sign=1,n;floats=0.0,t;scanf(“刎",&n);for(i=1;i<=n;i++){t=1.0/(sign*i);sign=-sign;s+=t;}printf("sum=%.4f\n",s);return0;}37cos(x)-x=0-20-利用以下所示的简单迭代方法求方程:cos(x)-x=o的ー个实根。Xn+l=cos(Xn)迭代步骤如下:(D取XI初值为0.0;(2)XO=X1,把XI的值赋给X0;(3)Xl=cos(X0),求出ー个新的XI;(4)若X0-X1的绝对值小于0.000001«执行步骤(5),否则执行步骤(2);(5)所求XI就是方程cos(X)-X=0的ー个实根,输出X0,输出语句为printf("x=%f",x):〇#include<stdio.h>#include<math.h>intmain(){doublexl,x2;scanf("%d\n",&xl);x2=cos(xl);while(fabs(x2-xl)>0.000001){xl=x2;x2=cos(xl);}printf("x=%f\n",x2);}选做5.38SIX+SIX+SIX=NINE+NINE计算出自然数SIX和NINE(它们满足的条件是SIX+SIX+SIX=NINE+NINE)的个数ent〇其中的S,1,X,N,E各代表ー个十进制数字。输出语句:printf("cnt=%d\n",ent);ftinclude<stdio.h>#include<stdlib.h>intmain(){intS,I,X,N,E,cnt=0;for(S=l;S<=9;S++)for(1=0;I<=9;1++)for(X=0;X<=9;X++)for(N=1;N<=9;N++)for(E=0;E<=9;E++)if(3*(100*S+10*I+X)==2*(1010*N+100*1+E))cnt++;printf("cnt=%d\n",ent);return0;}选做5.39C减式编程,求解下列算式中各字母所代表的数字并输出。PEAR-ARA PEA#include<stdio.h>ttinclude<stdlib.h>intmain(){intp,e,a,r,n,c,b;for(n二1000;nく二9999;n++){p=n/1000;e=n/100%10;a=n/10%10;r=n%10;c=101*a+10*r;b=100*p+10*e+a;if(n-c==b)break;}printf("pear二%d\n”,n);return0;}选做5.40求A的值求满足A*B=N,使A+B最小,且A,B(A〈二B)为正整数的A的值。输入:正整数N输出:满足条件的A^include<stdio.h>^include<stdlib.h>#include<math.h>intmain(){intn,a,b,i,j;scanf("%d",&n);a=sqrt(n);b=sqrt(n);for(i=a;i>=0;i—){for(j=b;j<=n;j++)-21-{if((n==i*j)&&(n%i==0)&&(n%j==0)&&(i+j>=2*a))break;}if((n==i*j)&&(n%i==0)&&(n%j==0)&&(i+j>=2*a))break;}printf("%d\n",i);return0;}选做5.41求一个三位数,其值等于其各位阶乘之和编写程序,求某三位数,该数值的大小正好是组成这个数的三个位上的数字阶乘之和。输出格式:printf("%d\n",num);#includeくstdio.h>intmain(){inta,b,c,i,j,k,si,s2,s3;for(a=1;aく=9;a++)for(b=l;b<=9;b++)for(c=l;c<=9;c++){sl=l;s2=l;s3=l;for(i=l;i<=a;i++)si・二i;for(j=l;j<=b;j++)s2*=j;for(k=l;k<=c;k++)s3*=k;if(100*a+10*b+c==sl+s2+s3)printf("%d\n”,sl+s2+s3);}}选做5.42谁的饭量大3个人比饭量大小,每人说了2句话。A说:B比我吃得多,C和我吃得一样多。B说:A比我吃得多,A也比C吃得多。C说:我比B吃得多,B比A吃得多。事实上饭量越小的人讲对的话越多。请编写程序按A、B、C的顺序输出3个人的饭量排名(排名越大,饭量越大)〇#include<stdio.h>voidmain(){intA,A1=O,B,B1=O,C,C1=O;for(A=0;A<3;A++)for(B=0:B<3;B++)for(C=0:C<3;C++){Al+=B-A>O?1:O;A1+=(C==A?1:O):Bl+=A-B>O?1:O;B1+=A-C>O?1:0;Cl+=C-B>0?l:0;C1+=B-A>O?1:O;if((A-C)*(C1-A1)>O|I(A-C==0&ftC1-A1==0))if((B-C)*(C1-B1)>O||(B-C==O&&C1-Bl==0))if((B-A)*(Al-Bl)>0|I(B-A==O&&A1-B1=O)){printf("A:%d\n”,A+l);printf("B:%d\n”,B+l);printf(*C:%d\n*,C+l);}Al=0;Bl=0;Cl=0;}}选做5.43跳水排名五位跳水选手将参加10m高台跳水,有好事者让5人据实カ预测比赛结果。A选手说:B第二,我第三。B选手说:我第二,E第四。C选手说:我第一,D第二。D选手说:C最后,我第三。E选手说:我第四,A第一。决赛成绩公布之后,每位选手的预测都只说对一半,清编程输出比赛的实际名次。finclude<stdio.h>voidmain(){inta,b,c,d,e;for(a=l;a<=5;a++)for(b=l;b<=5;b++)for(c=l;c<=5;c++)for(d=l;d<=5;d++)for(e=l;e<=5;e++)if((b=2)+(a==3)==l&&(b=2)+(e=4)=1&&(c=l)+(d=2)==1&&(c=5)+(d=3)=1&&(e=4)+(aニニ1) !=b&&a!二c&&a!二d&&a!二e&&b!二c&&b!二d&&b!二e&&c!二d&&c!=e)//printfぐ%d%d%d%d%d\n*,a,b,c,d,e);printf("第一名是B\n第二名是D\n第三名是A\n第四名是E\n第五名是C\n") 22-选做5.44谁是最好的赛车4名专家对4款赛车进行评论。A说:2号赛车是最好的。B说:4号赛车是最好的。C说:3号不是最佳赛车。D说:B说错了。事实上只有一款赛车最佳,且只有一名专家说对了,其他3人都说错了。请编程输出最佳车的车号,以及哪位专家说对了。Sinclude<stdio.h>intmainO{inti,j,t:for(i=l:i<=4;i++){t=(i==2)+(i==4)+(i!=3)+(i!=4);if(t==l)break;}printf("%d号赛车是最佳赛车'n”,i);if(i==2)printf("A说对了");if(i==4)printf("B说对了");if(i!=3)printf("C说对了");if(i!=4)printf("D专家说得对、n");return0;}选做5.46求小球弹跳的高度小球从一定的高度自由落下,每次落地后反跳回原高度的一半;再落下,编写程序,输入ー个高度(double类型),求它在第!0次落地时,共经过多少米?第!0次反弹多高?(输出结果时保留2位小数)^include"stdio.h"voidmain(){doubles=0.0,h;inti;scanf("%lf",&h);s=h;for(i=l;i<10;i++){s=s+h;h-h/2;}h=h/2;printf("Theis:%.31f\n",s,h);}totalis:%.31f\nThetenth选做5.47ABC各教哪门课A、B、C是小学老师,各教2门课,互不重复。共有如下6门课:语文、算术、政治、地理、音乐和美术。已知:(1)政治老师和算术老师是邻居。(2)地理老师比语文老师年龄大。(3)B最年轻。(4)A经常对地理老师和算术老师讲他看过的文学作品。B经常和音乐老师
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年版:供应链管理服务合同
- 2024年特种门采购合同范本3篇
- 2024年某企业关于知识产权许可的合同
- 马鞍山职业技术学院《安装工程计量计价实训》2023-2024学年第一学期期末试卷
- 2024年文化产业融资借款合同范本大全6篇
- 2025年货运从业资格证模拟试题题库及答案解析
- 2025年货运从业资格证考试题目和答案
- 2025年昆明考货运从业资格证考试题目
- 2024事业单位聘用合同教师(附教育质量监控与管理)3篇
- 2025建筑工程民工劳动合同范文
- 电气专业述职报告
- 腰椎病的中医护理查房
- 2024年湖南省公务员考试《行测》真题及答案解析
- 成都锦城学院《操作系统与nux管理》2022-2023学年期末试卷
- 《弧弦圆心角》说课稿课件
- 中职班级建设三年规划方案
- 河南省郑州市2023-2024学年高二上学期期末考试 物理 含解析
- 2024年中级安全工程师《(建筑施工)安全生产专业实务》考试题库(含答案)
- 弘扬抗战精神课程设计
- 康复护理完整版
- 制氢技术与工艺 课件 第7章 氨制氢
评论
0/150
提交评论