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

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

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

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

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

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

C语言程序设计

期末考试试题及其答案

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

  1、一个C程序的执行是从(A)。

A本程序的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("%3d%f",&x,&y);

  }

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

  8、设有以下说明语句:

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=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(int argc,char *argv[]),那么(D )是指命令行中的参数个数。

 

A、argv    B、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;

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、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、若有定义:

char s[ ]="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("\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

  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)

{

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十进制为76

70-80

60-70

4、#include

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

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

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

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个数进行排序,按从小到大的顺序输出。

#include"stdafx.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("%5d",a[i]);

printf("\n");

system("pause");

}

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

*

***

*****

*******

*********

#include"stdafx.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("\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

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

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

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

}

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

第一种

#include"stdafx.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("%4d",a[i][j]);//输出三角数值

printf("\n");//换行

}

printf("\n");

system("pause");

}

第二种

#include"stdafx.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("%4d",a[i][j]);

printf("\n");

}

system("pause");

}

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

例如:

输入1024时,输出OneZeroTwoFour

#include"stdafx.h"

#include

intmain()

{

longintn;

intm,i=0,c[10];

scanf("%ld",&n);

do

{m=n%10;

i++;

c[i]=m;

printf("%5d%5d%5d\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("two");printf("");break;}

case3:

{printf("three");printf("");break;}

case4:

{printf("four");printf("");break;}

case5:

{printf("five");printf("");break;}

case6:

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

case7:

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

case8:

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

case9:

{printf("nine");printf("");break;}

default:

printf("no");}}

system("pause");

}

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

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

#include"stdafx.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++)

{

printf("请输入第%d个学生的所有成绩\n",i);

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

{

scanf("%lf",&tmp);

sum[i]+=tmp;

}

}

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

printf("theaverageofstudent%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