《15级程序设计基础题库(c语言)2_截止到指针_答案版本解析.doc》由会员分享,可在线阅读,更多相关《15级程序设计基础题库(c语言)2_截止到指针_答案版本解析.doc(43页珍藏版)》请在三一办公上搜索。
1、15级程序设计基础题库1、 总共抽11道题,每小题10分,共100分(附加题选做,计入总分,但总分不高于100)。按题型:顺序(1道)、分支(1道)、单循环(2道)、多循环(1道)、数组(1道)、函数(1道)、字符串(1道)、指针(1道) 、数据类型(1道)、附加题(1道)。按难易程度:易(1道)、较易(4道)、较难(4道)、难(1道)。2、考试要求:写代码实现(其中分支(1道)、单循环(2道)、多循环(1道)共四道要求先画出流程图,再根据流程图写代码),理论考试,2个小时。一、顺序结构(10道抽1道,写代码)1、 将华氏温度转化成摄氏温度。公式为:C=(5/9)*(F-32),其中F为华氏温
2、度,C为摄氏温度。请根据给定的华氏温度输出对应的摄氏温度。(易)2、 根据观察,蟋蟀的鸣叫频率与温度有关,具体的公式为T=(c+40)/10.其中,c代表蟋蟀每分钟鸣叫数,T代表华氏温度。请根据蟋蟀每分钟的鸣叫数输出相应的华氏温度。(易)3、 任意输入一个三位数,求这个数每个位上的数。如整数932,个位为2、十位为3、百位为9. (较易)4、 编写程序,定义一个三位整数,求其各位数字之和。如整数932,各位数字之和为14. (较易)5、 编程实现两个整数交换位置,例如:int x = 6,y = 9,交换后 x = 9,y = 6。(较易)6、 已知圆的半径,求圆的面积。(易)7、 已知球的半
3、径,求球的表面积。()(易)8、 已知一个三角形的三边边长分别为a,b,c,利用海伦公式求三角形的面积。(较难)海伦公式:调用 #include 中的sqrt(d)函数,其中参数d为 double 类型。#include #include #define PI 3.1415926void main() double a,b,c,p,s; printf(输入三角形的三边用空格隔开:); scanf(%lf%lf%lf,&a,&b,&c); p = (a+b+c)/2; s = sqrt(p*(p-a)*(p-b)*(p-c); printf(面积为:%lfn,s);9、 求两数平方和的算术根。(
4、较易)10、 给定一段时间求出它的秒数。(如计算2小时 17分30秒等于多少秒)(较易)二、分支结构(10道抽1道,要求画出流程图再写代码)11、 从键盘输入三个数a,b,c,将a,b,c按从大到小的顺序输出。(较易)#include void main ()int a,b,c,t; / 先把最大的排在最左边printf(请输入a,b,c三个整数n);scanf(%d%d%d,&a,&b,&c);if(ab)/交换 a和b的值t=a;a=b;b=t;if(ac)/交换a和ct=a;a=c;c=t;if(bc)/交换b和c的值t=b;b=c;c=t;printf(输出a,b,c最大值重新排序之后
5、的顺序::%d,%d%,%dn,a,b,c);12、 两个整数比较大小,输出较大值。(易)#include void main ()/两个整数比较大小,输出较大值int i,j,max;printf(请输入两个两个整数:n);scanf(%d%d,&i,&j);if (ij)max=i;elsemax=j;printf(输出两个数的最大值max::%dn,max);13、 三个整数比较大小,输出最大值。(较易)#include void main ()/三个整数比较大小,输出最大值int x,y,z,max;printf(请输入三个整数:n);scanf(%d%d%d,&x,&y,&z);if
6、(xy) /x和在再进行比较if(xz)max=x;elsemax=z;else/y和z再进行比较if(yz)max=y;elsemax=z;printf(输出三个数的最大值max::%dn,max);14、 铁路托运行李规定:行李重不超过50公斤的,托运费按每公斤。0.15元计费,如超50公斤,超过部分每公斤加收0.10元。编一程序完成自动计费工作。(较易)#include void main ()double weight;/定义行李重量double charge;printf(请输入行李的重量n);scanf(%lf,&weight);if(weight=50)/根据行李重量计算费用ch
7、arge = weight*0.15;elsecharge = 50*0.15+(weight-50)*0.25;printf(费用为:%lfn,charge);15、 判断某个整数是否为水仙花数。(水仙花数是一个三位数,该数各位的立方和等于 该数本身。例如153是一个水仙花数,因为153 = 13 + 53 + 33)(较难)#include void main ()int year;scanf(%d,&year);if (year%4=0 & year%100 !=0) | year%400=0)printf(%d年是润年n,year);elseprintf(%d年不是润年n,year);
8、16、 判断某年是否为闰年。(闰年的条件是:该年的年号能被4整除且不能被100整除,或该年的年号能被400整除,则该年是闰年,否则不是闰年。)(较易)#include void main ()int year;scanf(%d,&year);if (year%4=0 & year%100 !=0) | year%400=0)printf(%d年是润年n,year);elseprintf(%d年不是润年n,year);17、 求下列函数中y的值。(较易)y=10 (x=0)y=3x+5 (x0)y=x-2 (x0)#include void main () double x,y; scanf(%
9、lf,&x);if (x=0)y=10;else if (x0)y=3*x+5;elsey=x-2;printf(输入x的值%lf后,函数y的值为:%lf,x,y);18、 根据某同学的成绩,判定其成绩的等级。(90100分为“优秀”,8089为“良好”,7079为“中等”,6069为“及格”,60分以下为“不及格”。)(较难)#include void main ()float s;printf(请输入某个同学的成绩:n);scanf(%f,&s);if (s=0)printf(成绩的等级为:不及格n);else if (s=60 & s=70 & s=80 & s=90 & s=100)p
10、rintf(成绩的等级为:优秀n);elseprintf(输入成绩有误,请收入有效成绩!n);19、 某超市为了促销,规定:购物不足50元的按原价付款,超过50不足100的按九折付款,超过100元的,超过部分按八折付款。编一程序完成超市的自动计费的工作。(较易)#include void main ()float money;scanf(%f,&money);if (money =50 & money =100)money=100 * 0.9 + (money-100) * 0.8;/题目表述不清晰,按照常理来做printf(自动计费后付款金额为:%fn,money);20、 编写一个程序,功
11、能是从键盘输入14中的某一个数字,由电脑打印出其对应的季节的英语名称。spring summer autumn winter(较难)#include void main ()short int x;printf(请输入1-4整数:); scanf(%d,&x);switch(x)/根据x的值输出 spring summer autumn wintercase 1:printf(springn);break;case 2:printf(summern);break;case 3:printf(autumnn);break;case 4:printf(wintern);break;default:
12、printf(输入的值有误,请输入一个按照题意要求的整数n);三、单循环(10道抽2道,要求画出流程图再写代码)21、 求1到100的累加和。(较易)#include void main() int i,sum=0;for (i=1;i=100;i+)sum += i;printf(sum=%dn,sum);22、 求1000以内所有能被5整除的整数的和。(较易)#include void main() int i,sum=0;for (i=1;i=1000;i+)if (i%5=0)sum += i;printf(sum=%dn,sum);23、 求10的阶乘。(较易)/*#include
13、void main() int i,sum=1;for (i=10;i0;i-)sum *= i; printf(sum=%dn,sum); */#include void main() int i,sum=1;for (i=1;i=10;i+)sum = sum * i;printf(sum=%dn,sum);24、 输出26个小写英文字母。(较易)#include void main() char s=a-1;for (int i=1;i=26;i+)/s = s + 1;printf(%ct,s+i);/printf(n);putchar(n);25、 统计1000以内所有能被7整除的数
14、。(较易)#include void main() for (int i=1;i=1000;i+)if (i%7 = 0)printf(%dt,i);/printf(n);putchar(n);26、 统计1000以内所有能被2整除又能被5整除的数。(较难)#include void main() for (int i=1;i=1000;i+)if (i%2 = 0 & i%5 = 0)printf(%dt,i);/printf(n);putchar(n);27、 打印100以内所有能被3整除的数,每5个数打印一行。(较难)#include void main() int j=0;for (i
15、nt i=1;i=100;i+)if (i%3 = 0)printf(%dt,i);j+;/每打印一个数 记录一次if (j %5 = 0)/满5个数时输出换行putchar(n);putchar(n);28、 判断某个整数是否为素数。(素数是一个大于1且只能被1和它本身整除的整数)(较难)#include void main()int i,j;/输入一个整数i,判断是否为素数scanf(%d,&i); for(j=2;j=i;j+) if(i%j=0) break;/j从2开始增,一旦j能整除i则退出 if(i=j)/判断那个最小因数是不是i本身,是则为素数,否则不是。 printf(%d是
16、素数!n,i); else printf(%d不是素数!n,i); 29、 判断某个整数是否为完全数。(完全数:所有小于该数本身的因子之和等于该数本身,例如6是一个完全数,因为,6=1+2+3)(较难)#include void main() int i,j,sum;/请输入一个整数i.scanf(%d,&i);sum=0; for (j=1;ji;j+) if (i%j=0) sum=sum+j; if(i=sum)printf (%d是一个完全数!n,i); elseprintf (%d不是一个完全数!n,i); 30、 输出1000以内的所有水仙花数。(水仙花数是一个三位数,该数各位的立
17、方和等于该数本身。例如153是一个水仙花数,因为153 = 13 + 53 + 33)(较难)#include #include void main() int gw,sw,bw,sum;for (int i=100;i1000;i+)gw=i%10;sw=i/10%10;bw=i/100;sum = pow(gw,3) + pow(sw,3) + pow(bw,3);if (i=sum)printf(%dt,i);putchar(n);31、 编写程序读入整数并求它们的总和与平均值。输入0时程序结束。(较难)#include void main()float sum=0; /求和变量floa
18、t p=0;/平均值inti=0;int a;scanf(%d,&a);while(a!=0)sum = sum + a;printf(请继续输入一个数值,输入0时结束。);scanf(%d,&a);i=i+1;p = sum/i;printf(总输入个数:i=%d ,总和:sum=%f,平均值:p=%f ,i,sum,p);32、 用while循环,求n的平方大于12000的最小数n。(难)#include void main()int n=1;while(n0)if( n*n 12000)break;n+;printf(最小n=%d,n);33、 求1+1/2+1/3+1/n10,n的值至
19、少为多大。(难)#include void main ()double sum=0;int n=0;int i=1;do sum = sum + 1.0/i;i+;n+; while (sum =10);printf(n的值至少等于:%d,n);/12367#include void main()double sum=0;int n=0;for (int i=1;sum =10;i+)sum = sum + 1.0/i;n+;printf(n的值至少等于:%d,n);34、 本金10000元存入银行,年利率千分之3,每过1年,本金和利息作为新的本金,5年后,总共有多少钱?(较易)#includ
20、e void main()double money=10000;for (int i=1;i=5;i+)money = money * (1 + 0.003);printf(%.2lfn,money);35、 斐波那契数列的第1和第2个数分别为1和1,从第三个数开始,每个数等于其前两个数之和(1,1,2,3,5,8,13.).编写一个程序输出斐波那契数列中的前20个数。(较难)#include void main()int a1=1,a2=1,ai=0;for (int i=1;i=20;i+)if (i=2)printf(1t);else /从低三个数开始等于前两个数之和ai=a1+a2;/
21、每次循环输出的数printf(%dt,ai);a1=a2;a2=ai;36、 一个球从100米高自由落下,每次落地后,反弹回原高度的一半,再落下,再反弹。求它第10次落地后反弹多高?(较易)#include void main()double h=100;for (int i=1;i=10;i+)h = h /2.0;printf(%lfn,h);37、 有1020个西瓜,第一天卖掉一半多两个,以后每天卖剩下的一半多两个,问几天后可以卖完,请编程计算。(较难)#include void main() int i, all = 1020; for (i=0;all0;i+) all = all/
22、2-2; printf(%dn, i);或者#include void main()int x=1020;int m=0;while (x0)m+;/记录卖的天数/每次卖完后计算剩下多少个西瓜,是循环趋于结束的标志x=x-(x/2 +2); printf(西瓜总计卖的天数:m=%d天n,m);38、 有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。求这堆零件总数。(难)#include void main()for (int i=100;i=200;i+)if ( (i-2)%4=0 & (i-3
23、)%7=0 & (i-5)%9=0 )break;printf(零件总数=%dn,i);39、 输出1至100之间每位数的乘积大于每位数的和的数。(较难)#include void main()int gw,sw,bw;int sum=0,xsum=0;for (int i=1;i=1 & i=10 & i sum)printf(%dt,i);elsesum = 1+0 +0;xsum = 1*0*8;40、 求s=a+aa+aaa+aaaa+aaaaa的值。其中a是接收键盘输入的19中的某个数字。例如:输入2按回车,求2+22+222+2222+22222的值。(难)#include voi
24、d main() int a;int s=0;printf(请输入19中的某个数字a=);scanf(%d,&a);for(int i=1;i=5;i+)switch (i)case 1:s = s + a;break;case 2:s = s + (10*a + a);break;case 3:s = s + (100*a +10*a + a);break;case 4:s = s + (1000*a+100*a +10*a + a);break;default : s = s + (10000*a +1000*a+100*a +10*a + a);printf(s=%dn,s);四、多重循
25、环(10道抽1道,要求画出流程图再写代码)41、 打印5行5列的星号图形(较易)*#include int main() int i,j; for (i=1;i=5;i+) for (j=1;j=5;j+) printf (*);if (j%5=0)printf (n); printf(n); return 0;其实用单循环也能实现,但是题目告诉的要求用多循环:#include int main() int i,j;for (j=1;j=25;j+) printf (*);if (j%5=0)printf (n); printf(n); return 0;42、 打印图形(较难)1223334
26、44455555#include int main() int i,j; for (i=1;i=5;i+) for (j=1;j=i;j+) printf (%d,i); printf(n); return 0;43、 打印字母图形(较难)ABBBCCCCCDDDDDDDEEEEEEEEE#include int main() int i,j;int m=1;char s=A; for (i=1;i=5;i+) for (j=1;j=m;j+) printf (%c,s); s=s+1;/字符变量 +1m=m+2; /控制二重循环输出字符的个数,规律是上一次 +2;printf(n);/输出完
27、后进行换行 return 0;44、 打印图形(较难)112123123412345#include int main() int i,j; for (i=1;i=5;i+) for (j=1;j=i;j+) printf (%d,j); printf(n); return 0;45、 打印字母图形(较难)AABABCABCDABCDE#include int main() char s=A; for (int i=1;i=5;i+)s=A; for (int j=1;j=i;j+) printf (%c,s+j-1); printf(n);/输出完后进行换行 return 0;46、 打印九
28、九乘法表,形式如下:(难)1*1=11*2=22*2=41*3=32*3=63*3=91*4=42*4=83*4=124*4=161*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*7=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81#include int main() for (int i
29、=1;i=9;i+) for (int j=1;j=i;j+) printf (%d*%d=%dt,j,i,j*i); printf(n);/输出完后进行换行 return 0;47、 打印九九乘法表,形式如下:(难)1*1=11*2=2 1*3=3 1*4=41*5=5 1*6=61*7=71*8=81*9=92*1=22*2=42*3=6 2*4=82*5=102*6=122*7=142*8=162*9=183*1=33*2=63*3=93*4=123*5=153*6=183*7=213*8=243*9=274*1=44*2=84*3=124*4=164*5=204*6=244*7=284
30、*8=324*9=365*1=55*2=105*3=155*4=205*5=255*6=305*7=355*8=405*9=456*1=66*2=126*3=186*4=246*5=306*6=366*7=426*8=486*9=547*1=77*2=147*3=217*4=287*5=357*6=427*7=497*8=567*9=638*1=88*2=168*3=248*4=328*5=408*6=488*7=568*8=648*9=729*1=29*2=189*3=219*4=369*5=459*6=549*7=639*8=729*9=81#include int main() for
31、(int i=1;i=9;i+) for (int j=1;j=9;j+) printf (%d*%d=%dt,i,j,i*j); printf(n);/输出完后进行换行 return 0;48、 打印100以内的所有素数。(素数是一个大于1且只能被1和它本身整除的整数)(难)#include void main()int i,j;for(i=2;i=100;i+) for(j=2;ji;j+) if(i%j=0) break;/j从2开始增,一旦j能整除i则退出,也就是说退出循环时j是i的大于1的最小因数 if(i=j)/判断那个最小因数是不是i本身,是则为质数,否则为合数 printf(%
32、dn,i); 49、 打印1000以内的完全数。(完全数:所有小于该数本身的因子之和等于该数本身,例如6是一个完全数,因为,6=1+2+3)(难)#include #include void main(void) int i,j,m,s; for (i=2;i=1000;i+) s=0; for (j=1;ji;j+) m=i%j; if (m=0) s=s+j; if(i=s) printf (完全数有%d,i); system (pause);50、 求1!+2!+3!+10!。(难)#include void main() int x,y=0; int i,j; for(i=1;i=10
33、;i+) x=1; for(j=1;j=i;j+) x= x*j; y=y+x; printf(阶乘的结果:1!+2!+3!+.+10!=%d,y); 单循环:#include void main()long a=1,n,s=0;for(n=1;n=10;n+)a*=n;/*求阶乘*/s+=a;/*求和*/printf(%ldn,s);五、数组(10道抽1道,写代码)51、 定义一个长度为10的整型数组,其值为21,45,38,66,73,14,55,99,85,10,并将其每个元素全部输出显示。(较易)#include void main() int a10=21,45,38,66,73,14,55,99,85,10;for (int i=0;i10;i+)printf(%d ,ai);putchar(n);52、 定义一个长度为10的整型数组,其值为21,45,38,66,73,14,55,99,85,10,并将其每个元素逆序输出显示。(较易)#include void main() int a10=21,45,38,66,73,14,55,99,85,10;for (int i=9;i=0;i-)printf(%d ,ai);putchar(n);53、 定义一个长度为10的整型数组,其值为21,45,