国家开放大学《C语言程序设计》综合练习题参考答案
综合练习1
一、单选题(每小题2分,共20分)
1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为。
a.main
b.name
c.MAIN
d.function
2.每个C语言程序文件的编译错误分为(    )类。
a.2
b.4
c.3
d.1
3.字符串"a+b=12\n"的长度为(    )。
a.6
b.9
c.8
d.7
4.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为(    )语句。
a.while
b.if
c.for
d.do
5.在下面的do-while循环语句中,其循环体语句被执行的次数为(    )。
int i=0; do i++; while(i<10);
a.4
b.5
c.10
d.3
6.将两个字符串连接起来组成一个字符串时,选用的函数为(    )。
a.strcmp()
b.strcat()
c.strlen()
d.strcap() 
7.若用数组名作为函数调用的实参,传递给形参的是(    )。
a.数组元素的个数
b.数组中全部元素的值
c.数组中第一个元素的值
d.数组的首地址
8.假定a为一个整数类型的数组名,整数类型的长度为4,则元素a[4]的地址比a数组的首地址大(    )个字节。
a.32
b.16
c.8
d.4
9.假定s被定义为指针类型char *的变量,初始指向的字符串为"Hello world!",若要使变量p指向s所指向的字符串,则p应定义为(    )。
a.char *p=s;
b.char *p;p=*s;
c.char *p=&s;
d.char *p; p=&s;
10.从一个数据文件中读入以换行符结束的一行字符串的函数为(    )。
a.fgets()
b.fgetc()
c.gets()
d.getc()
二、填空题(每小题2分,共26分)
11.C语言中的每条简单语句以(分号)作为结束符。
12.C程序中的所有预处理命令均以#字符开头。
13.当不需要函数返回任何值时,则应使用void标识符来定义函数类型。
14.十进制数25表示成符合C语言规则的十六进制数为19
15.假定不允许使用逻辑非操作符,则逻辑表达式a>b || b==5的相反表达式为a<=b && b!=5
16.执行“typedef int DataType;”语句后,在使用int定义整型变量的地方也可以使用DataType来定义整型变量。
17.假定一维数组的定义语句为“char* a[8];”,则该数组a所占存储空间的字节数为32
18.假定二维数组的定义语句为“double a[M][N];”,则该数组a的列下标的取值范围在0到N-1之间。
19.存储一个空字符串需要占用1个字节。
20.strcpy函数用于把一个字符串(拷贝)到另一个字符数组空间中。
21.程序的编译单位是一个(程序文件)
22.假定a是一个一维数组,则a[i]的指针访问方式为(a+i)
23.执行int *p=malloc(sizeof(int))操作得到的一个动态分配的整型对象为p
三、写出下列每个程序运行后的输出结果(每小题6分,共30分)
24.#include<stdio.h>
      void main()
      {
          int x=5;
          switch(2*x) {
            case 4: printf("%d ",x); break;
            case 7: printf("%d ",2*x); break;
            case 10: printf("%d ",3*x); break;
            default: printf("%s ","default");
          }
          printf("%d\n",4*x);
      }
程序运行结果:15 20
25.#include<stdio.h>
      void main() {
          int f1,f2,i;
          f1=1;
          printf("%d ",f1);
          for(i=2;i<5;i++) {
              f2=3*f1+i;
              printf("%d ",f2);
              f1=f2;
          }
          printf("\n");
      }
程序运行结果:1 5 18 58
26.#include<stdio.h>
      #define N 8
      void main() {
          int a[N]={12,39,26,41,55,63,72,40};
          int i, i1=0, i2=0;
          for(i=0;i<N;i++)
              if(a[i]%2==1) i1++; else i2++;
          printf("%d %d\n",i1,i2);
      }
程序运行结果:4 4
27.#include<stdio.h>
      #include<string.h>
      void main {
          char s[15]="5678912340";
          int i, n=strlen(s) ;
          for(i=0; i<n/2; i++) {
              char c=s[i];
              s[i]=s[n-1-i];
c语言程序分析题及答案

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