公共选修课复习题.docx
- 文档编号:24053873
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:26
- 大小:22.39KB
公共选修课复习题.docx
《公共选修课复习题.docx》由会员分享,可在线阅读,更多相关《公共选修课复习题.docx(26页珍藏版)》请在冰豆网上搜索。
公共选修课复习题
公共选修课“C语言程序设计”复习题
1.温度转换
背景:
经常出国旅行的驴友都知道,需要时时了解当地的气温状况,但不少国家采用了不同的温度计量单位:
有些使用华氏温度标准(F),有些使用摄氏温度(C)。
现在,请你根据温度转换公式设计一个温度转换程序,可以进行温度转换。
如果输入摄氏温度,显示转换的华氏温度;如果输入华氏温度,显示转换的摄氏温度。
温度转换的公式为:
F=(C×9/5)+32;C=(F-32)×5/9;式中F--华氏温度,C--摄氏温度。
编程:
输入:
第一个数据(1或2)确定转换的类型:
华氏转摄氏
(1);摄氏转华氏
(2);
第二个数据是相应需要转换的温度值。
输出:
相应的转换后的温度值(保留小数点后2位)。
#include
voidmain()
{
intlx;
doublef,c;
scanf("%d",&lx);
if(lx==1){
scanf("%lf",&f);
c=(f-32)*5/9;
printf("TheCentigradeis%.2f\n",c);
}
else{
scanf("%lf",&c);
f=(c*9/5)+32;
printf("TheFahrenheitis%.2f\n",f);
}
}
2.分段函数
有一分段函数,y=f(x)。
当x小于6时,y=x-12;
当x大于等于6且小于15时,y=3x-1;
当x大于等于15时,y=5x+9.
编程:
从键盘上输入一个整数x,输出对应的y值。
#include
voidmain()
{
intx,y;
scanf("%d",&x);
if(x<6)
y=x-12;
elseif(x<15)
y=3*x-1;
else
y=5*x+9;
printf("%d\n",y);
return0;
}
3.整数位数判断
输入一个不多于5位的正整数,要求编写程序:
(1)求它是几位数,并输出;
(2)逆序打印出各位数字。
#include
#include
#defineSIZE5
int
main(void)
{
intbit_count;//位数
longintinput_num;//输入数
intresult[SIZE];//存放各个位的数
inti;
scanf("%ld",&input_num);
if(input_num<0||input_num>99999){
printf("Invalidinput\n");
exit
(1);
}
for(bit_count=0;input_num;++bit_count){
result[bit_count]=input_num%10;
input_num/=10;
}
printf("%d\n",bit_count);
for(i=0;i printf("%d",result[i]); printf("\n"); exit(0); } 4.四位数拆分 编程: 输入一个四位数,判断千位、百位、十位和个位数字之和是否为偶数,如果是,则输出Yes,如果不是,则输出No;如果不是四位数,则输出Invaliddata。 #include voidmain() { intx,a,b,c,d,e; scanf("%d",&x); if(x/1000<1||x/10000>=1) 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\n"); else printf("No\n"); 5.花多少钱买衣服 周末商场促销呢,某品牌服装既可以买套装,也可以买单件。 若买的不少于50套,每套80元;不足50套的每套90元,只买上衣每件60元,只买裤子每条45元。 编写程序,输入计划购买的上衣数量a和裤子的数量b,计算并输出应该付的款m。 #include 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 y=90*a+(b-a)*45; if(a=50) y=80*a+(b-a)*45; printf("%d\n",y); } 6.到邮局去寄包裹 你去邮局给朋友寄礼物。 发现邮局对邮寄包裹的费用是这样规定的: 如果包裹长宽高任意一个尺寸超过1米,或重量超过30千克,不予邮寄;对可以邮寄的包裹每件收手续费0.2元,不同重量的邮资按下表计算: 重量(千克) 收费标准(元) 小于10 0.80 大于等于10但不超过20 0.75 大于等于20但不超过30 0.70 编写程序,输入包裹的长、宽、高尺寸和重量,输出所需的邮资(输出结果中包含两位小数即可),超出尺寸或重量的输出"Error”. #include voidmain() { floata,b,c,m,y; scanf("%f,%f,%f,%f",&a,&b,&c,&m); if(a>1||b>1||c>1||m>30) printf("Error\n"); else{ if(m<10) y=0.80*m+0.2; elseif(m<20) y=0.75*m+0.2; else y=0.70*m+0.2; printf("%.2f\n",y); } } 7.输出星期几的英文表示 输入用数字(1--7)表示的星期几,输出星期几的英文表示,输入的数字有误,输出单词"Error(回车)"。 #include voidmain() { inta; scanf("%d",&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; case7: printf("Sunday\n");break; default: printf("Error\n"); } } 8.输出一行星号 编写程序在一行中输出N个星号。 输入: N值 输出: 一行中N个星号 #include intmain() { intn,i; scanf("%d",&n); for(i=0;i putchar('\n'); return0; } 9.最大公约数 输入两个正整数m和n,求它们的最大公约数和最小公倍数 比如,输入m和n的值分别为14和21,则最大公约数为7,最小公倍数为42。 #include voidmain() { intm,n,i,j; scanf("%d%d",&m,&n); for(i=m;i>=1;i--) { if(n%i==0&&m%i==0) {printf("thegreatestcommondivisoris%d\n",i);break; } } for(j=m;;j++) { if(j%m==0&&j%n==0) {printf("theleastcommonmultipleis%d\n",j);break; } } } 10.水仙花数 输出所有的水仙花数。 所谓的水仙花数是指一个3位数,其各位数字立方和等于该数本身。 例如153是一水仙花数,因为153=13+53+33 输出语句: printf("%d\n",n); #include voidmain() { intn,i,j,k; for(n=100;n<=999;n=n+1) { i=n/100;//取出n的百位数 j=(n/10)%10;//取数n的十位数 k=n%10;//取出n的个位数 if(n==i*i*i+j*j*j+k*k*k) printf("%d\n",n); } } 11.完数 一个数如果恰好等于它的因子之和,这个数就称为完数。 例如,6的因子为1,2,3,且6=1+2+3,因此6是完数,从键盘上输入一个正整数,判断其是否为完数。 如果是,则按照如下格式输出。 比如,输入6,则输出Yes,itsfactorsare123;如果输入8,则输出No #include #include intmain() { intn,i,c,sum=0; scanf("%d",&n); for(i=1;i { if(n%i==0) sum=sum+i; } if(n==sum) { printf("Yes,itsfactorsare"); for(c=1;c { if(n%c==0) printf("%d",c); } printf("\n"); } else printf("No\n"); } 12.素数 输入两个正整数m和n,求出[m,n]区间的所有素数 #include #include voidmain() {intm,n,i,j,k; scanf("%d%d",&m,&n); for(i=m;i {k=sqrt(i); for(j=2;j<=k;j++) if(i%j==0) break; if(j>k) printf("%d",i); } printf("\n"); } 13.找出最大素数 素数是指一个只能被1和它本身整除的数,在数论中占有重要的研究地位,在当代密码学中也被广泛应用。 输入: 取值范围 输出: 该范围内的最大素数 #include intmain() { inta,i,j; scanf("%d",&a); for(i=a;i>1;i--) { for(j=2;j { if(i%j==0) break; } if(j==i) { printf("%d\n",i); break; } } } 选做5.18求亲密数 若正整数A的全部约数(包括1,不包括A本身)之和等于B;且整数B的全部约数(包括1,不包括B本身)之和等于A,则A、B为亲密数。 编程,输入正整数A,输出亲密数A,B(A<=B),若不存在亲密数,则输出Nooutput。 例如: 220和284就是一对亲密数。 220的约数是: 1、2、4、5、10、11、20、22、44、55、110,约数之和是284;284的约数是: 1、2、4、71、142,约数之和是220。 #include #include intmain() { intn,a,b=0,c=0; scanf("%d",&n); for(a=1;a { if(n%a==0) { b=a+b; } } for(a=1;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。 #include #include intmain() { intm,n,a,b=1,c; scanf("%d%d",&m,&n); for(a=1;a<=n;a++) { b=b*m; b=b%1000; } printf("Thelast3digitsof%d**%dis: %d\n",m,n,b); return0; } 选做5.20阶乘尾数零的个数 输入一个正整数n,求其阶乘尾数0的个数。 比如,输入n的值为100,则其阶乘尾数0的个数为24。 #include #include intmain() { intn,a,b,c; scanf("%d",&n); a=n/25; b=n/5; c=a+b; printf("Thenumberof0intheendof%d! is: %d.\n",n,c); return0; } 14.看看是谁做的好事 某四位同学中有一个做了好事,不留名,表扬信来了,校长问是谁做的好事.以下四个人中有三个人说的是真话. A说: 不是我 B说: 是C C说: 是D D说: 他说的不对! 编写程序: 输出是谁做的好事,只输出对应的大写字母,输出格式printf("%c\n",ch); 。 #include #include intmain() { charch; for(ch='A';ch<='D';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); if(ch! ='A'&&ch=='C'&&ch=='D'&&ch=='D') printf("%c\n",ch); } } 选做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 #include 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>=1&&A+E+F>=2&&A+D==1&&(B+C==0||B+C==2)&&C+D==1&&(D+E==0||D+E==2)) { if(A==1) printf("A: 是罪犯\n"); if(A==0) printf("A: 不是罪犯\n"); if(B==1) printf("B: 是罪犯\n"); if(B==0) printf("B: 不是罪犯\n"); if(C==1) printf("C: 是罪犯\n"); if(C==0) printf("C: 不是罪犯\n"); if(D==1) printf("D: 是罪犯\n"); if(D==0) printf("D: 不是罪犯\n"); if(E==1) printf("E: 是罪犯\n"); if(E==0) printf("E: 不是罪犯\n"); if(F==1) printf("F: 是罪犯\n"); if(F==0) printf("F: 不是罪犯\n"); } return0; } 抓交通肇事犯 一辆卡车违反交通规则,撞人后逃跑。 现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。 甲说: 牌照的前两位数字是相同的;乙说: 牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说: 四位的车号刚好是一个整数的平方,请根据以上线索求出车号。 #include #include intmain() { inta,b,c,n; for(a=0;a<=9;a++) for(b=0;b<=9;b++) if(a! =b) { n=1100*a+11*b; for(c=30;c<1000;c++) if(n==c*c) printf("Thelicenseplateis: %d\n",n); } return0; } 15.计算SUM的值 已知公式: SUM=1+1/2+1/3+1/4+...+1/n 输入: n 输出: 表达式sum的值。 结果保留6位小数 #include intmain() { inti,n; floats=0.0,t; scanf("%d",&n); for(i=1;i<=n;i++) { t=1.0/i; s+=t; } printf("sum=%.6f\n",s); return0; } 16.迭代法 用迭代法求.求平方根的迭代公式为: 要求前后两次求出的x的差的绝对值小于10-5。 #include #include intmain() { doublex1,x2,a; scanf("%lf",&a); { x2=1.0; do { x1=x2; x2=0.5*(x1+a/x1); } while(fabs(x2-x1)>=1e-5); printf("Thesquarerootof%.2fis%.5f\n",a,x2); } return0; } 17.谁能出线 背景: 电视台举办“超级学生”才艺大赛,由于报名人数狂多,所以要先进行分组预赛。 按规定,每10名学生为一个预赛小组,评委打出分数(0~100分),各小组第一名可以进入下一轮;如果有多名学生得分相同都是第一名,则可同时进入下一轮。 输入: 按顺序给出一个小组10个人的最后得分(int)。 输出: 能够出线的学生序号(0~9)。 #include #defineN10 intmain() { inta[N]; inti,max; for(i=0;i<=9;i++) { scanf("%d",&a[i]); } max=a[0]; for(i=0;i<=9;i++) {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 公共 选修课 复习题