C语言期末考试试题  南昌航空大学
一、单选题
(1) 若要定义一个具有5个元素的整型数组,以下错误的定义语句是
  Aint  a[5]=0;
  Bint  b[]={0,0,0,0,0};
  Cint  c[2+3];
  Dint  i=5,d[i];
(2)以下选项中可用作C程序合法实数的是
  A).1e0      B)3.0e0.2  C)E9    D)9.12E
(3)有以下程序段
  char name[20];
  int num;
  scanf("name=%s num=%d",name,&num);
  当执行上述程序段,并从键盘输入:name=Lili num=1001<回车>后,name的值为
  A)Lili  B)name=Lili  C)Lili num=  D)name=Lili num=1001
(4)if语句的基本形式是:if(表达式) 语句,以下关于“表达式”值的叙述中正确的是
  A)必须是逻辑值    B)必须是整数值
  C)必须是正数      D)可以是任意合法的数值
(5)ik都是int类型变量,有以下for语句
  for(i=0,k=-1;k=1;k++) printf("*****\n");
  下面关于语句执行情况的叙述中正确的是
  A)循环体执行两次
  B)循环体执行一次
  C)循环体一次也不执行
  D)构成无限循环
(6)有以下程序
  #include <stdio.h>
  void main()
  { int x=1,y=0;
  if(!x) y++;
  else if(x==0)
  if (x) y+=2;
  else y+=3;
  printf("%d\n",y);
  }
  程序运行后的输出结果是
  A)3  B)2    C)1    D) 0
(7)设有如下函数定义
  int fun(int k)
  { if (k<1) return 0;
  else if(k==1) return 1;
  else return fun(k-1)+1;
  }
  若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是
  A)2  B)3    C)4    D)5
(8)设有定义:struct {char mark[12];int num1;double num2;} t1,t2;,若变量均已正确赋初值,则以下语句中错误的是
  A)t1=t2;                B)t2.num1=t1.num1;
  C)t2.mark=t1.mark;      D)t2.num2=t1.num2;
(9)fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是
  A)写操作结束后可以从头开始读    B)只能写不能读
  C)可以在原有内容后追加写        D)可以随意读和写
(10)以下叙述中错误的是
  A)C语言的可执行程序是由一系列机器指令构成的
  B)C语言编写的源程序不能直接在计算机上运行
  C)通过编译得到的二进制目标程序需要连接才可以运行
  D)在没有安装C语言IDEPC中不能运行C源程序生成的.exe文件
(11)有以下程序
  #include <stdio.h>
  void main()
  { int x=011;
  printf("%d\n",++x);
  }
  程序运行后的输出结果是
  A)12      B)11    C)10      D)9
(12)有以下程序
  #include <stdio.h>
  void main()
  { char s[]="012xy\08s34f4w2";
  int i,n=0;
  for(i=0;s[i]!=0;i++)
  if(s[i]>='0'&&s[i]<='9') n++;
  printf("%d\n",n);
  }
  程序运行后的输出结果是
  A)0    B)3    C)7    D)8
(13)有以下程序
  #include <stdio.h>
  void main()
  { char b,c; int i;
  b='a'; c='A';
  for(i=0;i<6;i++)
  { if(i%2) putchar(i+b);
  else putchar(i+c);
  } printf("\n");
  }
  程序运行后的输出结果是
  A)ABCDEF    B)AbCdEf    C)aBcDeF    D)abcdef
(14)设有定义:double x[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是
  A)scanf("%f",&x[6]);    B)scanf("%lf",*(x+6));
  C)scanf("%lf",p+6);      D)scanf("%lf",p[6]);
(15)有以下程序段
  #include <stdio.h>
  void main()
  {
  while( getchar()!='\n');
  …
  }
  以下叙述中正确的是
  A)while语句将无限循环
  B)getchar()不可以出现在while语句的条件表达式中
  C)当执行此while语句时,只有按回车键程序才能继续执行
  D)当执行此while语句时,按任意键程序就能继续执行
(16)若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是
  A)p=s;    B)p=k;    C)p=s[0];    D)k=s;
(17)有以下程序
  #include <stdio.h>
  void fun(char *c)
  { while(*c)
  { if(*c>='a'&&*c<='z') *c=*c-('a'-'A');
  c++;
  }
  }
  void main()
  { char s[81];
  gets(s); fun(s); puts(s)
  }
  当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是
A)hello beijing    B)Hello Beijing
C)HELLO BEIJING    D)hELLO Beijing
(18)有以下程序
  #include <stdio.h>
  void main()
  { char a[30],b[30];
  scanf("%s",a);
  gets(b);
  printf("%s\n %s\n",a,b);
  }
  程序运行时若输入:
  how are you? I am fine<回车>
  则输出结果是
A)how are you?  B)how are you?  C)how are you? I am fine
D)how 
are you? I am fine
(19)有以下程序
  #include <stdio.h>
  int fun (int x,int y)
  { if (x!=y) return ((x+y)/2);
  else return (x);
  while语句都可以用for改写}
  void main()
  { int a=4,b=5,c=6;
  printf("%d\n",fun(2*a,fun(b,c)));
  }
  程序运行后的输出结果是
  A)3    B)6    C)8    D)12
(20)有以下程序
  #include <stdio.h>
  struct S
  { int a,b;}data[2]={10,100,20,200};
  void main()
  { struct S p=data[1];
  printf("%d\n",++(p.a));
  }
  程序运行后的输出结果是
  A)10    B)11    C)20    D)21
二、读程序写结果
(1) 阅读下列程序:
#include <stdio.h>
void main()
{int a;
a=(int)((double)(3/2)+0.5+(int)1.99*2);
printf("%d\n",a);
}
上述程序的输出结果是
(2) 阅读下列程序:
#include <stdio.h>
int main()
{ int i; int  branch;
  double  bonus,bon1,bon2,bon4,bon6,bon10;
  bon1=100000*0.1;  bon2=bon1+100000*0.075;  bon4=bon2+200000*0.05;
  bon6=bon4+200000*0.03;  bon10=bon6+400000*0.015;
  scanf("%d",&i);
  branch=i/100000;
  if (branch>10)  branch=10;
  switch(branch)
  {  case 0:bonus=i*0.1;break;
    case 1:bonus=bon1+(i-100000)*0.075;break;
    case 2:
    case 3: bonus=bon2+(i-200000)*0.05;break;
    case 4:
    case 5: bonus=bon4+(i-400000)*0.03;break;
    case 6:    case 7:    case 8:
    case 9: bonus=bon6+(i-600000)*0.015;break;
    case 10: bonus=bon10+(i-1000000)*0.01;
  }
  printf("奖金是 %10.2f\n",bonus);

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。