出自:兰州大学C语言程序设计

21. (4分)设有以下程序片段, int i=010,j=10,k=0xl0;printf(.%d,%d,%d.,k,j,i);请问执行后的输出结果是( ) A. 16,10,8 B. 8 10 16 C. 10,10,10 D. 8,10,16
20. (4分)要打开一个已存在的非空文件"file"用于修改,选择正确的语句 A. fp=fopen(.file.,.r.) B. fp=fopen(.file.,.w.) C. fp=fopen(.file.,.r+.) D. fp=fopen(.file.,.w+.) E.
19. (4分)有下列程序段:char ch; int s=0; for(ch=’A’;ch<’Z’;++ch) if(ch%2= =0) s++; printf(“%d”,s);则执行上述片段后,程序的输出结果是( ) A. 13 B. 12 C. 26 D. 25
18. (4分)已有程序段和输入数据的形式,main(){ int a;float f;printf(.Input number:.);(输入语句)printf(. f=%f,a=%d .,f,a);}Input number:4.5uu2(u代表空格) A. scanf(.%d,%f.,&a,&f) B. scanf(.%f,%d.,&f,&a) C. scnaf(.%d%f.,&a,&f) D. scanf(.%f%d.,&f,&a)
17. (4分)10+’a’+1.5-567.345/’b’的结果是( )型数据 A. long B. double C. int D. unsigned float
16. (4分)若fp已正确定义并指向某个文件,当未遇到该文件结束标志时,函数feof(fp)值 A. 0 B. 1 C. -1 D. 一个非0值的
15. (4分)下面四个选项中,均是不合法的用户标识符的选项是( ) A. A,P_0,do B. float,la0,_A C. b-a,goto,int D. _123,temp,INT
14. (4分)判断char型变量ch是否为小写字母的正确表达式为( ) A. a.<=ch<=.z. B. (ch>=a)&&(ch<=z) C. (ch>=.a.)||(ch<=.z.) D. (ch>=.a.)&&(ch<=.z.)
13. (4分)下面程序#include main(){int a=1,b=10;do{b-=a;a++;}while(b--<0);printf(.a=%d,b=%d .,a,b);}的运行结果是( ) A. a=3,b=11 B. a=2,b=8 C. a=1,b=-1 D. a=4,b=9
12. (4分)以下运算符优先级最高的是( ) A. && B. & C. || D. |
11. (4分)定义一个联合体变量时,系统分配给它的内存是( ) A. 联合体中第一个成员所需内存量 B. 联合体中最后一个成员所需内存量 C. 成员中占内存量最大者所需的容量 D. 各成员所需内存量的总和
10. (4分)printf函数中用到格式符.%4s.,其中数字4表示输出的字符串站用4列。如果字符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方式为( ) A. 从左起输出该字符串,右补空格 B. 按原字符长从左向右全部输出 C. 右对齐输出该字符,左补空格 D. 输出错误信息
9. (4分)设有说明:char *str[10];则标识符str的意义是( ) A. str是一个指向有10个元素的数组的指针 B. str是一个有10个元素的数组,数组元素的数据类型是指向char型的指针型 C. str是一个指向char型函数的指针 D. str是具有10个指针元素的一维指针数组,每个元素都只能指向整型变量
8. (4分)下面程序main(){int x=4,y=0,z;x*=3+2; printf(“%d”,x);x*=y= =(z=4); printf(“%d”,x);}的输出结果是( ) A. 14 40 B. 20 0 C. 20 4 D. 14 4
7. (4分)以下对二维数组a的正确说明是( ) A. int a[3][] B. float a(3,4) C. double a[1][4] D. float a(3)(4)
6. (4分)下面能正确进行字符串赋值操作的是( ) A. char s[5]={.ABCDE.} B. char s[5]={.A.,.B.,.C.,.D.,.E.} C. char *s D. s=.ABCDE. E. char *s F. scanf(.%s.,s)
5. (4分)若数组a有m列,则ali][j]之前的数组元素个数为( ) A. (i-1)*(i-1) B. i*m+j+1 C. i*m+j-1 D. i*m+j
4. (4分)下面是对s的初始化,其中不正确的是( ) A. char s[5]={.abc.} B. char s[5]={.a.,.b.,.c.} C. char s[5]=.. D. char s[5]=.abcde.
3. (4分)C语言规定,函数返回值的类型是由( )所决定。 A. return语句中的表达式类型 B. 调用该函数时的主调函数类型 C. 调用该函数是系统临时指定 D. 在定义该函数时所指定的函数类型
2. (4分)变量的指针,其含义是指变量的( ) A. 值 B. 地址 C. 名 D. 一个标志
1. (4分)根据下面的定义,能打印出字母“M”的语句是( )struct person{char name[9];int age;};struct person class[10]={.John.,17,.Paul.,19,.Mary.,18,.adam.,16 }; A. printf(.%c\n.,class[3].name) B. printf(.%c\n.,class[3].name[l]) C. printf(.%c\n.,class[2].name[l]) D. printf(.%c\n.,class[2].name[0])
4. (4分)main(){int x,y,z;x=1;y=1;z=0;x=x||y&&z;printf(.%d,%d.,x,x&&!y||z);}程序的运行结果是1,1
(4分)strcmp3(char *s,char *t){for (;*t= =*s;){if (!*t) return 0; t++;s++;}return (*s-*t);}库函数strcmp(char*s,char*t)是功能相等的程序段
2. (4分)对for(表达式1; ;表达式3)可理解为for (表达式1;1;表达式3)
1. (4分)int k=0;do{++k;}while(k>=0);是无限循环的语句
21. (4分)设有:int a=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后n的值为( ) A. 1 B. 2 C. 3 D. 4
20. (4分)一下关于宏替换的叙述不正确的是 A. 宏替换只是字符替换 B. 宏名无类型 C. 宏替换不占用运行时间 D. 宏替换不占用编译时间
19. (4分)在C语言中,反斜杠符是( ) A. \n B. \t C. \v D. \\
18. (4分)以下程序的运行结果是( )void sub (int x,int y,int *z){*z=y-x;}main(){int a,b,c;sub(10,5,&a);sub(7,a,&b);sub(a,b,&c);printf(.%4d,%4d,%4d.,a,b,c);} A. 5, 2, 3 B. -5, -12, -7 C. -5, -12, -17 D. 5, -2, -7
17. (4分)已有程序段和输入数据的形式,main(){ int a;float f;printf(.Input number:.);(输入语句)printf(. f=%f,a=%d .,f,a);}Input number:4.5uu2(u代表空格) A. scanf(.%d,%f.,&a,&f) B. scanf(.%f,%d.,&f,&a) C. scnaf(.%d%f.,&a,&f) D. scanf(.%f%d.,&f,&a)
1. (4分)设E为表达式,以下与do…while(E);不等价的语句是 A. do…while(!E==0) B. do…while(E>0||E<0) C. do…while(E==0) D. do…while(E!=0)
2. (4分)以下程序的运行结果为( )#include main(){struct date{int year,month,day;}today; printf(.%d .,sizeof(struct date));} A. 6 B. 8 C. 10 D. 12
(4分)设有以下程序:#inlude main(){int * *k,*j,i=100;j=&i;k=&j;printf(“%d”, * *k);}上述程序的输出结果是( ) A. 运行错误 B. 100 C. i的地址 D. j的地址
4. (4分)下列运算符中优先级最低的是( ) A. ? : B. && C. + D. !=
5. (4分)函数ftell的作用是( ) A. 取得当前文件指针的位置,该位置为相对于文件开头的位移量表示 B. 取得当前文件指针的位置,该位置为相对于文件末尾的位移量表示 C. 出错时返回值为0 D. 以上叙述都不正确
6. (4分)若有以下定义, int k=7,x=12, 则能使值为3的表达式是( ) A. x%=k%=5 B. x%=k-k%5 C. x%=(k-k%5) D. (x%=k)-(k%=5)
7. (4分)根据题目中已给出的数据输入和输出形式,main(){int x;float y;printf(.enter x,y:.);输入语句;输出语句}输入形式:enter x,y:2 3.4输出形式:x+y=5.40, 程序中输入输出语句的正确内容是( ) A. scanf(.%d,%f.,&x,&y),printf(.\nx+y=%4.2f.,x+y) B. scanf(.%d%f.,&x,&y),printf(.\nx+y=%4.2f.,x+y) C. scanf(.%d%f.,&x,&y),printf(.\nx+y=%6.1f.,x+y) D. scanf(.%d%3.1f.,&x,&y),printf(.\nx+y=%4.2f.,x+y)
(4分)以下程序#include main(){printf(.%d .,NULL);}的输出结果是( ) A. 不确定的值(因变量无定义) B. 0 C. -1 D. 1
9. (4分)下面程序的运行结果是( )#includemain(){int i,b,k=0;for(i=1;i<=5;i++){b=i%2;while(b-->=0) k++;}printf(.%d,%d.,k,b);} A. 3,-1 B. 8,-1 C. 3,0 D. 8,-2
10. (4分)以下对C语言函数的有关描述中,正确的是 A. 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B. C函数既可以嵌套定义又可以递归调用 C. 函数必须有返回值,否则不能使用函数 D. C程序中有调用关系的所有函数必须放在同一个源程序文件中
11. (4分)以下叙述正确的是( ) A. 在C程序中,main函数必须位于程序的最前面 B. 在C程序的每一行只能写一条语句 C. C语言本身没有输入输出语句 D. 在对一个C程序进行编译的过程中,可发现注释中的拼写错误
12. (4分)若有以下定义:int a[ ]={1,2,3,4,5,6,7,8,9},*p=a;则值为5的表达式是( ) A. p+=4,*(p++) B. p+=4,*++p C. p+=5,*p++ D. p+=4,++*p
13. (4分)下面程序的运行结果是( )#include main(){int a[6],i;for(i=1;i<6;i++){a[i]=9*(i-2+4*(i>3))%5;printf(.%2d.,a[i]);}} A. 4 0 4 0 4 B. -4 0 4 0 3 C. -4 0 4 4 3 D. -4 0 4 4 0
14. (4分)printf函数中用到格式符.%4s.,其中数字4表示输出的字符串站用4列。如果字符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方式为( ) A. 从左起输出该字符串,右补空格 B. 按原字符长从左向右全部输出 C. 右对齐输出该字符,左补空格 D. 输出错误信息
15. (4分)关于fseek函数,以下有关操作的叙述不正确的是( ) A. 可以改变文件的位置指针 B. 可以实现文件的顺序读写 C. 可以实现文件的随机读写 D. 只可以顺序定位文件的位置指针
16. (4分)设有以下程序片段:char a[ ]=.hello.,*p;p=a;printf(.%d.,*(p+5));执行上面的程序片段后的结果为( ) A. 111 B. 0 C. 104 D. 不确定的值