黄老师 发表于 2011-12-13 20:38:35

电子科技大学11秋《C语言》在线作业一二三答案

《C语言》在线作业一
一、单选题:
3. 已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为()inta;   f(a);    (满分:2)
    A. f(intarray[])
    B. f(intarray[])
    C. f(intarray[]
    D. f(intarray)
4. 设有以下说明,则下面不正确的叙述是()uniondata {inti;   charc;   f1oatf;)un;    (满分:2)
    A. un所占的内存长度等于成员f的长度
    B. un的地址和它的各成员地址都是同一地址
    C. un可以作为函数参数
    D. 不能对un赋值,但可以在定义un时对它初始化
5. 下面程序的运行结果是()#includemain()   {int   a=1,b=10;do{b-=a;a++;}while(b--<0);printf("a=%d,b=%d\n",a,b); }    (满分:2)
    A. a=3,b=11
    B. a=2,b=8
    C. )a=1,b=-1
    D. a=4,b=9
6. 设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为()    (满分:2)
    A. int
    B. float
    C. double
    D. 不确定
7. 有如下程序 main( ) { int x=1,a=0,b=0; switch(x){ case 0: b++; case 1: a++ case 2: a++;b++ } printf(“a=%d,b=%d\n”,a,b); } 该程序的输出结果是()    (满分:2)
    A. a=2,b=1
    B. a=1,b=1
    C. a=1,b=0
    D. a=2,b=2
8. 以下正确的描述是()    (满分:2)
    A. continue语句的作用是结束整个循环的执行
    B. 只能在循环体内和switch语句体内使用break语句
    C. 在循环体内使用break语句或continue语句的作用相同
    D. 从多层循环嵌套中退出时, 只能使用goto语句
9. 若有 int k=2; int *ptr1, *ptr2; ptr1=&k; ptr2=&k ;那么下列正确的语句是()    (满分:2)
    A. k=*ptr1+*ptr2
    B. ptr2=ptr1*2
    C. *ptr1=*ptr2
    D. ptr1=*ptr1*(*ptr2)
10. 下面四个选项中、均是正确的数值常量或字符常量的选项是()    (满分:2)
    A. 0.00f8.9e'&'
    B. "a"3.9E-2.5 lel'\'''
    C. '3'0110xFFOO   0a
    D. +001 0xabcd   2e2 50.
11. 有以下程序段:intx=0,s=0;    while(!x!= 0)s+=++x;printf("%d",s);    则有以下程序段()    (满分:2)
    A. 运行程序段后输出0
    B. 运行程序段后输出1
    C. 程序段中的控制表达式是非法的
    D. 程序段执行无限次
12. 结构化程序设计所规定的三种基本结构是()    (满分:2)
    A. 主程序、子程序、函数
    B. 树形、网形、环形
    C. 顺序、选择、循环
    D. 输入、处理、输出
13. 有以下程序 :main( ) { int k=5,n=0; while(k>0) { switch(k) {default : break; case 1: n+=k; case 2: case 3: n+=k;} } printf(“%d\n”,n); } 程序运行后的输出结果是()    (满分:2)
    A. 0
    B. 4
    C. 6
    D. 7
14. 若有说明: char*language[ ]={"F0RTRAN","BASIC","PASCAL", "JAVA","C"};则language的值是()    (满分:2)
    A. 一个字符
    B. 一个地址
    C. 一个字符串
    D. 一个不定值
15. 设有语句inta,*p=*a;则下面表达式中属于地址表达式的是()    (满分:2)
    A. a
    B. a
    C. *(p+1*10+2)
    D. *(a+2)
16. C语言规定,函数返回值的类型是由()决定的    (满分:2)
    A. return语句中的表达式类型
    B. 调用该函数时的主调函数类型
    C. 调用该函数时由系统临时
    D. 在定义函数时所指定的函数类型
17. 以下程序的正确运行结果是()    #include int func(int a,int b); main( ) { int k=4,m=1,p; p=fun(k,m);printf(“%d,”,p); p=fun(k,m);printf(“%d\n”,p); } func(int a,int b) {static int m=0,i=2; i+=m+1; m=i+a+b; return m; }    (满分:2)
    A. 8,17
    B. 8,16
    C. 8,20
    D. 8,8
18. 有四组对指针变量进行操作的语句,以下判断正确的选项是()(1)int *p,*q;q=p;   int a,*p,*q;p=q=&a;(2)int a,*p,*q;q=&a;p=*q;   int a=20,*p;*p=a;(3)int a=b=0,*p;p=&a;b=*p;   int a=20,*p,*p=&a;*p=*q;(4)int a=20,*p;*q=&a;p=q;   int p,*q;q=&q;    (满分:2)
    A. 正确:(1);不正确:(2),(3),(4)
    B. 正确:(1),(4);不正确:(2),(3)
    C. 正确:(3);不正确:(1),(2),(4)
    D. 以上结论都不正确
19. 有定义:int x, *p1=&x, **p2=&p1;,则能够表示变量x值的是()    (满分:2)
    A. p1
    B. p2
    C. *p2
    D. **p2
20. 下面四个选项中,均是非法常量的选项是()    (满分:2)
    A. as' -0fff '\0xa'
    B. '\\' '\01' 12,456
    C. -0xl8 01177 0xf
    D. 0xabc'\0' "a"
21. 以下叙述中不正确的是()    (满分:2)
    A. 预处理命令行都必须以#号开始
    B. 在程序中凡是以#号开始的语句行都是预处理命令行
    C. C程序在执行过程中对预处理命令行进行处理
    D. 以下是正确的宏定义 #defineIBM PC
22. 下列说法不正确的是()    (满分:2)
    A. 形参是局部变量
    B. 主函数中定义的变量在整个文件都有效
    C. 可以在一个函数的复合语句中定义变量
    D. 不同函数可以使用相同变量名
23. sizeof(float)是( )    (满分:2)
    A. 一个整型表达式
    B. 一种函数调用
    C. 一个不合法的表达式
    D. 一个不合法的表达式
24. C语言规定:在一个源程序中,main函数的位置是()    (满分:2)
    A. 必须在最开始
    B. 必须在系统调用的库函数的后面
    C. 可以任意
    D. 必须在最后
25. 下列四组选项中,均不是C语言关键字的选项是()    (满分:2)
    A. define   IFtype
    B. geto charprintf
    C. includescanf   case
    D. whilegopow
26. 以下不正确的叙述是()    (满分:2)
    A. 在C程序中,逗号运算符的优先级最低
    B. 在C程序中,APH和aph是两个不同的变量
    C. 若a和b类型相同,在执行了赋值表达式a=b后b中的值将放人a中,而b中的值不变
    D. 当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。
27. 设变量a b c d 和y都已经正确定义并赋值,若有以下if 语句:      if(a<b)if(c==d) y=0; else y=1;给语句所表示的含义是()    (满分:2)
    A. y=0 a<b且c=d; y=1 a>=b
    B. y=0 a<b且c=d; y=1 a>=b 且 c!=d
    C. y=0 a<b且c=d; y=1 a<b 且 c!=d
    D. y=0 a<b且c=d; y=1 c!=d
28. 若有说明:int a则数组a各元素()    (满分:2)
    A. 可在程序的运行阶段得到初值0
    B. 可在程序的编译阶段得到初值0
    C. 不能得到确定的初值
    D. 可在程序的编译或运行阶段得初值
29. 下面程序段,说法正确的为()   for(t=1;t<=100;t++)   {scanf("%d",&x);    if(x<0)continue;      printf("%3d",x);}    (满分:2)
    A. 当x<0时整个循环结束
    B. x>=0时什么也不输出
    C. printf函数永远也不执行
    D. 最多允许输出100个非负整数
30. 以下描述中正确的是()    (满分:2)
    A. 由于do~while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
    B. do~while循环由do开始,用while结束,在while(表达式) 后面不能写分号
    C. 在do~while循环体中,一定要有能使while后表达式值变为零("假")的操作
    D. do~while循环中,根据情况可以省略while
31. 建立函数的目的之一是()    (满分:2)
    A. 提高程序的执行效率
    B. 提高程序的可读性
    C. 减少程序的篇幅
    D. 减少程序文件所占内存
32. 有以下程序: union pw { int i; char ch[2];}a; main() {a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);} 程序的输出结果是()    (满分:2)
    A. 13
    B. 14
    C. 208
    D. 209
33. 若用数组名作为函数调用的实参,传递给形参的是()    (满分:2)
    A. 数组的首地址
    B. 数组第一个元素的值
    C. 数组中全部元素的值
    D. 数组元素的个数
34. 下面程序的运行结果是()      #include   main(){ int k=0;charc='A';do {switch(c++) {case'A':k++;break;   case'B':k--;   case'C':k+=2;break;   case'D':k=k%2;continue;   case'E':k=k*10;break;   default:k=k/3;}   k++;}   while(c<'    (满分:2)
    A. k=3
    B. k=4
    C. k=2
    D. k=0
35. 以下程序的输出结果是()    main(){inta=100,x =10,y=20,okl=5,ok2=0;    if(x<y)    if(y ! =10)    if(!okl)a=1;   else   if(ok2)a=10;      a=-1;    printf("%d\n",a );}    (满分:2)
    A. 1
    B. 0
    C. -1
    D. 值不确定
二、多选题:
1. 以下程序正确计算p=n! (n>=0)的是()    (满分:2)
    A. for(p=1.0,k=1;k<=n;) p*=k++;
    B. p=1.0;k=0;while(k<n) p*=++k;
    C. p=1.0;k=1;do{++k;p*=k;} while(k<=n);
    D. p=1.0;for(k=n;k>=1;k--) p*=k--;
2. 在函数调用过程中,下列说法正确的是()    (满分:2)
    A. 形式参数和实在参数各占一个独立的存储单元
    B. 形式参数和实在参数存储空间都是在函数调用时分配的
    C. )在函数的执行过程中,形参变量值的改变不会影响实参值的改变
    D. 函数调用结束时,临时存储区被撤消
    E. 在函数调用过程中,实在参数与形式参数在个数、类型上必须匹配
3. 以下哪些是关于指针数组的正确描述()    (满分:2)
    A. int (*a);
    B. int *a;
    C. 指针数组每个元素都是指针变量
    D. 若int a; int *b[]={a,a,a,a}; 则b是指针数组
    E. 指针数组与指向数组的指针是等价的
4. 有定义:int a,*p=a;,则能正确引用a元素地址的有()    (满分:2)
    A. a+3
    B. *((p+2)+3)
    C. *(p+3)
    D. *(a+2)+3
    E. p+2*4+3
5. 以下关于C源程序文件的说法中正确的是()    (满分:2)
    A. 是一种二进制文件
    B. 是一种文本(ASCII码)文件
    C. 可以用DOS的type命令显示其内容
    D. 文件扩展名一般为c
三、判断题:
1. 表达式1/4+2.75的值是3。    (满分:2)
    A. 错误
    B. 正确
2. 在C程序中,函数的形式参数是指针类型时,调用时对应的实参也必须是地址量。    (满分:2)
    A. 错误
    B. 正确
3. 以数组名作函数参数时,数据传递的方向是“双向的”,因此我们可以说,在此情况下,函数带回的返回值可能不止一个。    (满分:2)
    A. 错误
    B. 正确
4. continue语句用在循环体中,可使整个循环不结束。    (满分:2)
    A. 错误
    B. 正确
5. 对二维数组a来说,由于a+1与*(a+1)的值相等,因此二者的含义是一样的。    (满分:2)
    A. 错误
    B. 正确
6. 被定义为指向某结构体类型数据的指针变量,即可以指向具有该类型的变量,又可以指向它其中的一个成员。    (满分:2)
    A. 错误
    B. 正确
7. 对于指向同一个数组的两个变量而言,两个指针变量相减的操作是有意义的。    (满分:2)
    A. 错误
    B. 正确
8. C语言把文件看作是一个字符的序列。    (满分:2)
    A. 错误
    B. 正确
9. 下面的程序段构成死循环。          a=5;          while (1){a--; if (a<0) break ; }    (满分:2)
    A. 错误
    B. 正确
10. 在函数定义中,形参变量是局部变量。    (满分:2)
    A. 错误
    B. 正确
《C语言》在线作业三
一、单选题:
1. 设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是()    (满分:2)
    A. c=*p1+*p2;
    B. p2=c;
    C. p1=p2;
    D. c=*p1*(*p2);
2. 下面不正确的字符串常量是()    (满分:2)
    A. abc'
    B. "12'12"
    C. "0"
    D. ""
3. 以下符合C语言语法的赋值表达式是()    (满分:2)
    A. d=9+e+f=d+9
    B. d=9+e,f=d+9
    C. d=9+e,e++,d+9
    D. d=9+e++=d+7
4. 若有以下程序段:int a[]={4,0,2,3,1},i,j,t; for(i=1;i=0&&t>a)   {a=a;j- -;}   a=t;}      ...... 则该程序段的功能是()    (满分:2)
    A. 对数组a进行插入排序(升序)
    B. 对数组a进行插入排序(降序)
    C. 对数组a进行选择排序(升序)
    D. 对数组a进行选择排序(降序)
5. 若有说明: char*language[ ]={"F0RTRAN","BASIC","PASCAL", "JAVA","C"};则language的值是()    (满分:2)
    A. 一个字符
    B. 一个地址
    C. 一个字符串
    D. 一个不定值
6. sizeof(float)是( )    (满分:2)
    A. 一个整型表达式
    B. 一种函数调用
    C. 一个不合法的表达式
    D. 一个不合法的表达式
7. 有两个字符数组a、b,则以下正确的输入格式是()    (满分:2)
    A. gets(a,b);
    B. scanf("%s%s",a,b);
    C. scanf("%s%s",&a,&b);
    D. gets("a"),gets("b");
8. 已知一个函数的定义如下:double fun(int x, double y)    { …… } 则该函数正确的函数原型声明为()    (满分:2)
    A. double fun (int x,double y)
    B. fun (int x,double y)
    C. double fun (int,double);
    D. fun(x,y) ;
9. 设有说明:char w; intx;f1oaty;doublez;则表达式w* x+z-y值的数据类型为()    (满分:2)
    A. float
    B. char
    C. int
    D. double
10. 有定义:int *p1,*p2;,则正确的赋值语句为()    (满分:2)
    A. p1=p2;
    B. p1/=p2;
    C. p1+=p2;
    D. p1*=p2;
11. C语言中用于循环结构程序设计的三种常用控制语句是()    (满分:2)
    A. if、for、continue
    B. if、switch、break
    C. for、while、do-while
    D. 顺序结构、选择结构、循环结构
12. 有定义:int a, (*p)=a;,数组a的首地址为100,*(p+2)+3等于()    (满分:2)
    A. 116
    B. 118
    C. 120
    D. 122
13. 标准库函数fgets(s,n,f)的功能是()    (满分:2)
    A. 从文件f中读取长度为n的字符串存入s中
    B. 从文件f中读取长度小于n的字符串存入s中
    C. 从文件f中读取n个字符串存入s中
    D. 从文件f中读取长度为n-1的字符串存入s中
14. C语言规定,函数返回值的类型是由() 决定的    (满分:2)
    A. return语句中的表达式类型
    B. 调用该函数时的主调函数类型
    C. 调用该函数时由系统临时
    D. 在定义函数时所指定的函数类型
15. 设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()    (满分:2)
    A. 7
    B. 8
    C. 6
    D. 2
16. 下面程序的运行结果是()#include "stdio.h"main(){int i; for(i=1;i<=5;i++){if (i%2) printf("#");else continue;printf("*");}printf("$");}    (满分:2)
    A. *#*#$
    B. #*#*#*$
    C. *#*#$
    D. #*#*$
17. 能正确表示逻辑关系:“a≥10或a≤0”的C语言表达式是()    (满分:2)
    A. a>=10 or a<=0
    B. a>=0|a<=10
    C. a>=10 &&a<=0
    D. a>=10‖a<=0
18. 建立函数的目的之一是()    (满分:2)
    A. 提高程序的执行效率
    B. 提高程序的可读性
    C. 减少程序的篇幅
    D. 减少程序文件所占内存
19. 已知函数的调用形式:fread(buffer,size,count,fp),其中buffer代表的是()    (满分:2)
    A. 一个整型变量,代表要读入的数据项总数
    B. 一个文件指针,指向要读的文件
    C. 一个指针,指向要读入数据的存放地址
    D. 一个存储区,存放要读的数据项
20. 已有以下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的错误定义方式为()   int a;   f(a);    (满分:2)
    A. f(int array[])
    B. f(int array[])
    C. f(int array[])
    D. f(int array)
21. 有定义:int x,*p=&x;,则能为变量x正确赋值的语句是()    (满分:2)
    A. scanf(“%d”,x);
    B. scanf(“%d”,p)
    C. scanf(“%d”,*p);
    D. scanf(“%f”,&x);
22. 有定义:int x,*p;,能使指针变量p指向变量x的语句是()    (满分:2)
    A. *p=&x;
    B. p=&x;
    C. *p=x;
    D. p=*&x;
23. 不能把字符串:Hello!赋给数组b的语句是()    (满分:2)
    A. char b={'H','e','l','l','o','!'};
    B. char b;b="Hello!";
    C. char b;strcpy(b,"Hello!");
    D. char b="Hello!";
24. 对for(表达式1;;表达式3)可理解为()    (满分:2)
    A. for(表达式1;0;表达式3)
    B. for(表达式1;1;表达式3)
    C. for(表达式1;表达式1;表达式3)
    D. for(表达式1;表达式3;表达式3)
25. 若有以下说明:int a={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为6的表达式是()    (满分:2)
    A. *p+6
    B. *(p+6)
    C. *(p+5)
    D. p+5
26. 下面程序应能对两个整型变量的值进行交换。以下正确的说法是()main() {int a=10,b=20;printf("(1)a=%d,b=%d\n",a,b);swap(&a,&b);prinif("(2)a=%d,b=%d\n",a,b);}swap(intp,intq){intt; t=p;p=q;q=t;}    (满分:2)
    A. 该程序完全正确
    B. 该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可
    C. 该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可
    D. 以上说法都不正确
27. 下面四个选项中,均是不合法的整型常量的选项是()    (满分:2)
    A. ‘--0f1 -0xffff 0011
    B. -0Xcdf 017 12,456
    C. -018 999 5e2
    D. -0x48eg -068 03f
28. 建立函数的目的之一是()    (满分:2)
    A. 提高程序的执行效率
    B. 提高程序的可读性
    C. 减少程序的篇幅
    D. 减少程序文件所占内存
29. 对宏命令的处理是()    (满分:2)
    A. 在程序执行时进行
    B. 在程序对其它语句进行编译前进行
    C. 在程序连接时进行
    D. 与程序中其它语句同时进行编译
30. 以下不正确的if语句形式是()    (满分:2)
    A. if(x>y && x!=y);
    B. if(x= =y)x+=y;
    C. if(x != y) scanf("%d",&x ) else scanf("%d",&y);
    D. if(x<y) {x++;y++;}
31. 若有说明:int a则数组a各元素()    (满分:2)
    A. 可在程序的运行阶段得到初值0
    B. 可在程序的编译阶段得到初值0
    C. 不能得到确定的初值
    D. 可在程序的编译或运行阶段得初值
32. 当说明一个结构体变量时系统分配给它的内存是()    (满分:2)
    A. 各成员所需内存量的总和
    B. 结构中第一个成员所需内存量
    C. 成员中占内存量最大者所需的容量
    D. 结构中最后一个成员所需内存量
33. 有字符数组a和b,则正确的输出形式是()    (满分:2)
    A. puts(a,b);
    B. printf("%s,%s",a[],b[]);
    C. putchar(a,b);
    D. puts(a),puts(b);
34. 下面程序段,说法正确的为()   for(t=1;t<=100;t++)   {scanf("%d",&x);    if(x<0)continue;      printf("%3d",x);}    (满分:2)
    A. 当x<0时整个循环结束
    B. x>=0时什么也不输出
    C. printf函数永远也不执行
    D. 最多允许输出100个非负整数
35. 以下不正确的说法是()    (满分:2)
    A. 实参可以是常量,变量或表达式
    B. 形参可以是常量,变量或表达式
    C. 实参可以为任意类型
    D. 如果形参和实参的类型不一致,以形参类型为准
二、多选题:
1. 以下程序正确计算p=n! (n>=0)的是()    (满分:2)
    A. for(p=1.0,k=1;k<=n;) p*=k++;
    B. p=1.0;k=0;while(k<n) p*=++k;
    C. p=1.0;k=1;do{++k;p*=k;} while(k<=n);
    D. p=1.0;for(k=n;k>=1;k--) p*=k--;
2. 以下关于C源程序文件的说法中正确的是()    (满分:2)
    A. 是一种二进制文件
    B. 是一种文本(ASCII码)文件
    C. 可以用DOS的type命令显示其内容
    D. 文件扩展名一般为c
3. 在函数调用过程中,下列说法正确的是()    (满分:2)
    A. 形式参数和实在参数各占一个独立的存储单元
    B. 形式参数和实在参数存储空间都是在函数调用时分配的
    C. )在函数的执行过程中,形参变量值的改变不会影响实参值的改变
    D. 函数调用结束时,临时存储区被撤消
    E. 在函数调用过程中,实在参数与形式参数在个数、类型上必须匹配
4. 下面关于C语言的说法错误的是( )    (满分:2)
    A. C函数必须有形式参数
    B. 任何复合语句体的{ }中允许定义局部变量
    C. 局部变量都存储在动态存贮区
    D. C程序的执行起点只能是main函数
5. 以下程序正确计算p=n! (n>=0)的是()    (满分:2)
    A. for(p=1.0,k=1;k<=n;) p*=k++;
    B. p=1.0;k=0;while(k<n) p*=++k;
    C. p=1.0;k=1;do{++k;p*=k;} while(k<=n);
    D. p=1.0;for(k=n;k>=1;k--) p*=k--;
三、判断题:
1. 已知int a,*p;则语句p=&a;是正确的。    (满分:2)
    A. 错误
    B. 正确
2. 被定义为指向某结构体类型数据的指针变量,即可以指向具有该类型的变量,又可以指向它其中的一个成员。    (满分:2)
    A. 错误
    B. 正确
3. 对于指向同一个数组的两个变量而言,两个指针变量相减的操作是有意义的。    (满分:2)
    A. 错误
    B. 正确
4. C语言采用解释方式将源程序转换为二进制的目标代码。    (满分:2)
    A. 错误
    B. 正确
5. 函数即可以嵌套定义,又可以嵌套调用。    (满分:2)
    A. 错误
    B. 正确
6. 字符型数据和整数之间是不可以通用的。    (满分:2)
    A. 错误
    B. 正确
7. C程序是由函数构成的,每一个函数完成相对独立的功能。    (满分:2)
    A. 错误
    B. 正确
8. 对二维数组a来说,由于a+1与*(a+1)的值相等,因此二者的含义是一样的。    (满分:2)
    A. 错误
    B. 正确
9. 在任何情况下,对二维数组的初始化都可以省略第一维的大小。    (满分:2)
    A. 错误
    B. 正确
10. 设有下列说明语句struct ss{int x;float y;}ex; 则ex是结构体类型名。    (满分:2)
    A. 错误
    B. 正确

《C语言》在线作业二
一、单选题:
1. 有定义:int a, (*p)=a;,数组a的首地址为100,*(p+2)+3等于()    (满分:2)
    A. 116
    B. 118
    C. 120
    D. 122
2. 以下程序的输出结果是 ()  main()   {int i;   for(i=0;i<3;i++)   switch(i){   case 0:printf("%d",i);   case 2:printf("%d",i);   default:printf("%d",i);   }   }    (满分:2)
    A. 022111
    B. 021021
    C. 000122
    D. 012
3. 设有说明:char w; intx;f1oaty;doublez;则表达式w* x+z-y值的数据类型为()    (满分:2)
    A. float
    B. char
    C. int
    D. double
4. C语言允许函数值类型缺省定义,此时该函数值隐含的类型是()    (满分:2)
    A. float型
    B. int型
    C. long型
    D. double型
5. 一个C程序的执行是从()    (满分:2)
    A. 本程序的main函数开始,到main函数结束
    B. 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束
    C. 本程序的main函数开始,到本程序文件的最后一个函数结束
    D. 本程序文件的第一个函数开始,到本程序main函数结束
6. 若有以下说明和语句:structstudent {intage;   intnum;}std,* p;p=&std;则以下对结构体变量std中成员age的引用方式不正确的是()    (满分:2)
    A. std.age
    B. p->age
    C. (*p).age
    D. *p.age
7. 若有说明:inta[3][4]={0};则下面正确的叙述是()    (满分:2)
    A. 只有元素a可得到初值0
    B. 此说明语句不正确:
    C. 数组a中各元素都可得到初值,但其值不一定为0。
    D. 数组a中每个元素均可得到初值0
8. 以下正确的描述是()    (满分:2)
    A. C语言的预处理功能是指完成宏替换和包含文件的调用
    B. 预处理指令只能位于C源程序文件的首部
    C. 凡是C源程序中行首以"#"标识的控制行都是预处理指令
    D. C语言的编译预处理就是对源程序进行初步的语法检查
9. 若有函数max(a,b),并且已使函数指针变量p指向函数max,当调用该函数时,正确的调用方法是()    (满分:2)
    A. (*p)max(a,b);
    B. *pmax(a,b);
    C. (*p)(a,b);
    D. *p(a,b);
10. 下面程序的运行结果是()main(){char str[]="SSSWLIA", c; int k;for(k=2;(c=str)!='\0';k++){switch(c){case 'I': ++k; break;case 'L': continue;default: putchar(c);continue;}putchar('*');}}    (满分:2)
    A. SSW*
    B. SW*
    C. SW*A
    D. SW
11. 下面程序的运行结果是 (   )          main()   {inta,i;         for(i=1;i3))%5;   printf("%2d",a);}}    (满分:2)
    A. —40404
    B. —40403
    C. 一40443
    D. 一40440
12. 下列说法不正确的是()    (满分:2)
    A. 形参是局部变量
    B. 主函数中定义的变量在整个文件都有效
    C. 可以在一个函数的复合语句中定义变量
    D. 不同函数可以使用相同变量名
13. 为了避免嵌套的条件分支语句 if——else中的else总是与()组成成对关系    (满分:2)
    A. 缩排位置相同的
    B. 在其之前未配对的
    C. 在其之前未配对的最近的if
    D. 在同一行上的if
14. 若i为整型变量,则以下循环执行次数是():for(i=2;i==0;)printf("%d",i-- );    (满分:2)
    A. 无限次
    B. 0次
    C. 1 次
    D. 2次
15. 若运行以下程序时,从键盘输入3.6,2.4,(表示回车),则下面程序的运行结果是()#include    # include   main(){float x,y,z;   scanf("%f,%f",&x,&y);   z=x/y;   while(1)    {if(fabs(z)>1.0) {x=y;y=z;z=x/y;}    else break;}    printf("%f\n",y);}    (满分:2)
    A. 1.5
    B. 1.6
    C. 2.0
    D. 2.4
16. enum color{red,green,yellow=5,white,black}定义了一枚举类型。编译程序为值表中各标识符分配的枚举值依次为()    (满分:2)
    A. 1、2、3、4、5
    B. 0、1、5、2、3
    C. 0、1、5、6、7
    D. 3、4、5、6、7
17. 在C语言中,要求运算数必须是整型的运算符是()    (满分:2)
    A. /
    B. ++
    C. !=
    D. %
18. 若调用一个函数,且此函数中没有return语句,关于该函数则正确的说法是()    (满分:2)
    A. 没有返回值
    B. 返回若干个系统默认值
    C. 能返回一个用户所希望的函数值
    D. 返回一个不确定的值
19. 下面程序的运行结果是()#include main(){char a[]="morning",t;int i,j=0;for(i=1;i<7;i++) if(a<a)j=i;t=a;a=a;a=t;puts(a);}    (满分:2)
    A. mogninr
    B. mo
    C. morning
    D. morning
20. 下面程序的运行结果是()#include"stdio.h"main(){int a,b;for(a=1,b=1;a=20) break;if(b%3==1) {b+=3;continue;}b-=5;}printf("%d\n",a);}    (满分:2)
    A. 7
    B. 8
    C. 9
    D. 10
21. 以下描述中正确的是()    (满分:2)
    A. 由于do~while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句
    B. do~while循环由do开始,用while结束,在while(表达式) 后面不能写分号
    C. 在do~while循环体中,一定要有能使while后表达式值变为零("假")的操作
    D. do~while循环中,根据情况可以省略while
22. 位段名访问的方式是()    (满分:2)
    A. 用结构名.位段名
    B. 用位段名
    C. 用结构名
    D. *&位段名
23. 以下正确的说法是()    (满分:2)
    A. 定义函数时,形参的类型说明可以放在函数体内
    B. return后边的值不能为表达式
    C. 如果函数值的类型与返回值类型不一致,以函数值类型为准
    D. 如果形参与实参的类型不一致,以实参类型为准
24. 以下正确的说法是()    (满分:2)
    A. 实参和与其对应的形参各占用独立的存储单元
    B. 实参和与其对应的形参共占用一个存储单元
    C. 只有当实参和与其对应的形参同名时才共占用存储单元
    D. 形参是虚拟的,不占用存储单元
25. 若有说明:int a[ ]={0,0};则下面不正确的叙述是()    (满分:2)
    A. 数组a的每个元素都可得到初值0
    B. 二维数组a的第一维大小为1
    C. 因为二维数组a中第二维大小的值除以初值个数的商为1,故数组a行数为1
    D. 只有元素a和a可得初值0,其余元素均得不到初值0
26. 若使用一维数组名作函数实参,则以下正确的说法是()    (满分:2)
    A. 必须在主调函数中说明此数组的大小
    B. 实参数组类型与形参数组类型可以不匹配
    C. 在被调函数中,不需要考虑形参数组的大小
    D. 实参数组名与形参数组名必须一致
27. 若有 int k=2; int *ptr1, *ptr2; ptr1=&k; ptr2=&k ;那么下列正确的语句是()    (满分:2)
    A. k=*ptr1+*ptr2
    B. ptr2=ptr1*2
    C. *ptr1=*ptr2
    D. ptr1=*ptr1*(*ptr2)
28. 下面四个选项中,均是不合法的整型常量的选项是()    (满分:2)
    A. ‘--0f1 -0xffff 0011
    B. -0Xcdf 017 12,456
    C. -018 999 5e2
    D. -0x48eg -068 03f
29. 已知一个函数的定义如下:double fun(int x, double y)    { …… } 则该函数正确的函数原型声明为()    (满分:2)
    A. double fun (int x,double y)
    B. fun (int x,double y)
    C. double fun (int,double);
    D. fun(x,y) ;
30. 关于函数声明,以下不正确的说法是()    (满分:2)
    A. 如果函数定义出现在函数调用之前,可以不必加函数原型声明
    B. 如果在所有函数定义之前,在函数外部已做了声明,则各个主调函数不必再做函数原型声明
    C. 函数再调用之前,一定要声明函数原型,保证编译系统进行全面的调用检查
    D. 标准库不需要函数原型声明
31. 以下不正确的说法是()    (满分:2)
    A. 全局变量,静态变量的初值是在编译时指定的
    B. 静态变量如果没有指定初值,则其初值为0
    C. 动态变量如果没有指定初值,则其初值不确定
    D. 函数中的静态变量在函数每次调用时,都会重新设置初值
32. C语言提供的预处理功能包括条件编译,其基本形式为:#XXX标识符 程序段1#else程序段2#endif这里XXX可以是()    (满分:2)
    A. define或include
    B. ifdef或include
    C. ifdef或ifndef或define
    D. ifdef或ifndef或if
33. sizeof(float)是( )    (满分:2)
    A. 一个整型表达式
    B. 一种函数调用
    C. 一个不合法的表达式
    D. 一个不合法的表达式
34. 若有如下语句:intx=3; do { printf(" %d\n",x -=2);} while(!(--x));则上面程序段()    (满分:2)
    A. 输出的是 1
    B. 输出的是1和-2
    C. 输出的是3和0
    D. 是死循环
35. 以下不正确的定义语句是()    (满分:2)
    A. doublex={2.0,4.0,6.0,8.0,10.0};
    B. inty={0,1,3,5,7,9};
    C. charc1[]={’1’,’2’,’3’,’4’,’5’};
    D. char c2[]=}{'\x10','\xa','\x8'};
二、多选题:
1. 以下关于C源程序文件的说法中正确的是()    (满分:2)
    A. 是一种二进制文件
    B. 是一种文本(ASCII码)文件
    C. 可以用DOS的type命令显示其内容
    D. 文件扩展名一般为c
2. 在下面C语言的函数说明语句中,正确的是()    (满分:2)
    A. int fun(int , int);
    B. int fun(int x,y);
    C. int fun(x,y);
    D. int fun(int x; int y);
    E. int fun(int x,int y);
3. 以下哪些是关于指针数组的正确描述()    (满分:2)
    A. int (*a);
    B. int *a;
    C. 指针数组每个元素都是指针变量
    D. 若int a; int *b[]={a,a,a,a}; 则b是指针数组
    E. 指针数组与指向数组的指针是等价的
4. 以下程序正确计算p=n! (n>=0)的是()    (满分:2)
    A. for(p=1.0,k=1;k<=n;) p*=k++;
    B. p=1.0;k=0;while(k<n) p*=++k;
    C. p=1.0;k=1;do{++k;p*=k;} while(k<=n);
    D. p=1.0;for(k=n;k>=1;k--) p*=k--;
5. 在函数调用过程中,下列说法正确的是()    (满分:2)
    A. 形式参数和实在参数各占一个独立的存储单元
    B. 形式参数和实在参数存储空间都是在函数调用时分配的
    C. )在函数的执行过程中,形参变量值的改变不会影响实参值的改变
    D. 函数调用结束时,临时存储区被撤消
    E. 在函数调用过程中,实在参数与形式参数在个数、类型上必须匹配
三、判断题:
1. 设有下列说明语句struct ss{int x;float y;}ex; 则ex是结构体类型名。    (满分:2)
    A. 错误
    B. 正确
2. C语言采用解释方式将源程序转换为二进制的目标代码。    (满分:2)
    A. 错误
    B. 正确
3. C程序是由函数构成的,每一个函数完成相对独立的功能。    (满分:2)
    A. 错误
    B. 正确
4. 对于指向同一个数组的两个变量而言,两个指针变量相减的操作是有意义的。    (满分:2)
    A. 错误
    B. 正确
5. 条件运算符“?:”的优先级高于赋值运算符。    (满分:2)
    A. 错误
    B. 正确
6. continue语句用在循环体中,可使整个循环不结束。    (满分:2)
    A. 错误
    B. 正确
7. 字符型数据和整数之间是不可以通用的。    (满分:2)
    A. 错误
    B. 正确
8. 被定义为指向某结构体类型数据的指针变量,即可以指向具有该类型的变量,又可以指向它其中的一个成员。    (满分:2)
    A. 错误
    B. 正确
9. 指针变量的值是无符号整型值,所以指针变量都是整型变量。    (满分:2)
    A. 错误
    B. 正确
10. 在内存中存储结构体类型的变量要占连续一段的存储单元。    (满分:2)
    A. 错误
    B. 正确
页: [1]
查看完整版本: 电子科技大学11秋《C语言》在线作业一二三答案