C语言程序设测试二及复习资料_第1页
C语言程序设测试二及复习资料_第2页
C语言程序设测试二及复习资料_第3页
C语言程序设测试二及复习资料_第4页
C语言程序设测试二及复习资料_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计期末考试试题及其答案一、单项选择题(本大题共20题,每题1分,共20分)1、一个C程序的执行是从(A)。A本程序的main函数开始,到main函数结束B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束D本程序文件的第一个函数开始,到本程序main函数结束2、以下不正确的C语言标识符是(D)A、ABCB、abcC、a_bc3、一个C语言程序是由(B)A、一个主程序与若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成4、以下能对一维数组a进行初始化的语句是:(C) A.inta[5]=(0,1,2,3,4,) B.inta(5)={}C.inta[3]={0,1,2} D.inta{5}={10*1}5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为(C)A、intB、floatC、doubleD、不确定6、C语言中函数返回值的类型是由(A)决定的.A、函数定义时指定的类型B、return语句中的表达式类型C、调用该函数时的实参的数据类型D、形参的数据类型7、有如下程序,输入数据:12345M678<cR>后(<CR>表示回车),x的值是(B)。#include<stdio.h>main(){intx;floaty;scanf("%3d%f",&x,&y);}A、12345B、123C、45D、3458、设有以下说明语句:typedefstructstu{inta;floatb;}stutype;则下面叙述中错误的是(D)。A、struct是结构类型的关键字B、structstu是用户定义的结构类型 C、a与b都是结构成员名D、stutype是用户定义的结构体变量名9、若有说明:intn=2,*p=&n,*q=p,则以下非法的赋值语句是:(D)A、p=qB、*p=*qC、n=*qD、p=n10、已知charx[]="hello",y[]={'h','e','a','b','e'};,则关于两个数组长度的正确 描述是(B).A、相同B、x大于yC、x小于yD、以上答案都不对11、下列代码输出的是(C)main()

{

inta[5]={1,2,3,4,5};

int*ptr=(int*)(&a+1);

printf("%d,%d",*(a+1),*(ptr-1));

}A、2,3B、2,4C、2,5D、输出错误12、有以下程序 main() {inta=1,b=3,c=5; int*p1=&a,*p2=&b,*p=&c; *p=*p1*(*p2); printf("%d\n",c); }执行后的输出结果是(C)A、1 B、2 C、3 D、413、有以下程序段

#include<stdio.h>intmain(){intx[]={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("%d\n",*px); return0;}程序运行后的输出结果是(A)A、11,11,11,12,12,20,20,20 B、20,10,11,10,11,10,11,10C、11,11,11,12,12,13,20,20D、20,10,11,20,11,12,20,2014、如果在C程序中有main(intargc,char*argv[]),那么(D)是指命令行中的 参数个数。A、argvB、argv[]C、argc,argv[]D、argc15、以下关于typedef的叙述不的是(B)A.用typedef可以定义各种类型名,但不能用来定义变量B.用typedef可以增加新类型C.用typedef只是将已存在的类型用一个新的名称来代表D.用typedef便于程序的通用16、下面程序的运行结果是(C)#include<stdio.h>main(){intnum=0;while(num<=2){num++;printf(“%d,num);}}A、1B、12C、123D、123417、下面代码能通过编译的是:(A)A)intmain(){ inta[3]={1,2,3}; int*b[3]={&a[1],&a[2],&a[3]}; int**p=b; return0;}B)intmain(){ inta[3]={1,2,3}; int*b[3]={a[1],a[2],a[3]}; int**p=b; return0;}C)intmain(){ inta[3]={1,2,3}; int*b[3]={&a[1],&a[2],&a[3]}; int*p=b; return0;}D)intmain(){ inta[3]={1,2,3}; int*b[3]={&a[1],&a[2],&a[3]}; int*p=&b; return0;}18、若有以下程序:voidmain(){ char*a[3]={"I","love","China"}; char**ptr=a; printf("%c%s",*(*(a+1)+1),*(ptr+1));}这段程序的输出是(C)A、IlB、ooC、oloveD、Ilove19、以下对二维数组a的正确说明是(C)A、inta[3][];B、floata(3,4);C、doublea[1][4];D、floata(3)(4);20、若二维数组a有m列,则在a[i][j]前面的元素个数为(B)A、j*m+iB、i*m+jC、i*m+j-1D、i*m+j+121、下面选项属于函数指针的是:(D)A、(int*)p(int,int)B、int*p(int,int)C、两者都是D、两者都不是二、填空题(本大题共10空,每空2分,共20分)1、输入一个字符,判断该字符是数字、字母、空格还是其他字符。main(){charch;ch=getchar();if(ch>=’a’&&ch<=’z’||ch>=’A’&&ch<=’Z’)printf("ItisanEnglishcharacter\n");elseif(ch>=’0’&&ch<=’9’)printf("Itisadigitcharacter\n");elseif(ch==‘’)printf("Itisaspacecharacter\n"); elseprintf("Itisothercharacter\n");}若输入字符串:abcde<回车>,则以下while循环体将执 行

__0___

次.

while((ch=getchar())=='e')

printf("*");3、若有定义:char

s[

]="china";

则C编译系统为数组s开辟___6__个字节的内 存单元.4、下列程序运行后的输出结果是_______**********______#include<stdio.h>main(){inti,j;for(i=4;i>=1;i--){printf("*");for(j=1;j<=4-i;j++)printf("*");printf("\n");}}5、若有定义:inta[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是____0_______a[2][1]得到的初值是________6________6、在C语言中,二维数组元素的内存中的存放顺序是_按行主顺序存放_三、程序分析题(本大题共4题,每题2分,共8分,写出程序执行结果)1、#include<stdio.h>main(){inta,s,n,count;a=2;s=0;n=1;count=1;while(count<=7){n=n*a;s=s+n;++count;}printf(“s=%d”,s);}功能:求S=0+2+4+8+16+32+64+128与。输出结果:s=2542、#include<stdio.h>main(){inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)if(i==j)sum=sum+a[i][j];printf(“sum=%d\n”,sum);}功能:出矩形阵a的主对角线上的元素之与。输出结果:273、#include<stdio.h>main(){chargrade=’C’;switch(grade){case‘A’:printf(“90-100\n”);case‘B’:printf(“80-90\n”);case‘C’:printf(“70-80\n”);case‘D’:printf(“60-70\n”);break;case‘E’:printf(“<60\n”);default:printf(“error!\n”);}}注:L十进制为7670-8060-704、#include<stdio.h>intm[3][3]={{1},{2},{3}};intn[3][3]={1,2,3};main(){printf(“%d,”,m[1][0]+n[0][0]);printf(“%d\n”,m[0][1]+n[1][0]);}3,0四、编程题(本大题共10题,每题6分,共60分)1、编写摄氏温度、华氏温度转换程序。要求:从键盘输入一个摄氏温度,屏幕就显示对应的华氏温度,输出取两位小数。转换公式:F=(C+32)×9/5。#include"stdafx.h"#include<cstdlib>intmain(){ floatc,f; printf("inputc:"); 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<cstdlib>intmain(){ intx; scanf("%d",&x); if(x%5==0&&x%7==0) printf("yes"); else printf("no"); system("pause");}3、判断数m是否为素数(只能被1与它本身整除的整数)?#include"stdafx.h"#include<cstdlib>intmain(){ boolisPrime(unsignedlong); intm; printf("inputm:"); scanf("%d",&m); if(isPrime(m)) printf("misaprimenumber!\n"); else printf("misnotaprimenumber!\n"); system("pause");}boolisPrime(unsignedlongn){ if(n<=3){ returnn>1; }elseif(n%2==0||n%3==0){ returnfalse; }else{ for(unsignedshorti=5;i*i<=n;i+=6){ if(n%i==0||n%(i+2)==0){ returnfalse; } } returntrue; }}对15个数进行排序,按从小到大的顺序输出。#include"stdafx.h"#include<cstdlib>intmain(){ inti,j,a[15],t; printf("input15numbers:\n"); for(i=0;i<15;i++) scanf("%d",&a[i]); for(j=0;j<14;j++) for(i=0;i<14-j;i++) if(a[i]>a[i+1]) {t=a[i];a[i]=a[i+1];a[i+1]=t;} for(i=0;i<15;i++) printf("%5d",a[i]); printf("\n"); system("pause");}5、(*)编程输出如下图形(不能仅用printf语句):*************************#include"stdafx.h"#include<cstdlib>intmain(){ inti,k,j; for(i=0;i<=4;i++) {for(j=0;j<4-i;j++) printf(""); for(k=0;k<=2*i;k++) printf("*"); printf("\n");} system("pause");}6、请编程序将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母”A”后面第4个字母是”E”,用”E”,用E代替A,因此,”China”应译为”Glmre”.请编写一程序,用赋初值的方法使c1,c2,c3,c4,c5这5个变量的值分别为’C’’h’’i’’n’’a’,经过运算,使c1,c2,c3,c4,c5分别变成’G’’i’’m’’r’’e’.分别用putchar函数与printf函数输出这5个字符。Printf#include"stdafx.h"#include<cstdlib>intmain(){ charc1='C',c2='h',c3='i',c4='n',c5='a'; printf("%c%c%c%c%c",c1+4,c2+4,c3+4,c4+4,c5+4); system("pause");}Putchar#include"stdafx.h"#include<cstdlib>intmain(){ charc1='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<cstdlib>intmain(){ intcount=0; for(inti=1;i<5;i++) for(intj=1;j<5;j++) for(intn=1;n<5;n++) if(i!=j&&i!=n&&j!=n) { printf("%d%d%d%\n",i,j,n); count++; } printf("一共有%d\n",count); system("pause");}请编写程序,输出以下扬辉三角形(要求输出10行)。第一种#include"stdafx.h"#include<cstdlib>#defineN10intmain(){ inti,j; inta[N][N]; for(i=1;i<N;i++) { a[i][1]=1;//每行第一个输出1 a[i][i]=1;//每行末尾输出1 } for(i=3;i<N;i++) for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j];//第i行j列的数等于他低下一行的相邻左右数的与。 for(i=1;i<N;i++) { for(j=1;j<=N-i-1;j++)printf("");//输出三角前面用空格填充 for(j=1;j<=i;j++) printf("%4d",a[i][j]);//输出三角数值 printf("\n");//换行 } printf("\n"); system("pause");}第二种#include"stdafx.h"#include<cstdlib>#defineM10#defineN10intmain(){ inta[M][N],i,j; for(i=0;i<M;i++) for(j=0;j<=i;j++) if(j==0||j==i) a[i][j]=1; else a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i<M;i++) { for(j=0;j<=i;j++) printf("%4d",a[i][j]); printf("\n"); } system("pause");}写一程序,要求用户在键盘上输入一个整数,并把每位数字转换为英文。例如:输入1024时,输出OneZeroTwoFour#include"stdafx.h"#include<cstdlib>intmain(){ longintn; intm,i=0,c[10]; scanf("%ld",&n); do {m=n%10; i++; c[i]=m; printf("%5d%5d%5d\n",

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论