C语言试题1.docx
- 文档编号:6439833
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:27
- 大小:33.78KB
C语言试题1.docx
《C语言试题1.docx》由会员分享,可在线阅读,更多相关《C语言试题1.docx(27页珍藏版)》请在冰豆网上搜索。
C语言试题1
模拟测试
1.C语言的结构
1.在C语言中,程序的基本单位是______,一个C源程序至少包含一个______,当然也可以包含一个______和许多个其他的______。
2.C语言具有层次清晰的特点,它用函数作为程序模块以实现程序的______,从而使得程序易于调试和维护,符合现代编程的风格,所以C语言是一种______语言。
阅读下面的程序,回答3、4题。
程序1-1:
P1-1.c
#include
#include
main()
{
doubles;
printf("Inputanumber:
\n");
scanf("%f",&s);
s=sqrt(s);
printf("%lf\n",s);
}
3.在上面的程序中,include称为______,而类似math.h的以.h为扩展名的文件称为______。
4.在程序1-1中,属于数据说明的语句是______,整个函数体包含在______之中。
5.与一般的编程语言相比较,C语言具有限制小,灵活性______,语法限制______,程序设计自由度大,可移植性______,并且能够______访问内存。
6.以下说法中正确的是()。
A)C语言程序总是从第一个函数开始执行
B)在C语言程序中,要调用的函数必须在main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
2.数据类型及其运算
1.C语言的数据类型可以分为基本类型、______类型、______类型和空类型。
其中基本类型又可以分为整型、______、______和枚举类型。
构造类型可以分为______类型和______类型。
2.在C语言中,合法的字符常量是()。
A)'\084'B)'\x43'
C)'ab'D)"\0"
3.在C语言中不但规定了运算符的优先级,并且规定了运算符的______,这也是其他高级语言所没有的,同时也增加了C语言的复杂性。
例如,算术运算符的结合性是______,自增运算符“++”的结合性是______。
4.C语言中,运作对象必须是整型数据的运算符是()。
A)%B)\
C)%和\D)**
5.为表示关系x≥y≥z,应使用C语言表达式()。
A)(x>=y)&&(y>=z)B)(x>=y)AND(y>=z)
C)(x>=y>=z)D)(x>=y)&(y>=z)
6.如果假设
a=2,b=3,x=3.5,y=2.5
那么下面的算术表达式的值是()。
(float)(a+b)/2+(int)x%(int)y
A)2B)3
4C)3.5D)2.5
7.在C语言中,合法的长整型常数是()。
A)OLB)4962710
C)324562&D)216D
8.以下程序的输出结果是()。
程序1-2:
P1-2.c
main()
{
intx=10,y=10;
printf("%d%d\n",x--,--y);
}
A)1010B)99
C)910D)109
3.基本语句
1.C语言中一共有5类语句,它们是控制语句、______语句、______语句、空语句和______。
其中______语句在程序中可以用作空循环体。
2.以下合法的赋值语句是()。
A)x=y=100;B)d--;
C)x+y;D)c=int(a+b);
3.x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是()。
A)INPUTx、y、z;B)scanf("%d%d%d",&x,&y,&z);
C)scanf("%d%d%d",x,y,z);D)read("%d%d%d",&x,&y,&z);
4.以下的语句中,错误的是()。
A)putchar('a');B)printf("%d",n);
C)getchar();D)scanf("%7.2f",&a);
5.以下叙述中正确的是()。
A)输入项可以是一个实型常量,如:
scanf("%f",3.5);
B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:
scanf("a=%d,b=%d")'
C)当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:
scanf("%4.2f",&d);
D)当输入数据时,必须指明变量地址,例如:
scanf("%f",&f);
6.在下面的语句中除了使用控制语句以外,还使用的其他语句类型是()。
5while(getchar()!
='\n');
A)复合语句和空语句B)表达式语句和空语句
C)空语句和函数调用语句D)复合语句和函数调用语句选择结构程序设
选择结构程序设计:
1.将下面的程序运行两遍,若分别从键盘上输入6和4,则输出结果分别是()。
程序1-3:
P1-3.c
main()
{
intx;
scanf("%d",&x);
if(x++>5)
printf("%d",x);
else
printf("%d\n",x--);
}
A)7和5B)6和3
C)7和4D)6和4
2.阅读以下程序:
程序1-4:
P1-4.c
main()
{
intx;
scanf("%d",&x);
if(x--<5)
printf("%d",x);
else
printf("%d",x++);
}
程序运行后,如果从键盘上输入5,则输出结果是()。
A)3B)4
C)5D)6
3.假定w、x、y、z、m均为int型变量,有如下程序段:
w=1;
x=2;
y=3;
z=4;
m=(w w: x; m=(m m: y; m=(m m: z; 则该程序运行后,m的值是()。 A)4B)3C)1D)2 64.设a=3,b=4,c=5,则下面逻辑表达式的值是: ()。 ! (a+b)+c-1&&b+c/2 A)1B)10.5C)0D)−1 5.阅读以下程序: 程序1-5: P1-5.c main() { ints; scanf("%d",&s); switch(s==! s) { case0: printf("Thenumberisnot0");break; case1: printf("Thenumberis0");break; } } 程序运行后,如果从键盘上输入−9,则输出结果是()。 A)Thenumberisnot0B)Thenumberis0 C)程序出错D)0 4.循环结构程序设计 1.若变量i和j已经定义为int类型,则以下程序段中内循环体的总的执行次数是()。 for(i=5;i;i--) for(j=0;j<4;j++) {...} A)20B)25 C)24D)30 2.设I,j,k均为int型变量,则执行完下面的for循环后,k的值为()。 for(i=0,j=10;i<=j;i++,j--) k=i+j; A)11B)9 C)20D)10 3.有以下程序: 程序1-6: P1-6.c main() { inti,j; for(j=10;j<11;j++) { for(i=9;i if(! (j%i)) 7break; if(i=j-1) printf("%d",j); } } 输出结果是()。 A)11B)10 C)9D)12 4.以下程序的输出结果是()。 程序1-7: P1-7.c main() { inta,b; for(a=1,b=1;a<=100;a++) { if(b>=10) break; if(b%3==1) { b+=3; continue; } } printf("%d\n",a); } A)101B)6 C)5D)4 5.假定a和b为int型变量,则执行以下语句后b的值为()。 a=1; b=10; do { b-=a; a++; } while(b--<0); A)9B)-2 C)-1D)8 6.在C语言中,下面的说法正确的是()。 A)不能使用do-while语句构成的循环 B)do-while语句构成的循环必须用break语句才能退出 C)do-while语句构成的循环,当while语句中的表达式值为非0时结束循环 D)do-while语句构成的循环,当while语句中的表达式值为0时结束循环 5.数组的定义和引用 1.在下面的数组定义中,合法的是()。 A)inta[]="string";B)inta[5]={0,1,2,3,4,5}; C)vhsts="string";D)chara[]={0,1,2,3,4,5}; 2.若有定义和语句: chars[10]; s="abcd"; printf("%s\n",s); 则结果是(以下k代表空格)()。 A)输出abcdB)输出a C)输出abcdkkkkkD)编译不通过 3.给出以下定义: charx[]="abcdefg"; chary[]={'a','b','c','d','e','f','g'}; 则正确的叙述为()。 A)数组x和数组y等价B)数组x和数组y的长度相同 C)数组x的长度大于数组y的长度D)数组x的长度小于数组y的长度4.若有以下定义: doublew[10]; 则w数组元素下标的上限为______,下限为______。 5.下面各语句行中,正确的关于字符串操作的语句行是()。 A)charst[4][5]={"ABCDE"}; B)chars[5]={'A','B','C','D','E'}; C)char*s;s="ABCDE"; D)char*s;scanf("%s",s); 6.下述对C语言字符数组的描述中错误的是()。 A)字符数组可以存放字符串 B)字符数组中的字符串可以整体输入、输出 C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 D)不可以用关系运算符对字符数组中的字符串进行比较 7.定义如下变量和数组: inti; intx[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是()。 for(i=0;i<3;i++) printf("%d",x[i][2-1]); A)1,5,9B)1,4,7C)3,5,7D)3,6,9 6.函数 1.以下函数调用语句中含有()个实参。 func((exp1,exp2),(exp3,exp4,exp5)); A)1B)2C)4D)5 2.sizeof(double)是()。 A)一种函数调用B)一个双精度型表达式 C)一个整型表达式D)一个不合法的表达式 3.设有以下语句: charstr1[]="string",str2[8],*str3,*str4="string"; 则()不是对库函数strcpy的正确调用。 A)strcpy(str1,"HELLO1");B)strcpy(str2,"HELLO2"); C)strcpy(str3,"HELLO3");D)strcpy(str4,"HELLO4"); 4.设有如下的函数: g(x) floatx; { printf("\n%d",x*x); } 则函数的类型 A)与参数x的类型相同B)是void C)是intD)无法确定 5.C语言规定,程序中各函数之间()。 A)既允许直接递归调用又允许间接递归调用 B)不允许直接递归调用又不允许间接递归调用 C)允许直接递归调用不允许间接递归调用 D)不允许直接递归调用允许间接递归调用 6.以下对C语言函数的有关描述中,正确的是()。 A)在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B)C函数既可以嵌套定义又可以递归调用 C)函数必须有返回值,否则不能使用函数 D)C程序中有调用关系的所有函数必须放在同一个源程序文件中 7.以下叙述中不正确的是()。 A)在C中,函数中的自动变量可以赋初值,每调用一次,赋一次初值 B)在C中,在调用函数时,实在参数和对应形参在类型上只需赋值兼容 C)在C中,外部变量的隐含类别是自动存储类别 D)在C中,函数形参可以说明为register变量 7.编译预处理 1.C提供3种预处理功能: ______、______和条件编译。 2.指出下面这句话的问题: C语言编译预处理是在编译之前完成的。 103.设有如下宏定义 #defineMYSWAP(z,x,y){z=x;x=y;y=z;} 以下程序段通过宏调用实现变量a、b内容交换,请填空。 floata=5,b=16,c; ______; 4.下列程序的运行结果是()。 程序1-8: P1-8.c #include #defineM3 #defineNM+1 #defineNNN*N/2 main() { printf("%d,",NN); printf("%d\n",5*NN); } A)3,17B)4,18C)6,18D)8,40 5.以下程序的输出结果是()。 程序1-9: P1-9.c #include #defineFUDGE(y)2.84+y #definePR(a)printf("%d",(int)(a)) #definePRINT(a)PR(a);putchar('\n') main() { intx=2; PRINT(FUDGE(5)*x); } A)11B)13C)15D)16 指针 1.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是()。 A)pb=&xB)pb=x;C)*pb=&x;D)*pb=*x 2.下面函数的功能是()。 sss(s,t) char*s,*t; { while((*s)&&(*t)&&(*t++==*s++)); return(*s-*t); } A)求字符串的长度B)比较两个字符串的大小 11C)将字符串s复制到字符串t中D)将字符串s接续到字符串t中 3.设有说明 int(*ptr)[m]; 其中的标志符ptr是()。 A)m个指向整型变量的指针 B)指向m个整型变量的函数指针 C)一个指向具有m个整型元素的一维数组的指针 D)具有m个指针元素的一维指针数组,每个元素都只能指向整型量 4.若要用下面的程序片段使指针变量P指向一个存储型变量的动态存储单元: int*p; p=______malloc(sizeof(int)); 则应填入()。 A)intB)int* C)(*int)D)(int*) 5.下面函数的功能是()。 intfunl(char*x) { char*y=x; while(*y++); return(y-x-1); } A)求字符串的长度B)比较两个字符串的大小 C)将字符串x复制到字符串yD)将字符串x连接到字符串y后面 6.设有以下定义: inta[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int(*prt)[3]=a,*p=a[0]; 则下列能够正确表示数组元素a[1][2]的表达式是()。 A)*((*prt+1)[2])B)*(*(p+5)) C)(*prt+1)+2D)*(*(a+1)+2) 7.函数NewPrint用于打印sin(x)、cos(x)和ln(x)等函数的曲线模拟,其参数就是上述函数,则NewPrint的原型为()。 A)doubleNewPrint(doublex) B)voidNewPrint(double(*f)(doublex)) C)void(*NewPrint)(doublex) D)void(*NewPrint)(doublef(doublex)) 8.结构体与共用体 1.结构体又称为“______”,是由具有不同数据类型的多个变量组合而成的数据存储形式。 定义一个结构体类型的一般形式为: 12struct结构体名{成员列表}; 其中的成员又可以称为“______”,成员表列可以称为“______”。 2.若有以下的说明,则对初值中字符'a'的引用方式为()。 staticstruct { charch; doublex; chara[]; }c[2][2]={ {{'a',3.5,'bc'}, {'c',4.5,'de'}, {'m',8.6,'abc'} } }; A)c.chB)c[0][0].ch C)c[1][1].chD)a[0] 3.设有以下说明语句: structex { intx; floaty; charz; }example; 则下面的叙述中不正确的是()。 A)struct结构体类型的关键字B)example是结构体类型名 C)x,y,z都是结构体成员名D)structex是结构体类型 4.以下选项中,能定义s为合法的结构体变量的是()。 A)typedefstructabc { doublea; charb[10]; }s; B)struct { doublea; charb[10]; }s; C)structabc { doublea; charb[10]; } abcs; D)typedefstructabc { 13doublea; charb[10]; } abcs; 5.变量a所占内存字节数是()。 unionU { charst[4]; inti; longl; }; structA { intc; unionUu; }a; A)4B)5C)6D)8 9.位运算 1.在位运算符中除了取反运算符“~”以外,其余均为______运算符,即要求运算符的两侧各有一个运算量,并且运算量只能是______或者______数据。 2.位段就是以位为单位定义长度的______类型中的成员,就是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的______。 3.整型变量x和y的值相等,且为非0值,则以下选项中,结果为0的表达式是()。 A)x||yB)x|yC)x&yD)x^y 4.设有以下语句: chara=3,b=6,c; c=a^b<<2; 则c的二进制值是()。 A)00011011B)00010100 C)00011100D)00011000 5.字符(char)型数据在微机内存中的存储形式是()。 A)反码B)补码 C)EBCDIC码D)ASCII码 10.文件操作 1.标准函数fgets(s,n,f)的功能是()。 A)从文件f中读取长度为n的字符串存入指针s所指的内存 B)从文件f中读取长度不超过n-1的字符串存入指针s所指的内存 C)从文件f中读取n个字符串存入指针s所指的内存 D)从文件f中读取长度为n-1的字符串存入指针s所指的内存 2.对于用“r”方式打开文件,下列说法正确的是()。 A)用“r”方式打开的文件只能输入,不能输出 B)用“r”方式打开的文件只能输出,不能输入 C)用“r”方式可以打开任何文件 D)以上均不对 3.下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。 #include"stdio.h" FILE*fp; { charch; if((fp=fopen(______))==NULL) exit(0); while((ch=getchar())! ='@') fputc(ch,fp); fclose(fp); } 4.下面的程序执行后,文件test.t中的内容是: 程序1-10: P1-10.C #include voidfun(char*fname,char*st) { FILE*myf; inti; myf=fopen(fname,"w"); for(i=0;i fputc(st[i],myf); fclose(myf); } main() { fun("test","newworld"); fun("test","hello,"); } A)hello,B)newworldhello, C)newworldD)hello,rld 5.下面的程序用来统计文件中字符的个数,请填空。 程序1-11: P1-11.C #include main() { FILE*fp; longnum=0; if((fp=fopen("fname.dat","r"))==NULL) { printf("Can'topenfile! \n");exit(0); } while______ { fgetc(fp); num++; } printf("num=%d\n",num); fclose(fp); } 6.设有如下程序: 程序1-12: P1-12.C #include main(argc,argv) intargc; char*argv[]; { FILE*fp; voidfc(); inti=1; while(--argc>0) if((fp=fopen(argv[i++],"r"))==NULL) { printf("Cannotopenfile! \n"); exit (1); } else { fc(fp); fclose(fp); } } voidfc(ifp) FILE*ifp; { charc; while((c=getc(ifp))! ='#') putchar(c-32); } 上述程序经编译、连接后生成可执行文件名为cpy.exe。 假定磁盘上有3个文本文件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 试题
![提示](https://static.bdocx.com/images/bang_tan.gif)