C语言试卷
一、选择题(共20小题,每题2分,共40分) 1. 以下叙述正确的是____。 C
A.在C程序中,main函数必须位于程序的最前面。 B.C程序每行中只能写一条语句。 C.C语言本是没有输入输出语句。
D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 2. 用来表示变量A的首地址正确的写法是( )。 B A.A->p B.&A C.*A D.A.p
3. 设已有定义:float x;则以下对指针变量p进行定义且赋初值的语句正确的是()。D A.float *p=x; B.int *p=(float)x; C.float p=&x; D.float *p=&x;
4.设x、y、z都是整型变量,x、y的初值都是5,执行z=(++x)+(y- -)+1后,x、y、z三变量的值按顺序是( )。 D
A.5, 5, 11 B.6, 6, 13 C.4, 6, 12 D.6, 4, 12 5. 以下循环体的执行次数是( )。 C for(x=0,y=0;(y=123)&&(x<4);x++);
A.无限循环 B.循环次数不定 C.执行4次 D.执行3次 6. 下面()对变量的说明是错误的。 A
A. char c1, int x; B. int a,b; float x, y; C. int a; int b; D. char c1; int x; 7语句scanf(“%d,%d”,&a,&b)输入数据时,下列输入法正确的是 ____。A A.1,2 B. 1 2 C.1;2 D.12
8.执行语句for(i=1;i++<4; );后变量i的值是( )。 B A.3 B.4 C.5 D.不定 9. 执行下列程序后的k的值:____。C int I,j,k;
for(i=0,j=10;iA.9 B.8 C.10 D.11 10. 若有以下类型说明语句:char w;int x;float y;double z;
则表达式w*x+z-y的结果为( )类型。B A、float B、double C、int D、char
11. 一个函数返回值的类型是由( )决定的。B
A、return语句中的表达式类型; B、定义函数时所指定的函数类型 C、调用该函数的函数的类型 D、调用函数时临时类型 12. 对于下面的for循环语句,可以断定它( )。C for(x=0,y=0;(y!=123)&&(x<4);x++) printf(“--------“);
A、是无限循环(死循环) B、循环次数不定 C、共执行4次循环 D、共执行3次循环
13. 设有以下语句,则( )不是对a数组元素的正确引用,其中0<=i<10。A int a[10]={0,1,2,3,4,5,6,7,8,9}; int *p=a;
A、a[p-5] B、*(&a[i]) C、a[i] D、*(a+i)
14. 假定有以下变量定义:int k=7, x=12;则能使值为3的表达式是( ) 。D A、x%=(k%=5) B、x%=(k-k%5)
C、x%=(k-k%5) D、(x%=k)-( k%=5)
15定义如下变量B D int i=10;
下列循环的输出结果是: while(i>7)
{ i--;printf(“%d\\n”,n);} A.10 B. 9 C. 10 D.9
9 8 9 8
8 7 8 7
16. 以下各选项企图说明一种新的类型名,其中正确的是 ( ) 。C
A)typedef vl int; B)typedef v2=int;C)typedef int v3; D)typedef v4:int; 17. 给出以下定义:
char[x]=”abcdefg”;
char[y]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’}; 则正确的叙述为____。C
A. 数组x和数组y等价B. 数组x和数组y的长度相同C. 数组x的长度大于数组y的长度D. 数组x的长度小于数组y的长度
18. 以下数组定义中不正确的是( ) 。D
A)int a[2][3]; B)int b[][3]={0,1,2,3};
C)int c[100][100]={0}; D)int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
19. 整型变量X和Y的值相等,且为非0值,则以下选项中,结果为0的表达式是( ) 。 C A)x||y B)x|y C)x&y D)x^y 20.下列叙述中,不正确的是____。A
A.在main函数体内定义的变量是全局变量
B.在同一c程序文件中,不同函数中可以使用同名变量 C.形参是局部变量,函数调用完即失去意义
D.若同一文件中全局变量与局部变量同名,则全局变量在局部变量的作用范围内不起作用
CBDDC AABCB BCADB CCDCA
二、阅读下列程序,写出执行结果(共4小题,每题6分,共24分) 1. #include 2. #include void main() void main() { {int x=41,y=1; int x=1,a=0,b=0; if(x%3==0&&x%7==0) switch(x) {y+=x;printf(“y=%d\\n”,y);} {
Else case 0:b++; { y=x;printf(“y=%d”,y);} case 1:a++; } case 2:a++;b++;
结果: 41 }
printf(“a=%d,b=%d\\n”,a,b); }
结果:2 1
3:#include 4: void ss(char *s,char t) main() {{ int x=1,y=0,a=0,b=0; while(*s)
switch(x) { if(*s==t)*s='A'; { case 1: s++;}} switch(y) main()
{ case 0:a++; break; { char str1[100]=\"abcddfefdbd\
case 1:b++; break; ss(str1,c); printf(\"%s\} }
case 2:a++; b++; break; 答:abcAAfefAbA case 3:a++; b++; }
printf(\"a=%d,b=%dn\} 2 1
三、程序设计题(每题12分,共36分) 【题目1:】判断一个一维数组是否为有序(结果呈现:递增有序、递减有序和无序)。
/*有序数组就是 递增或递减的数组 */ #include int a[1000]; int main() { int i,n,f,ff;printf(\"有几个元素?\\n\"); while( scanf(\"%d\ {
f = ff=1; for( i=0;iscanf(\"%d\ }for( i=0;iif( a[i]ff = 0; }if( a[i]>a[i+1] ) { f = 0; } }
if( f==1 ) printf(\"为升序序列\"); if( ff==1 ) printf(\"为降序序列\"); if( (f+ff) == 0 ) printf(\"为乱序列\"); } return 0; }
【题目2:】题目:编写一个程序求和: Sum=1-2+3-4+5-6+……+99-100
【题目3:】用户从键盘输入一个字符串(字符中不包含空格),当输入回车时认为输入结束,统计输入字符串中小写英文字母、大写英文字母、数字字符、其他字符的个数
#include \"stdio.h\" #include \"string.h\" void main() {
int i=0;//小写英文字母数量 int j=0;//大写英文字母数量 int k=0;//数字字符数量 int others=0;//其他字符数量 char temp;//接收字符。 int tempcounter;
printf(\"Please input the string\") ; for(tempcounter=0;;tempcounter++) { scanf(\"%c\ if(temp=='\\n') break; else {
if((temp>='a')&&(temp<='z')) { i=i+1; continue; }
if((temp>='A')&&(temp<='Z')) { j=j+1; continue; }
if((temp>='0')&&(temp<='9')) { k=k+1; continue; }
others=others+1; } }
printf(\"小写英文字母数量: %d\\n\printf(\"大写英文字母数量: %d\\n\printf(\"数字数量: %d\\n\printf(\"其他: %d\\n\}