浙江理工大学
          C程序设计        试题(八)
窗体顶端
窗体底端
一、填空题(每空一分共20分)
1.十进制数 175 的八进制数和十六进制数分别是_____和____
2.而十进制数 -134 的八进制数和十六进制数分别是____和____
3.字符 '5' 和 'h' 的ASCII代码值分别为____和____
4.已知 char a[]="12345",b[]={'1','2','3','4','5'};则表达式sizeof(a)和sizeof(b)的值分别为____和____
5.已知 char a[]="ABCDEFGH" 则表达式strlen(a)值为____
6.循环语句for(k=1,c=0;k<8;k++)c++; 执行后c的值为____
循环语句for(k=8,c=0;k>0;--k)c++; 执行后c的值为____
循环语句k=1;c=0;while(k<=8){k++;c++;} 执行后c的值为____
循环语句k=8;c=0;do{k--;c++;} while(k>=0); 执行后c的值____
7.已知char a[5],*p=a; 问a[1],a+1,*(p+1),p[1]之中与众不同的是____
8.已知int a=3,b=4,c=5; 则表达式a>b&&!c||1的值为____
9.已知int a=1,b=3,c=5; 则表达式a>=b>=c?a++:--b的值为____
10.sizeof是什么已知int j=5,m=2,k=7,n=4; 执行语句n+=m*=n=j%k;之后,n和m的值分别为____和____
11.已知int a=8,b=4,c=1; 则表达式a-b>c&&b!=c的值为____
12.已知int a=6,b=3,c=5; 则表达式b-a||b+c&&b-c的值为____

二、程序填空(每题4分共20分)
1.下面C程序的输出是: ____
  main()
  { int m=8;
  if(m--<8)printf("%d\n",++m);
  else printf("%d\n",--m);
  }
2.下面C程序的输出是: ____
  main()
  { int a=7,*p=&a;
  *p=a+11+*p;
  printf ("a=%d\n",a);
  } 
3.下面C程序的输出是: ____
  void f(int n)
  { printf("%3d",n%10);
  if(n>0)f(n/10);
  }
  main()
  { f(12345);
  }
4.十个数的选择排升序:
  main()
  { int a[11],i,j,t;
  printf("input 10 numbers : ");
  for(____)
    scanf(____);
  for(i=____)
    for(j=____)
    if(a[j]____)
    { t=____;
      ____;
      ____;
    }
  printf("The sorted numbers :\n");
  for(____)
    printf(____);
  printf(____);
  }
5.如右图‘数字三角形’输出,请补上C程序:
  main()
  { int i, j, k=1;          1
  for (i=1; i<=9; i++)        2 3
  { for (j=1;____; j++)    4 5 6
    printf(____);      7 8 9 10
    printf("\n");          11 12 13 14 15
  }                  16 17 18 19 20 21
  }                    22 23 24 25 26 27 28
                      29 30 31 32 33 34 35 36
                      37 38 39 40 41 42 43 44 45

三、选择题(每题一分共10分)
1.(  ) 设有声明:
  struct t{int x,y;}s[2]={1,2,3,4};
  struct t *p=s,*q=s;
  则表达式++p->x和表达式(++q)->x的值分别为
  A、 1,1    B、 1,3      C、 2,3      D、 3,3
2.(  ) 十进制数-27的八进制数和十六进制数为:
  A、0177745 0X801B        B、0100033 0X801B
  C、0100033 0XFFE5        D、0177745 0XFFE5
3.(  ) 为了避免嵌套的条件语句if-else的二义性,C语言规定:
  A、else与缩排位置相同的if配对    B、else与同一行上的if配对
  C、else与其之后最近的if配对    D、else与其前最近的尚未配对的if配对
4.(  ) 如 int k=11;则执行语句k=1/3*++k;后k取值为:
  A、12      B、3        C、4        D、0
5.(  ) 如果int a[][4]={1,2,3,4,5,6,7,8,9,10},*p=*(a+1);,则值为9的表达式是:
  A、p+=3,*p++  B、p+=4,*(p++)  C、p+=4,*++p  D、p+=4,++*p
6.(  )设有指向同一个数组中不同元素的两个指针,则对它们不能执行的运算是:
  A、+      B、-        C、++      D、--
7.(  ) 能用作变量名字的标识符是:
  A、 union    B、double      C、ab-1      D、a123_cd
8.(  ) break语句
  A、只能出现在if语句中        B、只能出现在循环体中
  C、可用在循环体和switch语句中    D、可用在函数中的任何语句
9.(  ) 执行循环语句: for(x=y=0;y!=250||x<4;x++)y+=50;
  其循环体执行的次数为:
  A、 5      B、 4        C、3        D、2
10.(  ) 如 int x=14; 下列求商y(需小数结果)的表达式哪一个不对?
  A、y=x/(5+.0)  B、y=x/5.      C、y=1.*x/5    D、y=x/5*1.0

四、改错,请将正确的语句和遗漏的语句写在本行的右边(每题5分共10分)
1.用Fibonacci数列前20个数,以四行五列显示。
main()
{ int i;
int f[20]=(1,1);        ____
for(i=1, i<=20,i++)        ____
  f[i]=f[i-2]+f[i-1];
for(i=1,i<=20,i++)        ____
{ if(i/4=0) printf(\n);      ____
  printf("%12d",f[i]);
}
}
2.判别并显示输入的整数是否为质数。
include <stdio.h>          ____
main[]                ____
{ int n;prime(int);        ____
scanf('%d',n);          ____
v=prime[n],            ____
if v=1 then printf("%d is a prime!\n, n")    ____
else printf("%d is not a prime!\n, n")      ____
}
void prime(int p)          ____
{ int k,v=1;            ____
k==sqrt(p);            ____
for(i=2,i<=k,i++)          ____
  if(p/i=0) v=0;break;      ____
return v;
}

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