C语言程序设测试二及答案.docx

上传人:b****5 文档编号:7184166 上传时间:2023-01-21 格式:DOCX 页数:18 大小:20.98KB
下载 相关 举报
C语言程序设测试二及答案.docx_第1页
第1页 / 共18页
C语言程序设测试二及答案.docx_第2页
第2页 / 共18页
C语言程序设测试二及答案.docx_第3页
第3页 / 共18页
C语言程序设测试二及答案.docx_第4页
第4页 / 共18页
C语言程序设测试二及答案.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言程序设测试二及答案.docx

《C语言程序设测试二及答案.docx》由会员分享,可在线阅读,更多相关《C语言程序设测试二及答案.docx(18页珍藏版)》请在冰豆网上搜索。

C语言程序设测试二及答案.docx

C语言程序设测试二及答案

C语言程序设计期末考试试题及其答案

一、单项选择题(本大题共20题,每题1分,共20分)

1、A)。

程序的执行是从(一个CA本程序的main函数开始,到main函数结束

B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束

C本程序的main函数开始,到本程序文件的最后一个函数结束

D本程序文件的第一个函数开始,到本程序main函数结束

2、以下不正确的C语言标识符是(D)

A、ABCB、abcC、a_bcD、ab.c

3、一个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>后(表示回车),x的值是(B)。

#include

main(){

intx;

floaty;

scanf(=%f,&x,&y);

}

A、12345B、123C、45D、345

8、设有以下说明语句:

typedefstructstu

{inta;

floatb;

}stutype;

则下面叙述中错误的是(D)。

A、struct是结构类型的关键字

是用户定义的结构类型structstu、B.

C、a和b都是结构成员名

D、stutype是用户定义的结构体变量名

9、若有说明:

intn=2,*p=&n,*q=p,则以下非法的赋值语句是:

(D)

A、p=qB、*p=*qC、n=*qD、p=n

10、已知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、1B、2C、3D、4

13、有以下程序段

#include

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,20B、20,10,11,10,11,10,11,10

C、11,11,11,12,12,13,20,20D、20,10,11,20,11,12,20,20

14、如果在C程序中有main(intargc,char*argv[]),那么(D)是指命令行参数个数。

中的.

A、argvB、argv[]C、argc,argv[]D、argc

15、以下关于typedef的叙述不的是(B)

A.用typedef可以定义各种类型名,但不能用来定义变量

B.用typedef可以增加新类型

C.用typedef只是将已存在的类型用一个新的名称来代表

D.用typedef便于程序的通用

16、下面程序的运行结果是(C)

#include

main()

{intnum=0;

while(num<=2)

{num++;

printf(“%d,num);

}

}

A、1

B、12

C、123

D、1234

17、下面代码能通过编译的是:

()A

A)intmain()

{

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

int*b[3]={&a[1],&a[2],&a[3]};

int**p=b;

0;return

}

B)intmain()

{

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

int*b[3]={a[1],a[2],a[3]};

int**p=b;

0;return

}

C)intmain()

{

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

int*b[3]={&a[1],&a[2],&a[3]};

int*p=b;

0;return

}

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、Il

B、oo

C、olove

D、Ilove

19、以下对二维数组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+i

B、i*m+j

C、i*m+j-1

D、i*m+j+1

21、下面选项属于函数指针的是:

(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);

else

printf(Itisothercharacter\n);}

2、若输入字符串:

abcde<回车>,则以下while循环体将执行__0___次.

while((ch=getchar())=='e')printf(*);

3、若有定义:

chars[]=china;则C编译系统为数组s开辟___6__个字节的内存单元.

_______

、下列程序运行后的输出结果是4.

*

**

***

****

___

___#include

main()

{

inti,j;

for(i=4;i>=1;i--)

{printf(*);

for(j=1;j<=4-i;j++)

printf(*);

printf(\

);

}

}

6,8,10}};则初始化后,a[1][2]5、若有定义:

int得到的

初值是____0_______a[2][1]得到的初值是________6________

6、在C语言中,二维数组元素的内存中的存放顺序是_按行主顺序存放_

三、程序分析题(本大题共4题,每题2分,共8分,写出程序执行结果)

1、#include

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=254

2、#include

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的主对角线上的元素之和。

输出结果:

27

3、#include

main()

{chargrade='C';

switch(grade)

{

);“90-100\n”case‘A':

printf();

80-90\n”:

printf(case‘B'“

);

70-80\n”‘C':

printf(“case

);break;60-70\n”‘D':

printf(“case

”);':

printf(“<60\ncase‘E);”default:

printf(“error!

\n}

}

76十进制为注:

L70-80

60-70

#include

、4};int

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。

#includestdafx.h

#include

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。

#includestdafx.h

#include

intmain()

{

intx;

scanf(%d,&x);

if(x%5==0&&x%7==0)

printf(yes);

else

printf(

o);

system(pause);

}

3、判断数m是否为素数(只能被1和它本身整除的整数)?

#includestdafx.h

#include

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;

}

}

4、对15个数进行排序,按从小到大的顺序输出。

#includestdafx.h

#include

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(],a[i]);

printf(\

);

system(pause);

}

5、(*)编程输出如下图形(不能仅用printf语句):

*

***

*****

*******

*********

#includestdafx.h

#include

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(\

);}

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

#includestdafx.h

#include

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

#includestdafx.h

#include

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个数字,能组成多少个互不相同且无重复数字的三位数?

都是多少

#includestdafx.h

#include

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++;

}

牰湩晴尨一共有%d\n,count);

system(pause);

}

8、请编写程序,输出以下扬辉三角形(要求输出10行)。

第一种

#includestdafx.h

#include

#defineN10

intmain()

{

inti,j;

inta[N][N];

for(i=1;i

{

a[i][1]=1;//每行第一个输出1

a[i][i]=1;//每行末尾输出1

}

for(i=3;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

{

for(j=1;j<=N-i-1;j++)printf();//输出三角前面用空格填充

for(j=1;j<=i;j++)

输出三角数值printf(M,a[i][j]);//

printf(\

);//换行

}

printf(\

);

system(pause);

}

第二种

#includestdafx.h

#include

#defineM10

#defineN10

intmain()

{

inta[M][N],i,j;

for(i=0;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

{

for(j=0;j<=i;j++)

printf(M,a[i][j]);

printf(\

);

}

system(pause);

}

9、写一程序,要求用户在键盘上输入一个整数,并把每位数字转换为英文。

例如:

输入1024时,输出OneZeroTwoFour

#includestdafx.h

#include

intmain()

{

longintn;

intm,i=0,c[10];

scanf(%ld,&n);

do

{m=n_x0010_;

i++;

c[i]=m;

printf(]]]\n,i,m,c[i]);

}

while((n/=10)>0);

while(i>=1)

{i--;

switch(c[i+1])

{case0:

{printf(zero);printf();break;}

case1:

{printf(one);printf();break;}

case2:

{printf(wo);printf();break;}

case3:

{printf(hree);printf();break;}

case4:

{printf(

our);printf();break;}

case5:

{printf(

ive);printf();break;}

case6:

{printf(six);printf();break;}

case7:

{printf(seven);printf();break;}

case8:

{printf(eight);printf();break;}

case9:

{printf(

ine);printf();break;}

default:

printf(

o);}}

system(pause);

}

10、请编程,从键盘输入6名学生的5门成绩,分别统计每个学生的平均成绩。

(在主函数中输入输出,子函数求平均成绩)

#includestdafx.h

#include

intmain()

{

doublepingjun(double,int);

intr,c,i,j;

doubletmp,sum[10];

r=6;//6students

c=5;//5subjects

for(i=1;i<=r;i++)

{

牰湩晴尨请输入第%d个学生的所有成绩\n,i);

for(sum[i]=0,j=0;j

{

scanf(%lf,&tmp);

sum[i]+=tmp;

}

}

for(i=1;i<=r;i++)

printf(heaverageofstudent%dis:

%0.3lf\n,i,pingjun(sum[i],c));

system(pause);

return0;

}

doublepingjun(doublesum,intn)

{

sum=sum/n;

returnsum;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1