C语言期中考试卷1,4 联系客服

发布时间 : 星期日 文章C语言期中考试卷1,4更新完毕开始阅读628aa27131b765ce050814a6

32、阅读以下程序,该程序的输出结果为[B] 。 main()

{ char *s=“xyz”,*t=“xzy”;  if(*s==*t)printf(“1,”);  else printf(“2,”);

 if(!strcmp(s,t))printf(“3\\n”);  else printf(“4\\n”);}

[37]A) 1,3 B) 1,4 C) 2,3 D) 2,4

33、阅读以下程序,该程序的输出结果为[D] 。 main()

{ int a[2][2],i,j;  for(i=0;i<2;i++)

 for(j=0;j<2;j++) a[i][j]=i*2+j;  for(i=0;i<2;i++){  for(i=0;j<2;j++)  printf(“%d”,a[j][i]);  printf(“\\n”); }

}

[38]A) 1 3 B) 0 1 C) 1 2 D) 0 2 2 4 2 3 0 3 1 3

34、阅读以下程序,当输入字符序列AB#CD并回车时,程序的输出结果为[D] 。 #include void rev() { char c;  c=getchar();

 if(c==?#?)printf(“%c”,c);  else{ rev();

 printf(“%c”,c); } }

main() { rev(); }

[39]A) AB#CD B) #ABCD C) #CD D) #BA 35、下面函数与[D]是等价的。 float s(float x,float delta) { float y,z=0.0;

 for(y=1.0;y>delta;y/=x) z+=y;

 return z; }

[40]A) float s(float x,float delta) B) float s(folat x,float delta)  { float y; { float z=0.0,y=1.0;

 for( y=1.0;y>delta;y/=x) do{ y/=x;z+=y;} while(y>delta);  return s(x,delata)+y;} return z;}

C) float s(flat x,float delta) D) float s(float x,float delta)  { float z=0.0,y=1.0; { float z=0.0,y=1.0;  while(y<=delta) for(;y>delta;)  { z+=y; y/=x; } { z+=y; y/=x; }  return z; } return z; }

二、请正确填充下面的函数或程序的划线部分,使其完成所要求的功能。

1、下面程序完成以下函数f(x,y)的计算。 f(x,y)=

sin(x?y)?2x2

21?2sin(x?y)?3sin(x?y)# include  # include  float funl(float x)  { float f1;

 f1=x*x+sqrt(1+[1]);  returen(f1); }  main()

 { float x,y,f;

 scanf(“%f%f”,&x,&y);  f=x*x/fun1([2]);  printf(“f=%f\\n”,f); }

2、下面函数dtox(n,s)将无符号十进制整数n转换成十六进制形式并存于字符串s中,其中调用函数reverse(s)将字符串s逆置(例如字符串”DCBA”是字符串”ABCD”的逆置)。  #include

void dtox(unsigned n,char s[]) { int h,i=0;  do{

 h=n;n=n/16;

 s[i++]=(h<=9)?h+?0?:[3];  }while (n!=0);  s[i]=[4];  reverse(s); } void reverse(char a[]) { char c,i,j;

 for (i=0,j=strlen(a)-1;[5];i++,j--){  c=a[i];  [6];

 a[j]=c; } }

3、find(t,s)函数用来确定字符串t是否为s的子串,如不是,函数返回0,否则返回t在s中第1次出现时其第一个字符在s中的位置(例如find(“ab”,”abcd”)返回值为1)。  find(t,s)  [7]

{ int i=0,j=0;

 while(t[i]!=[8]&&s[j]!=?\\0?)  if(t[i++]!=s[j++]){  j-=[9]; i=0; }

 if(t[i]==?\\0?) return [10];  return 0; }

4、已知正文文件abc.txt,统计该文件中词的个数并求出最长词的长度。一个词与另一个词之间留空符、制表符、换行符分隔。

#include main() { FILE [11];  char ch;

 int word=0;/*存放词的个数*/

 int maxlenth=0;/*存放最长词的长度*/  int lenth=0;/*存放当前词的长度*/

 int flag=0;/*flag=1表示当前字符在某词中,flag=0表示当前字符不在某词中*/  if(fp=fopen([12],”r”)==NULL){

 printf(“Cannot Open this file!\\n”); exit(0); }  ch=fgetc(fp);  while(ch!=EOF){

 if(ch==' '||ch=='\\t'||[13]){  if(flag==1){ flag=0;

 if(lenth>maxlenth) [14]; }  }else if(flag==0){  flag=1; lenth=1;

 [15];/*统计词的个数*/;  }else

 [16];/*统计当前词的长度*/  ch=fgetc(fp); }/*end of while*/  fclose(fp);

printf(“word=%d,maxlenth=%d\\n”,word,maxlenth); } 5、下面程序处理两个一位自然数的加、减、乘、除四则运算命令。例如程序提示后输入5+4,程序马上输出=9。按下?Q?键结束程序。请补充完整。(getche()函数是读入一个从键盘键入的字符,并将该字符显示在屏幕上)。  #include

 [17] QUIT(x) x==?Q?||x==?q? main()

{ int a,b; char c,d;  do{ printf(“Input:”);

 d=getche();

 if(d>=?0?&&d<=?9?) a=d-?0?;  else if([18](d)) exit(0);

 else{ printf(“Wrong Data!\\n”); continue; }  c=getche();

 d=getche();

 if(d>=?0?&&d<=?9?) [19];

 else{ printf(“Wrong Data!\\n”); continue; }  switch(c){ case?+?:printf(“=%d\\n”,a+b);break;  case?-?:printf(“=%d\\n”,a-b);break;

case?*?:printf(“=%d\\n”,a*b);break; case?/?:printf(“=%f\\n”,[20]);break;

 default:printf(“Wrong Command!\\n”); }  }while(1); }

一、选择题。

1、在C语言中,用户能使用的合法标识符是[C]组。

[1] A) a,b B) –xyz  C) fa2 D) 5i void define sort_a x.i

 a123 s(x) string malloc

2、若执行printf(“%d\\n”,strlen(“a\\n\\\”))语句,其输出结果是[D] 。 [2] A) 8 B) 7 C) 6 D) 4

3、若 int a,b,c;则表达式(a=2,b=5,b++,a+b)的值是[B] 。 [3] A) 7 B) 8 C) 6 D) 2

4、以下正确的叙述是[C] 。

[4] A) 在C语言中,main函数必须位于文件的开头

 B) C语言的每行中只能写一条语句 C) C语言本身没有输入、输出语句  D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 5、若执行以下程序段,则n的值是[B] 。 int a=1,b=2,m=2,n=2; (m=a>b)&& ++n;

[5]A) 1 B) 2 C) 3 D) 4

6、已知各变量的类型如下,则以下符合C语言语法的表达式是[A] 。 int i=8,a,b;double x=1.42,y=5.2;

[6] A) a+=a-=(b=4)*(a=3) B) a=a*3=2 C) x%(-3) D) y=float(i) 7、以下程序 的运行结果是[B] 。 #include main() { int m=5;

 if(m++>5) printf(“%d\\n”,m);  else printf(“%d\\n”,m++);} [7] A) 7 B) 6 C) 5 D) 4 8、以下程序的运行结果是[D] 。 #include main()

{ char c='y';

 if(c>=?a?&& c<=?u?)c+=5;

 else if (c>=?v?&& c<=?z?) c-=21;  putchar(c); }

[8]A) ?y? B) ?d? C) y D) d

9、若定义int i;则以下循环语句的循环执行次数是[D] 。 for(i=2;i==0;) printf(“%d”,i--);

[9]A) 无限次 B) 0次 C) 1次 D) 2次 10、以下程序的运行结果是[C] 。 #include

main()

{ int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int *p[4],j;

 for(j=0;j<4;j++) p[j]=a[j];

 printf(“-,-,-,-\\n”,*p[1],(*p)[1],p[3][2],*(p[3]+1)); } [10] A) 4,4,9,8 B) 程序出错 C) 4,2,12,11 D) 1,1,7,5 11、以下程序的运行结果是[A] 。