一、单选题(共计60题)
- (1)在下述程序中,if (i>j) 语句共执行的次数是( )。C
main()
{ int i=0,j=14,k=2,s=0;
for(;;)
{ i+= k ;
if(i>j)
{ printf(“%d”,s);
break ;
}
s+=i ;
}
}
A、6
B、9
C、7
D、12
- (2)若要用fopen函数打开一个二进制文件,该文件要既能读也能写,当文件不存在时新建文件,则文件打开方式应是( )。C
A、"ab+"
B、"rb+"
C、"wb+"
D、"ab"
- (3)下列程序的输出结果是( )。C
struct student
{ int a, b, c; };
main()
{ struct student stu[2]={{2,3,4},{5,6,7}}; int t;
t=stu[0].a+stu[1].b%stu[0].c;
printf("%d \n",t); }
A、0
B、1
C、4
D、5
- (4)对于浮点型变量f,能实现对f中的值在小数点后第四位进行四舍五入的表达式是( )。C
A、f=(f*1000+0.5)/1000.0
B、f=(f*1000+0.5)/1000
C、f=(int)(f*1000+0.5)/1000.0
D、f=(f/1000+0.5)*1000
- (5)现已定义整型变量int i=1; 执行循环语句“while(i++<5);”后,i的值为( )。C
A、1
B、5
C、6
D、以上三个答案均不正确
- (6)下列程序的输出结果是( )。C
struct LH
{ int n;struct LH *m;}p[4];
main()
{ int i;
for(i=0;i<2;i++)
{p[i].n=i;p[i].m=&p[i+1];}
p[i].m=p;
printf(“%d,%d\n”,(p[1].m)->n,p[2].m->n);
}
A、0,1
B、0,2
C、0,0
D、程序出错
- (7)下列程序的运行结果是( )。B
#include "stdio.h"
int f(int a)
{ switch (a)
{ case 0:return 0;
case 1:case 2:return 1;
}
return(f(a-2)+f(a-3));
}
main()
{ int b;
b=f(9);
printf(“%d\n”,b);
}
A、10
B、7
C、8
D、9
- (8)以下程序的输出结果是( )。A
int f(int b[],int m,int n)
{int i,s=1;
for(i=m;i<n;i++)
{b[i]=b[i-1]+b[i+1];
s+=b[i]; }
return s; }
main()
{int x,a[]={1,2,3,4,5,6,7,8,9,10};
x=f(a,3,5);
printf("%d\n",x); }
A、23
B、26
C、42
D、35
- (9)以下程序运行后,输出结果是( )。C
main()
{ char ch[3][4]={"123","456","78"},*p[3];int i;
for(i=0;i<3;i++) p[i]=ch[i];
for(i=0;i<3;i++) printf("%s",p[i]);
}
A、123456780
B、123 456 780
C、12345678
D、147
- (10)桌上有白球和黑球共5个,a、b、c、d、e分别表示这5个球的颜色,取值为0、1分别代表白球、黑球。则以下能表示a是黑球,其余至少有两个白球的表达式是( )。C
A、!a&&(b+c+d+e)==2
B、a&&(b+c+d+e)>2
C、a&&(b+c+d+e)<=2
D、!a&&(b+c+d+e)==3
- (11)下列程序的输出结果是( )。B
#include "stdio.h"
int f(int n)
{ static int k, s;
n--;
for(k=n; k>0; k--)
s += k;
return s;
}
void main( )
{ int k;
k=f(2);
printf("(%d, %d)", k, f(k));
}
A、(3, 3)
B、(1, 1)
C、(3, 6)
D、(6, 12)
- (12)若有定义:int a,b;char x,y;并有以下输入数据: 12 13 AaBb(回车)
则能给a赋整数12,给b赋整数13,给x赋字符a,给y赋字符b的正确程序段是( )。D
A、scanf(“%d”,&a);
scanf(“%d”,&b);
x=getchar();y=getchar();
B、scanf(“%d%d %c %c”, &a, &b,&x,&y);
C、scanf(“%d %d %c %c”, &a,&b,&x,&x,&y,&y);
D、scanf(“%d %d %c%c%c%c”,&a,&b,&x,&x,&y,&y);
- (13)以下对结构体成员的运算结果是( )。D
#include <stdio.h>
main(){
struct st
{int x;
int y;
}cnum[2]={1,3,2,7};
printf("%d\n",cnum[0].y/cnum[0].x*cnum[1].x);
}
A、0
B、1
C、3
D、6
- (14)函数f定义如下,执行语句“m=f(5);”后,m的值应为( )。B
int f(int k)
{ if(k==0||k==1) return 1;
else return f(k-1)+f(k-2);
}
A、3
B、8
C、5
D、13
- (15)若有以下定义:char s[10]={’a’,’b’,’c’,’0’, ’2’,’\x32’ ,’\0’,’\123’};执行语句printf(“%d”,strlen(s));的结果是( )。B
A、3
B、6
C、8
D、9
- (16)若i为整型变量,则以下循环执行的次数是( )。C
for(i=0;i<=5;i++)
printf("%d",i++);
A、5次
B、2次
C、3次
D、6次
- (17)执行以下程序段后的输出结果是( )。C
int x = 3;
int m, n;
n = (++x) + (++x);
m = (x--) + (x--);
printf("%d %d\n", m, n);
A、10 6
B、9 9
C、10 10
D、10 8
- (18)设有定义:int a[2][2]={1,2,3,4},(*p)[2];,则在语句p=a;p++;后,**p的值为( )。B
A、2
B、3
C、4
D、以上都不对
- (19)以下关于循环的程序的输出结果是( )。C
#include "stdio.h"
void main()
{
int k=4,n=0;
for(;n<k;)
{
n++;
if(n%3!=0) continue;
k--;
}
printf("%d %d",k,n);
}
A、1 1
B、2 2
C、3 3
D、4 4
- (20)下列关于字符串操作的输出结果是( )。D
#include "stdio.h"
#include "string.h"
void main()
{
char p1[20]="abcd",p2[20]="ABCD";
char str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s\n",str);
}
A、xyabcAB
B、abcABz
C、Ababcz
D、xycdBCD
- (21)下列选项中属于正确的switch语句的是( )。C
A、swicth(’a’)
{ case ‘a’:printf(“A\n”);
case ‘b’:printf(“B\n”); }
B、switch(1.0)
{ case 1.0 :printf(“A\n”);
case 2.0 :printf(“B\n”);}
C、switch((int)(x+2.5))
{ case 1 :printf(“A\n”);
case 1+2 :printf(“B\n”);}
D、switch(“a”);
{ case “a” :printf(“A\n”);
case “b” :printf(“B\n”);}
- (22)以下程序的运行结果为( )。A
#include "stdio.h"
void main(){
int y=2,a=1;
while(y--!=-1){
do{
a*=y;a++;
}while(y--);}
printf("%d,%d\n",a,y);}
A、1,-2
B、2,1
C、1,0
D、2,-1
- (23)C语言的输入与输出操作是由( )完成的。C
A、输入语句
B、输出语句
C、输入与输出函数
D、输入与输出语句
- (24)若有以下程序段
… …
int a[ ]={4,0,2,3,1},i,j,t;
for(i=1;i<5;i++)
{t=a[i];j=i-1;
while(j>=0&&t>a[j])
{a[j+1]=a[j];j--;}
a[j+1]=t;}
… …
则该程序段的功能是( )。B
A、对数组a进行插入排序(升序)
B、对数组a进行插入排序(降序)
C、对数组a进行选择排序(升序)
D、对数组a进行选择排序(降序)
- (25)执行下列程序中的输出语句后,x的值是( )。A
main()
{int x ;
printf(“%d\n”,(x=4*5,x*2,x+20));}
A、20
B、40
C、60
D、80
- (26)下列程序段的输出结果是( )。B
int c[ ]={1, 7, 12};
int *k=c+1;
printf("%d",*k++);
A、2
B、7
C、8
D、12
- (27)下列程序的运行结果是( )。D
main()
{int a=4,y;
y=fn(a,++a);
printf(“%d”,y);}
int fn(x,c)
{int b;
if(x<c)b=1;
else if(x==c)b=0;
else b=-1 ;
return(b);
}
A、4
B、-1
C、1
D、0
- (28)有如下程序:int x=-20; printf("%d\n",~x);,其输出结果将是( )。A
A、19
B、20
C、21
D、-1
- (29)对于类型相同的指针变量,不能进行的运算是( )。A
A、+
B、-
C、=
D、==
- (30)已知:
union u_type
{ int i;
char ch;
float a;
}temp;
现在windows环境下,执行"temp.i=266;printf("%d",temp.ch)"的结果是( )。C
A、266
B、256
C、10
D、1
- (31)以下程序的运行结果是( )。B
#include "stdio.h"
main()
{
int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p=a+5,*q=NULL;
q=p+5;
printf("%d %d\n",*p,*q);
}
A、运行后报错
B、6 11
C、6 12
D、5 5
- (32)以下程序的输出结果是( )。C
main()
{int a=0,b=1,c=0,d=20;
if (a) d=d-10;
else if (!b)
if (!c) d=15;
else d=25;
printf("d=%d\n",d);
}
A、d=10
B、d=15
C、d=20
D、d=25
- (33)下面四组字符串中,都可以用作C语言程序标识符的是( )。A
A、 print
_maf
mx_2d
aMb6
B、 I\am
scanf
mx_
MB
C、 sign
3mf
a.f
A&B
D、 if
ty_pe
x1#
5XY
- (34)下列程序的输出结果是( )。A
int f()
{ static int i=0;
int s=1;
s+=i;i++;
return s;}
main()
{ int i , a=0;
for(i=0;i<6;i++)a+=f();
printf(“%d\n”,a);}
A、21
B、24
C、25
D、15
- (35)设有定义:#define STR "12345";,则以下叙述正确的是( )。C
A、宏名STR代替的是数值常量12345
B、宏定义以分号结束,编译时会产生错误信息
C、宏名STR代替的是字符串"12345"
D、宏名STR代替的是字符串常量"12345"
- (36)以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为( )。D
#include "stdio.h"
#include "string.h"
func (char str [ ])
{ int num =0;
while (*(str +num )!=’\0’)num ++;
return(num );
}
main()
{ char str [10],*p=str ;
gets(p); printf("%d\n",func(p));
}
A、8
B、7
C、6
D、5
- (37)下列程序的输出结果是( )。C
struct st
{ int x;int *y;}*p;
int dt[4]={10,20,30,40};
struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};
main()
{ p=aa;
printf(“%d ”,++(*p->y));
printf(“%d ”,(++p)->x);
printf(“%d ”,++p->x);}
A、20 20 10
B、21 60 50
C、11 60 61
D、31 70 60
- (38)以下函数的功能是( )。C
char *fun(char *str1,char*str2)
{
while((*str1)&&(*str2++=*str1++));
return str2;
}
A、求字符串的长度
B、比较两个字符串的大小
C、将字符串str1复制到字符串str2中
D、将字符串str1接续到字符串str2中
- (39)以下程序的输出结果是( )。B
#include <stdio.h>
void func(char **m)
{
++*m;
printf("%s\n",*m);
}
void main()
{
static char *a[]={"first","second","three"};
char **n;
n=a;
func(n);
}
A、first
B、irst
C、second
D、其他
- (40)以下语句的输出结果为( )。 B
for(k=0;k<5;++k)
{ if(k==3) continue;
printf("%d",k);
}
A、012
B、0124
C、01234
D、没有输出结果
- (41)下面的程序对输入的每一个数字出现的次数进行计数,下划线处应填入的正确语句为( )。A
#include "stdio.h"
main()
{int i,ch, n[10];
for(i=0;i<10;++i) n[i]=0;
while((ch=getchar())!=‘\n’)
if(ch>=‘0’ && ch<=‘9’)
________;
for(i=0;i<10;++i)
printf("数字%d出现的次数是:%d\n",i,n[i]);
}
A、n[ch-‘0’]++
B、n[ch]++
C、i++
D、n[i]++
- (42)以下程序的输出结果是( )。D
#include "stdio.h"
int *fun()
{
int a[4],k;
for(k=0;k<4;k++)a[k]=k;
return(a);
}
void main()
{
int *p,j;
p=NULL;
p=fun();
for(j=0;j<4;j++){printf("%d\n",*p);p++;}
}
A、0000
B、0123
C、1111
D、输出不确定值
- (43)若有如下结构体定义,下列scanf用法不正确的是( )。D
struct pupil
{
char name[20];
int age;
int sex;
}pup[5],*p;
p=pup;
A、scanf("%s",pup[0].name);
B、scanf("%d",&pup[0].age);
C、scanf("%d",&(p->sex));
D、scanf("%d",p->age);
- (44)与 y=(x>0?1:x<0?-1:0);的功能相同的if语句是( )。A
A、if (x>0)y=1;
else if(x<0)y=-1;
else y=0;
B、if(x)
if(x>0)y=1;
else if(x<0)y=-1;
C、y=-1
if(x)
if(x>0)y=1;
else if(x==0)y=0;
else y=-1;
D、y=0;
if(x>=0)
if(x>0)y=1;
else y=-1;
- (45)下列描述中不正确的是( )。D
A、字符型数组中可能存放字符串
B、可以对字符型数组进行整体输入、输出
C、可以对整型数组进行整体输入、输出
D、不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
- (46)下面程序运行后,关于a、b、c的值应输出为( )。A
#include "stdio.h"
main()
{
int a=1, b=2, c=2,t;
while (a<b<c){t=a;a=b;b=t;c--;}
printf("%d,%d,%d",a,b,c);
}
A、1,2,0
B、2,1,0
C、1,2,1
D、2,1,1
- (47)在16位 PC机环境下,下列程序的输出结果是( )。C
struct tt
{ int n1;char n2;float n3;
union uu{int u1[3];char u2[3];}su;
};
main()
{printf(“%d\n”,sizeof(struct tt));}
A、11
B、12
C、13
D、9
- (48)若有如下程序:
void s(char *m,int n)
{
*m=*m+3;n=n+3;
printf("%c,%c,",*m,n);
}
void main()
{
char p=’b’,q=’B’;
s(&q,p);
printf("%c,%c\n",p,q);
}
则程序运行后的输出结果是( )。A
A、E,e,b,E
B、e,E,b,F
C、E,e,e,E
D、e,E,b,E
- (49)以下程序的输出结果是( )。A
#include <stdio.h>
int main()
{
char str[100]="ABCDEFG", *p=str;
int i;
for(i = 0; *p != ’\0’; p++,i++);
printf("%d\n",i);
return 0;
}
A、7
B、8
C、99
D、100
- (50)某C编译系统规定,int型数组占2个字节,则定义以下语句后,sizeof(aa)=( )。D
struct {long num;
char name[20];
union {float x;
short y;
}xy;
}aa;
A、32
B、26
C、30
D、28
- (51)语句:printf(“%d”,!0);的输出结果是( )。A
A、1
B、0
C、有语法错误 ,不能执行
D、!0
- (52)函数f定义如下,执行语句“sum=f(4)+f(2);”后,sum的值应为( )。C
int f(int m)
{ static int i=0; int s=0;
for(;i<=m;i++) s+=i; return s;
}
A、13
B、16
C、10
D、8
- (53)fwrite函数的一般调用格式是( )。D
A、fwrite(buffer,count,size,fp);
B、fwrite(fp,count,size,buffer);
C、fwrite(fp,size,count,buffer);
D、fwrite(buffer,size,count,fp);
- (54)有以下程序段
main()
{ int i=1,sum=0,n;
scanf("%d",&n);
do
{ i+=2;
sum+=i ;
}while(i!=n);
printf("%d",sum);
}
若使程序的输出值为15,则应该从键盘输入的n的值是( )。D
A、1
B、3
C、5
D、7
- (55)下列选项可作为C语言赋值语句的是( )。A
A、a=1;b=2;
B、a=b=6
C、i--
D、y=int(x);
- (56)已知有以下的说明,
int a[]={8,1,2,5,0,4,7,6,3,9}; 那么a[*(a+a[3])]的值为( )。B
A、5
B、0
C、4
D、7
- (57)已知 enum name{zhao=1,qian,sun,li}man;执行下述程序段后的输出结果是( )。A
man=0;
switch(man)
{ case 0: printf("People\n");break;
case 1: printf("Man\n");break;
case 2: printf("Woman\n");break;
default: printf("Error\n");break;
}
A、People
B、Man
C、Woman
D、Error
- (58)以下能正确计算1×2×3×……×10的程序段是( )。C
A、do {i = 1;s = 1;
s = s * i;
i + +;
} while (i <= 10);
B、do {i = 1;s = 0;
s = s * i;
i + +;
} while (i <= 10);
C、i = 1;s = 1;
do {s = s * i;
i + +;
} while (i <= 10);
D、i = 1;s = 0;
do {s = s * i;
i + +;
} while (i <= 10);
- (59)以下程序的运行结果是( )。A
void main()
{
int a=4; char ch=’a’;
printf( "%d\n",(a&2)&&(ch>’A’));
}
A、0
B、1
C、2
D、3
- (60)若指针p已正确定义,要使p指向两个连续的整型动态存储单元,下列语句正确的是( )。B
A、p=2*(int*)malloc(sizeof(int));
B、p=(int*)malloc(2*sizeof(int));
C、p=(int*)malloc(2*2);
D、p=(int*)malloc(2,sizeof(int));
二、多选题(共计20题)
- (1)以下叙述中正确的有( )。BC
A、在程序的一行上可以出现多个有效的预处理命令行
B、宏定义不是C语句,不必在行末加分号
C、宏替换不占用运行时间,只占用编译时间
D、在以下定义中C R是称为“宏名”的标识符 #define C R 045
- (2)要求函数的功能是在一维数组a中查找x值。若找到,则返回所在的下标值;否则,返回0。设数据放在数组元素的a[1]到a[n]中。在以下给出的函数中,不能正确执行此功能的有( )。ABD
A、funa(int *a, int n, int x)
{
*a = x;
while(a[n] != x) n--;
return n;
}
B、funb(int *a, int n, int x)
{
int k;
for(k = 1; k <= n; k++)
if(a[k] == x) return k;
return 0;
}
C、func(int a[], int n, int x)
{
int *k;
a[0] = x; k = a+n;
while(*k != x) k--;
return k - n;
}
D、fund(int a[], int n, int x)
{
int k = 0;
do
{k++;
}while((k < n+1)&&(a[k]!=x));
if((k < n+1)&&a[k] == x)) return k;
else return 0;
}
- (3)下面说法正确的有( )。ABCD
A、共用体变量的地址和它各成员的地址都是同一地址
B、共用体内的成员可以是结构变量,反之亦然
C、在任一时刻,共用体变量的各成员只有一个有效
D、函数不可以返回一个共用体变量
- (4)如有两个字符数组a、b,则以下输入语句正确的有( )。BCD
A、gets(a,b);
B、scanf("%s%s",a,b);
C、for(i=0;(a[i]=getchar())!=’\n’;i++);
for(i=0;(b[i]=getchar())!=’\n’;i++);
D、gets(a);gets(b);
- (5)当把下列四个表达式用作if语句的控制表达式时,含义相同的选项有( )。(假设k>0)ACD
A、k%2
B、k%2==0
C、(k%2)!=0
D、k%2==1
- (6)设有以下语句
struct st{
int n;
struct st *next;
};
static struct st a[3]={5,&a[1],6,&a[2],7,},*p=&a[0];
若要使printf("%d\n",____)输出值为6,则下划线处表达式可以为( )。BCD
A、p->n++
B、++p->n
C、(++p)->n
D、p->next->n
- (7)下列说法不正确的有( )。BCD
A、带参数的宏定义中的参数是没有类型的
B、宏展开将占用程序的运行时间
C、宏定义命令是C语言中的一种特殊语句
D、使用#include命令包含的头文件必须以".h"为后缀
- (8)下列有关函数调用的说法正确的有( )。BCD
A、若用值传递方式,则形式参数不予分配内存
B、实际参数和形式参数不可以同名
C、主调函数和被调用函数可以不在同一个文件中
D、函数间传送数据可以使用外部全局变量
- (9)若变量已正确定义,以下能正确计算1*2*3*4*5的程序段有( )。CD
A、 i=1;s=1;
do
{ s=s*i;i++;}
while(i<5);
B、 i=0;s=0;
do
{ i++; s=s*i;}
while(i<5);
C、 i=1;s=1;
do
{ s=s*i;i++;}
while(i<6);
D、 i=0;s=1;
do
{ i++; s=s*i;}
while(i<5);
- (10)设有定义语句: int x[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组中6个元素中的值,下列选项中能完成此操作的语句有( )。ABC
A、for(i=0;i<6;i++)printf(“%2d”,*(p++));
B、for(i=0;i<6;i++)printf(“%2d”,*(p+i));
C、for(i=0;i<6;i++)printf(“%2d”,*p++);
D、for(i=0;i<6;i++)printf(“%2d”,(*p)++);
- (11)整型变量x=1,y=3,经下列( )计算后,x的值等于6。ABD
A、x=(x=1+2,x*2)
B、x=y>2?6:5
C、x=9-(y--)-(y--)
D、x=y*4.8/2-1
- (12)下列关于指针定义的描述正确的有( )。ABCD
A、指针变量是一种变量,该变量是用来存放某个变量的地址值的
B、指针变量的类型与它所指向的变量类型一致
C、指针变量的命名规则与标识符相同
D、在定义指针时,”*”号表示指针变量的指向
- (13)以下对结构体变量stu1中成员age的引用正确的有( )。ACD
struct student
{int age;
int num;
}stu1,*p;
p=&stu1;
A、stu1.age
B、student.age
C、p->age
D、(*p).age
- (14)设有结构体类型:
typedef struct str{
int no;
char name[20];
}STR;
另有变量定义:STR a[20], x;
如希望实现向与文件指针变量fp关联的文件输出一个结构信息,则以下语句正确的有( )。ABC
A、fwrite(a, sizeof(STR), 1, fp);
B、fwrite(&a[2], sizeof(STR), 1, fp);
C、fwrite(&x, sizeof(STR), 1, fp);
D、fwrite(x, sizeof(STR), 1, fp);
- (15)t为int类型,进入下面循环之前,t的值为0:
for(;t=1;)
{ ……….}
则下列叙述不正确的有( )。AC
A、循环控制表达式的值为0
B、循环控制表达式的值为1
C、循环控制表达式不合法
D、循环有可能是个无限循环
- (16)下列叙述不正确的有( )。AB
A、函数可以嵌套定义,但不能嵌套调用
B、函数可以嵌套调用,也可以嵌套定义
C、函数不可以嵌套定义,但可以递归调用
D、函数可以嵌套调用,但不能嵌套定义
- (17)关于数组与字符串,下列选项中属于不合法的定义有( )。ABC
A、char s="string";
B、int a[5]={0,1,2,3,4,5};
C、char s[5]="string";
D、char a[]={0,1,2,3,4,5};
- (18)若有定义: char *str[]={"one","two","three"},**p=str;
则下列选项中可以表示出字符’t’的表达有( )。AD
A、*str[2]
B、*str+2
C、*(p+1)
D、**++p
- (19)若有以下调用语句,则正确的fun函数的首部包括( )。ABC
main()
{ …
int a[50],n;
…
fun(n, &a[9]);
…
}
A、void fun(int m, int x[])
B、void fun(int s, int h[41])
C、void fun(int p, int *s)
D、void fun(int n, int a)
- (20)已知有定义:
struct{
int no;
char name[20];
}a,b,*c;
则以下语句合法的有( )。CD
A、a=b;
B、a=&b;
C、c=&b;
D、*c=b
|