《C语言程序设测试二及答案(共12页).doc》由会员分享,可在线阅读,更多相关《C语言程序设测试二及答案(共12页).doc(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上C语言程序设计期末考试试题及其答案一、单项选择题(本大题共20题,每题1 分,共20分)1、一个C程序的执行是从( A )。 A本程序的main函数开始,到main函数结束 B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C本程序的main函数开始,到本程序文件的最后一个函数结束 D本程序文件的第一个函数开始,到本程序main函数结束2、以下不正确的C语言标识符是 ( D )A、 ABC B、 abc C、 a_bc D、 ab.c3、一个C语言程序是由 ( B )A、 一个主程序和若干子程序组成B、 函数组成C、 若干过程组成D、 若干子程序组成4、以
2、下能对一维数组a进行初始化的语句是: ( C ) A. int a5=(0,1,2,3,4,) B. int a(5)= C. int a3=0,1,2 D. int a5=10*15、 设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为 ( C )A、 int B、 float C、 double D、 不确定6、C语言中函数返回值的类型是由 ( A ) 决定的. A、函数定义时指定的类型 B、 return语句中的表达式类型 C、调用该函数时的实参的数据类型 D、 形参的数据类型7、有如下程序,输入数据:12345M678cR后(表示回车),x的值是 ( B )
3、 。#includemain()int x;float y;scanf(%3d%f,&x,&y);A、 12345 B、 123 C、 45 D、 3458、设有以下说明语句: typedef struct stu int a; float b; stutype; 则下面叙述中错误的是( D )。A、struct是结构类型的关键字 B、struct stu是用户定义的结构类型 C、a和b都是结构成员名D、stutype是用户定义的结构体变量名 9、若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是: (D )A、p=q B、*p=*q C、n=*q D、p=n 10、已知c
4、har x=hello, y=h,e,a,b,e;, 则关于两个数组长度的正确描述是 ( B ) .A、相同 B、x大于y C、x小于y D、以上答案都不对11、下列代码输出的是 ( C )main()int a5=1,2,3,4,5;int *ptr = (int *)(&a+1);printf(%d,%d,*(a+1),*(ptr-1);A、 2,3 B、 2,4 C、 2,5 D、 输出错误12、有以下程序main() int a=1, b=3, c=5; int *p1=&a, *p2=&b, *p=&c; *p =*p1*(*p2); printf(%dn,c);执行后的输出结果是(
5、 C )A、1B、2C、3D、413、有以下程序段 #include int main() int x = 10, 20, 30; int *px = x; printf(%d, +*px); printf(%d, *px); px = x; printf(%d, (*px)+); printf(%d, *px); px = x; printf(%d, *px+); printf(%d, *px); px = x; printf(%d, *+px); printf(%dn, *px); return 0;程序运行后的输出结果是( A ) A、11,11,11,12,12,20,20,20 B、
6、20,10,11,10,11,10,11,10C、11,11,11,12,12,13,20,20 D、20,10,11,20,11,12,20,20 14、如果在C程序中有main(intargc,char*argv),那么( D)是指命令行中的参数个数。 A、argvB、argvC、argc,argvD、argc15、以下关于typedef的叙述不的是(B)A用typedef可以定义各种类型名,但不能用来定义变量B用typedef可以增加新类型C用typedef只是将已存在的类型用一个新的名称来代表D用typedef便于程序的通用16、下面程序的运行结果是( C )#includemain(
7、)int num=0;while(num=a&ch=A&ch=0&ch=9 )printf(It is a digit charactern);else if( ch= )printf(It is a space charactern); else printf(It is other charactern); 2、 若输入字符串:abcde,则以下while循环体将执行_0_次.while(ch=getchar()=e)printf(*);3、若有定义:chars=china;则C编译系统为数组s开辟_6_个字节的内存单元.4、下列程序运行后的输出结果是 _* * * * * * *_#in
8、cludemain()int i,j;for(i=4;i=1;i-)printf(*);for(j=1;j=4-i;j+)printf(*);printf(n);5、若有定义:int a34=1,2,0,4,6,8,10;则初始化后,a12得到的初值是_0_ a21得到的初值是 _6_6、在C语言中,二维数组元素的内存中的存放顺序是_按行主顺序存放_三、程序分析题(本大题共4题,每题2分,共8分,写出程序执行结果)1、#includemain( )int a,s,n,count;a=2;s=0;n=1;count=1;while(count=7) n=n*a; s=s+n; +count;pr
9、intf(“s=%d”,s); 功能:求S=0+2+4+8+16+32+64+128 和。输出结果:s=2542、#includemain()int a33=1,3,5,7,9,11,13,15,17,sum=0,i,j;for (i=0;i3;i+)for(j=0;j3;j+)if (i=j) sum=sum+aij;printf(“sum=%dn”,sum); 功能:出矩形阵a的主对角线上的元素之和。输出结果:27 3、#include main() char grade=C; switch(grade) case A: printf(“90-100n”); case B: printf(
10、“80-90n”);case C: printf(“70-80n”);case D: printf(“60-70n”); break;case E: printf(“60n”); default : printf(“error!n”); 注:L十进制为7670-8060-704、#include int m33=1,2,3;int n33=1,2 ,3;main( ) printf(“%d,”, m10+n00); printf(“%dn”,m01+n10);3,0四、编程题(本大题共10题,每题6分,共60分)1、编写摄氏温度、华氏温度转换程序。要求:从键盘输入一个摄氏温度,屏幕就显示对应的
11、华氏温度,输出取两位小数。转换公式:F=(C+32)9/5 。#include stdafx.h#include int main()float c,f;printf(input c:); scanf(%f,&c); f= (c+32.0)*9.0/5.0; printf(F=%.2f n,f); system(pause);2、试编程判断输入的正整数是否既是5又是7的正倍数。若是,则输出yes;否则输出no。#include stdafx.h#include int main()int x;scanf(%d,&x); if(x%5=0&x%7=0) printf(yes);elseprint
12、f(no);system(pause);3、判断数m是否为素数(只能被1和它本身整除的整数)?#include stdafx.h#include int main()bool isPrime(unsigned long); int m; printf(input m:); scanf(%d,&m); if(isPrime(m) printf(m is a prime number!n); elseprintf(m is not a prime number!n);system(pause);bool isPrime(unsigned long n)if (n 1; else if (n % 2
13、 = 0 | n % 3 = 0) return false; else for (unsigned short i = 5; i * i = n; i += 6) if (n % i = 0 | n % (i + 2) = 0) return false;return true;4、 对15个数进行排序,按从小到大的顺序输出。#include stdafx.h#include int main()int i,j,a15,t;printf(input 15 numbers:n);for(i=0;i15;i+)scanf(%d,&ai);for(j=0;j14;j+)for(i=0;iai+1)
14、t=ai;ai=ai+1;ai+1=t;for(i=0;i15;i+)printf(%5d,ai);printf(n);system(pause);5、(*)编程输出如下图形(不能仅用printf语句): * * * * * * * * * * * * * * * * * * * * * * * *#include stdafx.h#include int main()int i,k,j;for(i=0;i=4;i+)for(j=0;j4-i;j+)printf( );for(k=0;k=2*i;k+)printf(*);printf(n);system(pause);6、请编程序将“Chin
15、a”译成密码,密码规律是:用原来的字母后面第4个字 母代替原来的字母。例如,字母”A”后面第4个字母是”E”,用”E”,用E代替A,因此,”China”应译为”Glmre”.请编写一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为China,经过运算,使c1,c2,c3,c4,c5分别变成Gimre.分别用putchar函数和printf函数输出这5个字符。Printf#include stdafx.h#include int main()char c1=C,c2=h,c3=i,c4=n,c5=a;printf(%c%c%c%c%c,c1+4,c2+4,c3+4,c4+4
16、,c5+4);system(pause);Putchar#include stdafx.h#include int main()char c1=C,c2=h,c3=i,c4=n,c5=a;putchar(c1+4);putchar(c2+4);putchar(c3+4);putchar(c4+4);putchar(c5+4);system(pause);7、有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少#include stdafx.h#include int main()int count =0;for(int i=1;i5;i+)for(int j=1;j5;j
17、+)for(int n=1;n5;n+)if(i!=j&i!=n&j!=n)printf(%d%d%d%n,i,j,n);count+;printf(一共有%dn,count);system(pause);8、 请编写程序,输出以下扬辉三角形( 要求输出10行)。第一种#include stdafx.h#include # define N 10int main()int i,j;int aNN;for(i=1;iN;i+)ai1=1; / 每行第一个输出1aii=1; /每行末尾输出1for(i=3;iN;i+)for(j=2;j=i-1;j+)aij=ai-1j-1+ai-1j; /第i行
18、j列的数等于他低下一行的相邻左右数的和。 for(i=1;iN;i+)for(j=1;j=N-i-1;j+)printf( ); /输出三角 前面用空格填充for(j=1;j=i;j+)printf(%4d,aij);/输出三角数值printf(n); /换行printf(n); system(pause);第二种#include stdafx.h#include #define M 10#define N 10int main()int aMN,i,j;for(i=0;iM;i+)for(j=0;j=i;j+)if(j=0|j=i) aij=1;elseaij=ai-1j-1+ai-1j;f
19、or(i=0;iM;i+)for(j=0;j=i;j+)printf(%4d,aij);printf(n);system(pause);9、 写一程序,要求用户在键盘上输入一个整数,并把每位数字转换为英文。例如:输入1024时,输出One Zero Two Four#include stdafx.h#include int main()long int n;int m,i=0,c10;scanf(%ld,&n);dom=n%10;i+;ci=m;printf(%5d%5d%5dn,i,m,ci);while (n/=10)0);while(i=1)i-;switch(ci+1)case 0:
20、printf(zero);printf( );break;case 1: printf(one);printf( ); break; case 2: printf(two);printf( ); break;case 3: printf(three);printf( );break;case 4: printf(four);printf( );break;case 5: printf(five);printf( );break;case 6: printf(six);printf( ); break;case 7: printf(seven);printf( ); break;case 8:
21、printf(eight);printf( ); break;case 9: printf(nine);printf( ); break;default:printf(no);system(pause);10、 请编程,从键盘输入6名学生的5门成绩,分别统计每个学生的平均成绩。(在主函数中输入输出,子函数求平均成绩)#include stdafx.h#include int main()double pingjun(double,int);int r,c,i,j;double tmp,sum10;r=6;/6 studentsc=5;/5 subjectsfor(i=1;i=r;i+)printf(请输入第%d个学生的所有成绩n,i);for(sumi=0,j=0;jc;j+)scanf(%lf,&tmp);sumi+=tmp;for(i=1;i=r;i+)printf(the average of student %d is: %0.3lfn,i,pingjun(sumi,c);system(pause);return 0;double pingjun(double sum,int n)sum = sum /n;return sum;专心-专注-专业