一、单项选择题(每空2 分,共50 分)(请将各小题正确答案的字母序号填到相应小题的下划线上)1.C语言的运算符按运算对象的数目可以分为。
A)单目运算一种B)单目和双目运算符C)单目、双目和三目运算符D)单目、双目、三目运算和四目运算符2.C语言表达式2/5*10的值是。
A) 0.04 B)4 C)4.0 D)03.已知变量f和i的类型说明如下:float f=12.34; int i;则以下符合C语言语法的表达式是。
A) i=(int)f%5 B) i=int(f)%5C) i=f%5 D) i=(int f)%54.能正确表示数学式1≤x≤5的C语言表达式是。
A)1 <=x<=5 B)(x> =1)&(x<=5 )C)(x>=1 )&&(x<=5) D)(1 < =x)||(5> =x)5.设变量c的数据类型是char,i的数据类型是int,f的数据类型是float,则C语言表达式c*i+c*f-i+100值的数据类型为。
A)int B) float C) char D)不确定6.在下列选项中,合法的C语言用户标识符的是。
A)int B)sin C)if D)i+j7.C程序的执行从开始。
A)程序中的第1个语句B)程序中的第1个函数C)名为main 的函数D)包含文件的第1个函数8.凡在C语言函数中未指定存储类别的变量,其隐含的存储类别为。
A)自动(auto) B)静态(static) C)字符串D)字符或字符型变量值9.以下程序运行时要求输入10和20分别存放在变量x和y中,能正确输入数据的是。
main(){int x,y;scanf("x=%d,y=%d",&x,&y);printf("x+y=%d",x+y);}(说明:用<CR>表示换行符,用_表示空格符)A)10_20<CR> B)x=10,y=20<CR>C)10<CR> D)x=10<CR>20<CR> y=20<CR>10.下面程序的运行结果是。
main(){int a,b;a=32767;b=a+1;printf("a=%d,b=%d\n",a,b);}A)a=32767,b=-32768 B)a=32767,b=32768C)a=32767,b=1 D)运行出错11.在C语言中,以下错误的描述是。
A)break语句不能用于循环语句和switch语句外的任何其它语句B)在switch语句中使用break语句或continue语句的作用相同C)在循环语句中使用continue语句是为了结束本次循环,而不是终止整个循环D)在循环语句中使用break语句是为了使流程跳出循环体,提前结束循环12.在C语言中,数组作为函数的形参,函数调用时,若用数组名作为函数的实参,则实际上传递给形参的是。
A)数组首地址B)数组的第一个元素值C)数组中全部元素的值D)数组元素的个数13.C语言编译系统对宏命令是。
A)在程序运行时进行替换处理B)在程序连接时进行处理C)和源程序中其它C语句同时进行编译D)在对源程序中其它成份正式编译之前进行处理14.设 x、y为整型变量且已赋值,将其中较大的值输出的、正确的 if 语句是。
A) if ( x >y ) printf ( “ %d ” , x );B) if ( x >y ) printf ( “ %d ” , x );printf ( “ %d ” , y );C) if ( x >y ) ; printf ( “ %d ” , x ); else printf ( “ %d ” , y );D) if ( x >y ) printf ( “ %d ” , x ); else printf ( “ %d ” , y );15.对以下程序段描述正确的是。
x=10;while(x) x=x/4;A) 不执行循环体B) 循环体执行一次C) 循环体执行二次D) 死循环16.在C语言中,引用数组元素时,对数组下标的数据类型以下说法错误的是。
A) 数组下标可以用整型常量B) 数组下标可以用整型变量C) 数组下标可以用任意类型的表达式D) 数组下标可以用整型表达式17.以下C函数的功能是。
int fun(int x,int y){ int z=0;z=x>y?x:y;return z; }A) 求x 和y二者中的最大值B) 求x 和y二者中的最小值C) 返回一个不确定的值D) 返回函数值为“0”18.定义数组:int s[10];则数组元素下标的取值。
A) 最小值为1,最大值为10 B) 最小值为0,最大值为10C) 最小值为0,最大值为9 D) 最小值为1,最大值为919.已知 int i,s[4][5];不能表示数组第3行第3列元素值的是。
A) * ( * ( x) )+ 3 B) x [ 3 ] [ 3 ]C) * ( * ( x + 3 ) + 3 ) D) * ( x [ 3 ] + 3 )20.以下C函数的类型是。
fun (float f ){ printf ( “ %f \n ” , f ) ; }A) int B) float C) void D) 无法确定21.设char *s1,s2[255]=“programing” ;以下操作正确的是。
A) *s1 = “function”;B) s2=“function”;s1=s2;C) s1 = “function”;s2=s1;D) *s2='P';s1 =s2 ;22.设有说明语句:struct student{ int num,age; };struct student stu[3]={{6001,20},{6003,21},{6005,19}};struct student *p=stu;则下面的C语言表达式中,值为6003的是。
A) ++(p->num) B) (p++)->numC) (*p++).num D) (*++p).num23.已有定义 int ( * p ) ( ) ; 则指针 p 可以。
A) 代表函数的返回值B) 指向函数的入口地址C) 代表函数的类型D) 代表函数返回值的类型24.若用下列语句输出26个大写英文字母:(1)for(a='A';a<='Z';a++) printf("%c",a);(2)for(a='Z';a>='A';a--) printf("%c",a);(3)for(a='A';a<='Z';) printf("%c",a++);(4)for(a='A';a++<='Z';) printf("%c",a);以下说法正确的是。
A)全都能输出B)只有前三个语句可以输出C)只有前两个语句可以输出D)只有第一个语句可以输出25.设以下程序用来求三个元素的数组中,第1个元素与第3个元素之和(程序每行前面的数字表示行号)。
1 main()2 { int a[3]={3*0},i;3 for(i=1;i<3;i++) scanf("%d",a[i]);4 for(i=1;i<3;i++) a[0]=a[0]+a[i+1];5 printf("%d",a[0]); }则下述说法正确的是。
A)第2行有语法错误B)第3行有错误,程序得不到预期结果C)编译时第4行出现语法错误D)可以得到正确结果一、程序阅读题(每小题3分,共18分))1.#include<stdio.h>main(){ int a,b,c,d;unsigned u;a=12;b=-24;u=10;c=a+u;d=b+u;printf("a+u=%d,b+u=%d\n",c,d); }程序运行结果为:2.#include <stdio.h>main(){ int a=10,b=0;if (a!=0){ a=a+1;b=b+1;}else{ a=a+2;b=b+2;}printf(“%d,%d\n",a,b); }程序运行结果为:3.#define V(s) s*s*s#include <stdio.h>main(){ int volume;volume=V(1);printf("%d\t",volume);volume=V(2);printf("%d\t",volume);volume=V(1+2);printf("%d\n",volume);}程序运行结果为:4.#include <stdio.h>main(){ char s[]={"12345"};void sub_s1(char s[],int n) ;void sub_s2(char s[ ],int n);sub_s1(s,5);sub_s2(s,6);}void sub_s1(char s[],int n){ int i,j;for(i=0;i<n;i++){ for(j=0;j<i;j++) printf("%c",s[j%5]);printf("\n");}}void sub_s2(char s[ ],int n){ int i,j;for(i=0;i<n;i++){ for( j=i;j<n;j++) printf("%c",s[j%5]);printf("\n");}}程序运行结果为:#include <stdio.h>main(){ int i,a;int fun(int m);for(i=0;i<2;i++){ a=fun(4+i);printf("%d\n",a); } }int fun(int m){ static int n=0;m/=2;m=m*2;if(m){ n=n*m; return (fun(m-2));}else return(n++);}程序运行结果为:5.#include <stdio.h>main(){ int i,k=0,s[10]={1,2,3,4,5,6,7,8,9,10};for(i=0;i<10;i++)if(i%2) k+=s[i];for(i=i-1;i>=0;i--)if(i%5= =0) printf(“%d\t”,s[i]);printf(“%d\n”,k);}程序运行结果为:二、填空题(每空2 分,共20 分))6.以下程序运行时从键盘输入字符串ABCDE按回车键结束输入,要求在下划线上填入合适的内容,使输入字符串中的‘A’和‘B’转换为字符‘#’输出,其它字符输出为‘*’。