资源描述
全国高校计算机联合考试(广西)二级C语言试题卷
2011年12月24日 闭卷考试 考试时间:120分钟
第一卷
本卷共70分,其中第1~26题每题2分,第27~32题每题3分。
1.main()函数的特征是 。
A.可独立运行的函数 B.必不可少的函数
C.最先执行的函数 D.具有前述三种特征的函数
2. 下面标识符中,非法的C语言标识符是 。
A. _char B.Char C.a#b D.alb
3.下面常量中,非法的C语言常量是 。
A.‘tt’ B.10L C.0.01 D.0x10
4.设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是 。
A.-32768~32767 B.0~255 C.0~65535 D.-256~256
5.若w、x、y均为int型变量,则执行下列语句后,y的值是 。
w=5;x=w++;y=x+w--;
A.9 B.11 C.10 D.12
6.若之前有以下说明语句,则表达式c*x+z+y的结果类型是 。
char c; int x; float y, z;
A.double B.int C.char D.float
7.若y为int型变量,则执行以下语句后,y的值是 。
y=8;y+=y-=y*y;
A.64 B.-56 C.-112 D.-48
8.若m、a、b、c、d均为int型变量,则执行下列语句后的m值是 。
a=1;b=2;c=3;d=4;
m=a>b?a:c<d?c:d;
A.1 B.4 C. 2 D.3
9.若a、b为int型变量,则执行下列语句后的b值是 。
a=15;b=15;
do
{ b-=a;
a++;
}while(b--<0);
A.0 B.-15 C.-16 D.-1
10.若有以下语句,则下面选项 是正确的描述。
static char x[ ]=“china”;
static char y[ ]={‘c’,‘h’,‘i’,‘n’‘a’};
A.x数组与y数组长度相同 B.x数组长度大于y数组长度
C.x数组长度小于y数组长度 D.x数组和y数组的赋值是非法的
11.while(!x)中的条件表达式(!x)与下面条件 等价。
A.==0 B.x==1 C.x==0||x==1 D.x!=0
12.若已定义m为int型变量,则 是对指针变量p的正确说明和初始化。
A.int p=&m; B.int *p=m; C.int *p=*m; D.int *p=&m;
13.若用数组名作为函数调用的实参,则实际上传送给行参的是 。
A.数组的全部元素值 B.数组的首地址
C.数组的第一个元素值 D.数组所含元素数目
14.若有以下语句,再执行语句j=!c&&i++;则变量i和j的值分别是 。
char c=’ x’; int i =1, j;
A.1,1 B.2,0 C.2,1 D.1,0
15.若之前有如下宏定义,则执行系列语句:z=4*(N+y(5));后的结果是 。
#define N 2
#define y(n) ((N=1)﹡n
A.z值为68 B.z值为180 C.z值为60 D.语句有错误
16.在C语言中函数返回值的类型缺省时,函数默认为 。
A.returu语句中的表达式类型 B.调用该函数的主函数类型
C.int类型 D.void类型
17.若有以下语句,则对数组元素正确引用的是 。
int a[ ]={2,4,6,8,10,12},*ptr;ptr=a;
A.a B.a[6] C.*ptr D.ptr
18.有以下说明和p=&studl;语句,对结构变量中成员age的正确引用的是 。
struct student
{ int age;
int sex;
}stud1,*p;
A.p->age B.student.age C.*p.age D.student.stud1.age
19.语句float *p();说明了 。
A.p是指向一维数组的指针变量
B.p是一函数名,该函数的返回值是指向float类型数据的指针
C.p是指向函数的指针,该函数返回值的类型是float
D.p是指向float类型数据的指针变量
20.若要用fopen函数建一个新的二进制文件,该文件要即能读也能写,则文件方式字符串应该为 。
A.“ab+” B.“wb+” C.“rb+” D.“ab”
第二部分:简单程序
21.以下程序的输出结果是 。
main()
{ int n=4;
while(n>0) {n--;printf(“%d”,n);}
}
A.2 0 B.3 2 1 C.3 2 1 0 D.2 1 0
22.下列程序运行后的输出结果是 。
main()
{ int i=1;
while(i<=7)
if(++i%3!=2) continue;
else printf(“%d”,i);
printf(“\n”);
}
A.158 B.26 C.125 D.258
23.两次运行下面的程序,如果从键盘是分别输入6和4,则输出结果分别是 。
main()
{ int x;
scanf(“%d”,&x);
if(x>5) printf(“%d”,++x);
else printf(“%d”,x--);
}
A.7和4 B.6和3 C.7和3 D.6和4
24.运行以下程序的输出结果是 。
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);
}
A.a=1,b=1 B.a=2,b=1 C.a=1,b=0 D.a=2,b=2
25.以下程序的输出结果是 。
main( )
{ char a[10]={‘1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’,0},*p;
int i=8;
p=a+i;
printf(“%s\n”,p-3);
}
A.123456789 B.6789 C.’6’ D.789
26.以下程序的输出结果是 。
main()
{ char s[]=“TODAY IS happy!”,*p=s;
while(*p)
{ if(*p>=’A’&&*p<=’Z’)*p=*p-’A’+’a’;
p++; }
printf(“%\n”,s);
}
A.TODAY IS happy! B.TODAY IS HAPPY!
C.today is happy! D.today is HAPPY!
27.运行下面的程序,其输出结果是 。
main()
{ char ch[3][4]={ “123”,”456”,”789”};
int i;
for(i=0;i<3;i++)
printf(“%s”,ch[i]);
}
A.123 B.1 C.123 D.123456789
4 456
7 789
28.下列程序运行后的输出结果是 。
main()
{ int b[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;
for(i=0;i<3;i++)
for(j=i;j<=i;j++) t=t+b[i][b[j][j]];
printf(“%d\n”,t);
}
A. 4 B. 3 C. 1 D. 9
29.下列程序运行后的输出结果是 。
int a, b;
void fun()
{ a=100;b=200; }
main()
{ int a=5, b=7;
fun();
printf(“%d%d\n”,a,b);
}
A.100200 B.57 C. 200100 D.75
30.系列程序运行后的输出结果是 。
main()
{ int i, n=0;
for(i=2;i<5;i++)
{ do
{ if(i%3) continue;
n++;
}while(!i);
n++;
}
printf(“n=%d\n”,n);
}
A. n=5 B. n=2 C.n=3 D. n=4
31.系列程序运行后的输出结果是 。
void main()
{ int m=4,n=2,k;
k=fun(m,n);
printf(“%d\n”,k);
k=fun(m,n);
printf(“%d\n”,k);
}
fun(int x,int y)
{ static int n=3,i=2;
i+=n+1;
n=i+x+y;
return (n);
}
A. 12 B. 12 C. 12 D. 12
25 23 12 16
32.下列程序运行后的输出结果是 。
void sort(int a[ ],int n)
{ int i, j, t;
for(i=0;i<n-1;i+=2)
for(j=i+2;j<n;j+=2)
if(a[i]<a[j]) { t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(aa,10);
for(i=0;i<10;i++) printf(“%d,”,aa[i]);
printf(“\n”);
}
A.1,2,3,4,5,6,7,8,9,10, B.10,9,8,7,6,5,4,3,2,1,
C.9,2,7,4,5,6,3,8,1,10, D.1,10,3,8,5,6,7,4,9,2,
第二卷
说明:(1)第二卷均为程序填空题,在阅读和理解程序的基础上,在第二卷答题卡是编号对应的栏目中填入适当的字符、语句,以构成一个正确的C语言程序。
(2)每空栏3分,10个空栏共30分。
试题一:以下程序将两个数从小到大输出。
main()
{ float a,b, 1 ; temp
scanf(“ 2 “,&a,&b); %f%f
if(a>b)
{ temp=a;
3 ; a=b
b=temp; }
printf(“%f,%f” ,a,b);
}
试题二:以下程序是打印出所有的”水仙花数”,所谓”水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个”水仙花数”,因为153=1×1×1+5×5×5+3×3×3。
main()
{ int i, j, k, n;
printf(“’water flower’ number is:”);
for(n=100; 4 ;n++) n<=999
{ i=n/100;
j= 5 ; n/10%10或n%100/10
k=n%10;
if( 6 )printf(“%-5d”,n); n==i*i*i+j*j*j+k*k*k
}
printf(“\n”);
}
试题三:以下程序通过写一函数求一个字符串的长度,在main函数中输入字符串,并输出其长度。
main()
{ int len;
7 ; char str[100]
printf(“please input a string::\n”);
scanf(“%s”,str);
len= 8 ; length(str)
printf(“the string has %d charcters.”,len);
}
length(char *p)
{ int n;
n=0;
while( 9 ) *p
{ 10 ; n++
p++;
}
return n;
}
C语言试题 (二)2010.6
第一卷(本卷第1~20题每题2分,第21~30题每题3分,共70分)
第一部分基础知识(20项,每项2分,共40分)
1.可以从循环体内跳出,继续执行该循环外语句的是__________。
A.break语句 B.return语句 C.continue语句 D.空语句
2.下列语句不具有赋值功能的是__________。
A.a*=b B.x=1 C.a+b D.a++
3.下列标识符中不是合法标识符的是__________。
A.hot_do B.cat1 C._pri D.2ab
4.数学表达式ax2+bx+c所对应的C语言表达式为__________。
A.ax2+bx+c B.a*x2+b*x+c C.a*x*x+b*x+c D.a*x*2+b*x+c
5.若x为一个实数,那么输出x应该使用下面哪个语句__________。
A.printf (“x=“,x); B.printf (“x=%d”,x);
C.printf (“x=%f”,x); D.printf (“x=%”,x);
6.设i和k都是int类型,则以下对循环语句
for (i=0,k=-1;k=1;i++,k++)
{
printf(“****\n”);
}
说法正确的是__________。
A.循环结束条件不合法 B.循环体一次也不执行
C.循环体执行一次 D.该循环是无限循环
7.下面说法错误的是__________。
A. do…while{}语句至少执行一次循环 B. break语句可以跳出switch语句和循环语句
C. 每个if一定有一个else和它对应 D. 每个else一定有一个if和它对应
8.以下程序输出结果为
#include “stdio.h”
main()
{
char c=‘c’;
printf (“%c”,c+2);
}
输出结果是__________。
A.有语法错误,不能通过编译 B. e C. 99 D.c
9.判断字符串a和b相等的正确表达式是__________。
A. if(a=b) B. if(strcpy(a,b))
C. if(strcmp(a,b)= =0) D. if(a= =b)
10.C语言程序中,函数返回值的类型是由__________决定。
A. return语句中的表达式类型 B.调用该函数的主调函数类型
C. 调用该函数的形参类型 D.在定义该函数时所指定的函数类型
11.下列叙述中不正确的是__________。
A. C程序的注释部分放在”/*” 和”*/”之间,”/” 和”*”之间不能有空格
B. 一个C源程序可由一个或多个函数组成
C. 一个可正确运行C语言程序必须有一个且只能有一个main函数
D. C程序编译时注释部分的错识将被发现.
12.为了用宏名PR表示常量printf,以下宏定义中符合C语言语法的是__________。
A.#define PR, printf B. define PR printf
C. #define PR printf; D. #define PR printf
13.与y=a>b?a:b语句等价的程序段的是______________。
A. if (a>b) y=a; else y=b; B. if (a>b) y=b; else y=a;
C. if (a>b) y=a; y=b; D. if (a>b) y=b; y=a;
14.一个 C语言程序总是从__________开始执行的。
A. 编译预处理 B. 输出语句
C. 主函数 D. 排在前面的语句
15.对于程序段:
int *p,a=5;
p=&a;
下列表达式中代表地址的是__________。
A. a, p, *&a B. &* a, &a, *p C. *p, *&p, &a D. &a, &*p, p
16.有说明”int n=2,*p=&n,*q=p”,则以下非法的赋值语句是__________。
A. p=n; B.*p=*q; C. n=*q; D.p=q;
17.运行以下程序段时编译出错,其原因是_____________。
char c1=‘a’,c2=‘123’;
printf(“%c,%d\n”,c1,c2);
A.字符串要用”123”表示
B.’123’只能赋值给字符数组
C. c2是字符变量,不能用 %d格式输出
D. ‘123’不是正确的字符常量,不能赋值给字符变量c2
18.以下程序段运行的结果是__________。
enum wd {a=1,b,c,d,e } wk=e; printf(“%d \n”,wk));
A. 4 B. 5 C.-1 D.e
19.设整型变量a为5,使b不为2的表达式是__________。
A.b=a/2 B.b=6-(--a) C.b=a%2 D.b=a>3?2:1
20.对于定义int a[3][5],下列描述中正确的数组元素引用语句是__________
A. a[2][3] B. a[3,2] C. a[1+2][2] D. a(3)(2)
第二部分简单程序(10项,每项3分,共30分)
21.下列程序执行后输出的结果是_____________。
main()
{
int x=6,y=10,z=15,m;
z++;
m=x*y+z;
printf(“%d\n”, m);
}
A.75 B.76 C.31 D.32
22. 在执行下列程序时输出的结果是_____________。
main()
{ int x=4,y=7;
x-=y; y+=x;
printf(“%d %d”,x,y) ;
}
A. 4 7 B.-3 -3 C. -3 11 D.-3 4
23. 下列程序输出的结果是_____________。
main()
{ int n=1,sum=0;
do
{ sum=sum+n;
n=n+4;
}while(n<1);
printf(“%d\n”,sum);
}
A.0 B.1 C.5 D.4
24. 下列程序执行后输出结果是____________。
main()
{
int m=3;
printf(“f(%d)=%d”,m,(m>=0?1:0));
}
A. f(3)=1 B. f(3)=0 C. f(3)=3 D. f(1)=3
25. 下列程序执行后输出结果是_____________。
main()
{ int x=1,y=2,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{ case 0:a++;
case 1: b++;
}
break;
case 2:a++;b++;break;
}
printf(“a=%d,b=%d\n”,a,b);
}
A. a=0,b=0 B. a=1,b=0 C. a=0,b= 1 D. a=1,b=1
26. 下列程序执行后输出结果是_____________。
main()
{ int i,n=1;
for(i=3;i<5;i++) n++;
printf(“%d”,n);
}
A.2 B.3 C. 4 D. 5
27下列程序执行后输出结果是_____________。
main( )
{ int i,a [3]={0};
for(i=1;i<3;i++)
{ a [i]= a [i-1]*2+1;
printf(“%d “, a [i]);
}
}
A.0 1 B.0 2 C.1 2 D.1 3
28.以下程序执行后输出的结果是_____________。
main()
{ char s[]=“abcdefg”;
s[5]=‘\0’;
printf(“%s\n”, s);
}
A. abcd B. abcde C. abcdef D. abcdefg
29.以下程序执行后输出的结果是_____________。
main()
{ int a,b,x=45;
a=b=0;
if(!a) x--;
if(b) x=30;
else x=40;
printf(“x=%d\n”,x);
}
A. x=0 B. x=30 C. x=40 D. x=44
30.以下程序执行后输出的结果是_____________。
main()
{ int a,m;
for(m=10;m<25;m++)
{ a=m%10;
if(a= =5 && m%3= =0)
{
printf(“%d”, m);
}
}
}
A.5 B.10 C.15 D.25
第二卷 (本卷10项,每项3分,共30分)
第二卷均为填空题,在阅读和原题程序的基础上,在第二卷答题卡上编号对应的栏目中填入适当的字符、语句,以构成一个正确的C语言程序。
1.以下程序输出的结果是 1 23
int fund (int i)
{ printf(“%d”, i);
return ++i;
}
main()
{
int i=2;
printf(“%d”, fund ( i));
}
2. 以下程序输出的结果是 2 9
main()
{ int x=5;
while(x<10)
{ x++;
if (x%4!=1) continue;
else printf(“ %d \t”,x);
}
}
3. 以下程序输出的结果是: 3 abcd
int isnumber(char c){ return((c>='0'&&c<='9')?1:0); }
main()
{ char a[]="a1b23c45d6",*p=a;
int k=0;
while(*p!='\0')
{ if (isnumber(*p)==0)
a[k++]=*p;
p++;
}
a[k]='\0';
printf("%s\n",a);
}
4.以下程序是计算S=1-2+3-4...+99-100并输出结果,填空完成程序。
int fun (int n)
{ int s=0,f=1,i;
for(i=1;i<=n;i++)
{ 4 ; s+=f*i
f=-f;
}
return 5 ; s
}
main ()
{ int fun (int n);
printf("S=1-2+3-4...+99-100=%d\n", 6 ); fun(100)
}
5.以下程序的功能是输入一个字符串S,将所有空格删除后再输出。请填空完成程序。
main ()
{ char s[80];
int x,y;
printf("please enter a string to s:");
gets(s);
for(x=0,y=0; 7 ;x++) s[x]!='\0'
{ if (s[x]!=' ')
{
8 ; s[y]=s[x]
y++;
}
}
s[y]= 9 ; '\0'
printf( 10 ); "%s",s
}
C语言试题 (三)2009.6
第一卷
本卷共70分,其中第1~26题每题2分,第27~32题每题3分。
第一部分:基础知识
1.对于声明int a[10],*p;,下面选项中合的赋值语句是 __________。
A.p=100; B.p=a[6]; C.p=a[3]+3; D.p=a+2
2. 以下叙述正确的是___________。
A.C语言程序中,main函数必须位于程序的最前面
B.C语言程序中大、小写字母是有区别的
C.C语言程序的每行只能写一条语句
D.编译C程序时,可以发现注释行中的错误
3. 若x、i、j和k都是int型变量,则执行下列语句后,x的值为____________。
x=(i=4,j=16,k=32);
A.4 B.16 C.32 D.52
4. 对于程序段int *p,a=5;p=&a; ,下列各选项中全部表示地址的是___________。
A.a,p,*&a B.*p,*p,&a C.&*a,&a,*p D.&a,&*p,p
5. 对于定义:int a[3][5],能正确引用数组元素的语句是_________。
A.a[3,2] B.a[2][3] C.a(3)(2) D.a[1+2][2]
6. 判断char型变量ch是否为大写字母的正确表达式是___________。
A.’A’<=ch<=‘Z’ B.(ch>=‘A’)OR(ch<=‘Z’)
C. (ch>=‘A’)&&(ch<=‘Z’) D.(‘A’<=ch) AND(‘Z’>=ch)
7. 对于声明int i,j=2,*p=&j;,能完成i=j功能的语句是_________。
A.i=**p; B.i=*p; C.i=&j; D.*p=*&j;
8. 若希望当int a;a的值为奇数时,表达式的值为”真”,a的值为偶数时,表达式的值为”假”.则以下不能满足要求的表达式是__________。
A.a % 2 = = 1 B.!(a % 2 = = 0) C.a%2 D.!(a % 2)
9. 对于下面的定义:struct str {int x;float y;char z[6];} sample;下面的各项中,正确的赋值语句是___________。
A.sample.z=abcd; B.z=“abcd”;
C.strcpy(sample.z,”abcd”); D.strcmp(sample.z,”abcd”)
10. 假设int a=2;float b=3;double c=3.14;则表达式 a*b+c的类型为__________。
A.float B.char C.double D.int
11. 正确判断字符串a和b相等的表达式为_____________.
A.a == b B. a=b C.strcpy(a,b) D.strcmp(a,b) == 0
12. 若x[][4]=
展开阅读全文