c语言模拟试卷及答案
c语言模拟试卷及答案
模拟试题
模拟试卷一
一、选择题
1.逻辑运算符两侧运算对象的数据____
A.只能是0或1 B.只能是0或非0正数
C.只能是整型或字符型数据 D.可以是任何类型的数据
2.下面程序段的输出结果是____
int a=023;
printf("%d\n",--a);
A.23 B.17 C.18 D.24
3.若有定义:int a[3][4]; 下面不能表示数组a[1][1]的是____。
A. *(a[1]+1) B. *(&a[1][1]) C.(*(a+1))[1] D. *(a+5)
4.设有语句:char str1[]="string",str2[8],*str3,*str4="string";则______不是对库函数strcpy的正确调用。
A. strcpy(str1,"HELLO1"); B. strcpy(str2,"HELLO2");
C. strcpy(str3,"HELLO3"); D. strcpy(str4,"HELLO4");
5.设有定义: int a[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)+2 D.*(*(a+1)+2)
6.有以下程序
struct abc
{ int a, b, c; };
main()
{ struct abc s[2]={{1,2,3},{4,5,6}}; int t;
t=s[0].a+s[1].b;
printf("%d\n",t);
}
程序运行后输出结果是____。
A.5 B.6 C.7 D.8
7.有以下程序:
#include
union pw
{ int i; char ch[2]; } a;
main()
{ a.ch[0]=13; a.ch[1]=0; printf("%d\n",a.i); }
程序的输出结果是____。
A.13 B.14 C.208 D.209
8.已知字符0的ASCII码为十六进制的30,若有以下程序
main()
{ union { unsigned char c; unsigned int i[4]; } z;
z.i[0]=0x38;
z.i[1]=0x36;
printf("%c\n",z.c);}
输出结果为____。
A.6 B.8 C.0 D.3
9.若有定义char a=1,b=2,c=3;,则表达式 a | b & ~c 的值为____。
A.0 B.1 C.2 D.3
10.以下程序的输出结果是____。
main()
{ char x=020;
printf("%o\n",x<<2);
}
A.100 B.80 C.64 D.32
11.下列关于C语言数据文件的叙述中正确的是____。
A.文件由ASCII码字符序列组成,C语言只能读写文本文件
B.文件由二进制数据序列组成,C语言只能读写二进制文件
C.文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件
D.文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件
12.若要打开D盘上test子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是____。
A. fopen("D:\\test\\abc.txt","r") B. fopen("D:\\test\\abc.txt","r+")
C. fopen("D:\\test\\abc.txt","rb") D. fopen("D:\\test\\abc.txt","w")
13.若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是____。
A. EOF B. 1 C.非零值 D. NULL
14.用fopen函数打开文件时,若文件使用方式参数为“r+”,则该文件____。
A.只能读,不能写 B.可以读、写,但文件必须存在
C.只能写,不能读 D.可以读、写,若文件不存在则创建新文件
15.在打开的文件中,要获得文件位置指针的当前位置,应调用的库函数是____。
A. fseek B. fread C.ftell D.rewind
二、填空题
1.C源程序的基本单位是____。
2.一个C语句中至少应包含一个____。
3.在C语言中,输入操作可以由库函数____完成,输出操作可以由库函数___完成。
4.若x是int型变量,且x=6,则表达式x%2+(x+1)%2的值为____。
5.若a、b、c均是int型变量,则执行表达式c=(a=5)-(b=2)+a后,c的值为____。
6.若有定义:int y=7; float x=2.5,z=4.7;,则表达式x+(int)(y/3*(int)(x+z)/2)%4的值为__。
7.以下程序的功能是:输入三个整数n1、n2、n3,按从大到小的顺序进行输出。请填空。
main( )
{ int n1, n2, n3, temp;
scanf("%d%d%d", &n1, &n2, &n3);
if (______)
{ temp=n2; n2=n3; n3=temp; }
if (______)
{ temp=n1; n1=n2; n2=temp; }
printf("%d, %d, %d\n", n1, n2, n3);
}
8.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字母,则把它变成大写字母;其它字符不变。请填空。
main( )
{ char ch1;
scanf("%c", ch1);
if (_______)
ch1=ch1+32;
else if (ch1>='a' && ch1<='z')
________;
printf("%c", ch1);
}
9.程序运行后的输出结果是______。
main()
{ int a=1,b=3,c=5;
if (c==a+b) printf("yes\n");
else printf("no\n");
}
10.以下程序运行后的输出结果是______。
main()
{ int x=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d,%d\n",x,y);
}
11.以下程序运行后的输出结果是______。
main()
{ int x=10,y=20,t=0;
if(x=y)
{t=x;x=y;y=t;}
printf("%d,%d\n",x,y);
}
12.以下程序运行后的输出结果是______。
main()
{ int i,m=0,n=0,k=0;
for(i=9; i<=11;i++)
switch(i/10)
{ case 0: m++;n++;break;
case 1: n++; break;
default: k++;n++;
}
printf("%d %d %d\n",m,n,k);
}
三、程序设计
1.请编写函数fun,它的功能是:求出ss所指字符串中、指定字符的个数,并返回此值。2.写程序,实现矩阵(3行3列)的转置(即行列互换)。
#include
void fun(int array[3][3])
{
}
main()
{ int i,j;
int array[3][3]={{100,200,300},{400,500,600},{700,800,900}};
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]); printf("\n");
}
fun(array);
printf("Converted array:\n"); for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",array[i][j]);
printf("\n");
}
}