模拟题c语言答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言模拟题及答案”。
此答案为自己所出,若有不对之处请谅解,并希望能留言
单选题(共60题,每题1分,共60分)1.下列符号串中,属于C语言合法标识符的个数为(B)。
_1_2_3,a-b-c,float,9cd,a3b4
A:1
B:2
C:3
D:4 2.下列能为字符变量 a 赋值的是:char a=(C)。
A:'ab'
B:“a”
C:' '
D:“ ” 3.在下列字符序列中,合法的标识符是(B)。
A:P12.a
B:stud_100
C:$water.1
D:88sum 4.下列用于printf函数的控制字符常量中,代表tab的字符常量是(B)。
A:'b'
B:'t'
C:'r'
D:'f' 5.下列用于printf函数的控制字符常量中,代表退格的字符常量是(A)。
A:'b'
B:'t'
C:'r'
D:'n' 6.如有以下程序:unsigned int a=6;int b=-20;char c;c=(a+b>6);则c的值为(C)。(int转换为unsigned)
A:6
B:-14
C:1
D:0 7.关于C语言,以下不正确的叙述是(B)。
A:在C语言程序设计中,逗号运算符的优先级最低
B:在C语言程序设计中,var和VAR是两个相
同的变量
C:C语言也支持重载
D:此处的两个语句int a;a=-13.06;在程序编译中将会提示出错 8.若有定义: int a=2,*p;float x=1, y=2;char e=‘w’;
则以下用法不正确的是(B)。
A:printf(“%c”,e+a);
B:p=&x;
C:a *=y+x;
D:x=y=e;9.int x=20;printf(“%dn”,~x);以上程序片段的输出是(B)。
A:235
B:-21
C:-20
D:-11 10.在C语言中,要求运算数必须是整型的运算符是(D)。
A:/
B:++
C:!=
D:% 11.若有定义:int a=7;float x=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是(结果保留两位小数)(A)。
A:2.50
B:2.75
C:3.50
D:0.00 12.以下运算符中优先级最低的是(C)。
A:&&(第三)
B:&(第一)
C:||(第四)
D:|(第二)
13.设有定义语句:char c1=1,c2=1;,则以下表达式中值为零的是(A)。
A:c1^c2
B:c1&c2
C:~c2
D:c1|c2 14.以下程序的输出结果是
#include void main(){
unsigned char a,b;
a=0x0a|3;
b=0x0a&3;
printf(“%d %dn”,a,b);}(B)。
A:2 11
B:11 2
C:7 13
D:13 7 15.如果int i = 4, 则printf(“%d”,-i--)结果是__,i的值是。(A)
A:-4 3
B:-3 3
C:-3 4
D:-4 4 16.若x=2,y=3则x&y的结果是(B)。
A:1
B:2
C:3的输出
D:5 17.下列程序的输出是(B)。main(){int x;printf(“%dn”,(x=3*5,x*2,x+10));}
A:15
B:25
C:30
D:40 18.若x,i,j和k都是int型变量,则计算下面表达式后,x的值为(C)。x=(i=4,j=16,k=32)
A:4
B:16
C:32
D:其他值
19.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是(B)。
A:7
B:8
C:6
D:2
20.以下程序运行后的输出结果是(A)。main(){int a,b;a=50;b=90;printf(“%dn”,(a,b));}
A:90
B:50 90
C:50
D:其他
21.以下程序的运行结果是(A)。void main(){
int a=4;char ch=‘a’;
printf(“%dn”,(a&2)&&(ch>‘A’));}
A:0
B:1
C:2
D:3 22.以下程序的输出是(D)。#include
main()
{ int i,j=4;
for(i=j;i
case 1: printf(“*”);break;
case 2: printf(“#”);break;} }
A:*###
B:**##
C:***#
D:****# 23.有如下程序片段: int i = 0;while(i++
A:2
B:3
C:4
D:以上都不是 24.有以下程序段 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 25.以下程序的输出是(A)。
#include void fun(int *p){
int a=10;
p=&a;
++a;} void main(){
int a=5;
fun(&a);
printf(“%dn”,a);}
A:5
B:6
C:10
D:11 26.以下关于函数的说法中正确的是(C)。
A:定义函数时,形参类型说明可放在函数体内
B:return语句后边的值不能为表达式
C:如果函数类型与返回值类型不一致,以函数类型为准
D:如果形参与实参的类型不一致,以实参为准
27.已知有定义:int *p();则以下说法正确的是(C)。
A:指向int型的指针变量
B:int型的指针数组
C:一个函数,该函数的返回值是指向int型的指针变量
D:一个指向函数的指针变量,该函数的返回值为int型
28.若有如下程序: 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,%cn”,p,q);}则程序运行后的输出结果是(A)。
A:E,e,b,E
B:e,E,b,F
C:E,e,e,E
D:e,E,b,E 29.C语言规定函数返回值的类型由(A)。
A:在定义时所指定的函数类型所决定
B:调用该函数时的主调函数类型所决定
C:return语句中的表达式类型所决定
D:调用该函数时系统临时决定
30.要在c语言中求正弦30度的值,可以调用库函数,可用格式为(D)。
A:sin(30)
B:sin(30.0)
C:sin((double)30)
D:sin(3.1415/6)31.在C语言程序设计中,简单变量作为实参时,它和对应形参之间的数据的传递方式是(B)。
A:地址传递
B:单向值传递
C:由实参传给形参,再由形参传给实参
D:由用户指定传递方式 32.以下程序的输出为(C)。int a=2;int f(int *a)
{
return(*a)++;} void main(){
int s=0;
{int a=5;
s+=f(&a);
}
s+=f(&a);
printf(“%d %dn”,a,s);}
A:2 7
B:2 10
C:3 7
D:3 11 33.以下程序输出结果是(D)。#include int *fun(){ int a[4],k;for(k=0;k
return(a);} void main(){ int *p,j;p=NULL;p=fun();for(j=0;j
A:输出0 0 0 0
B:输出0 1 2 3
C:输出1 1 1 1
D:输出不确定值 34.以下程序的运行结果是(D)。void fun(int *n){
static int m=2;
*n*=m-1;m+=2;} void main(){
static int m=1;
int i;
for(i=1;i
fun(&m);
printf(“%dn”,m);}
A:8
B:10
C:11
D:15 35.下面对typedef的叙述中不正确的是(B)。
A:用typedef可以定义各种类型名,但不能用来定义变量
B:typedef和#define都是在预编译时处理的C:用typedef只是将已存在的类型用一个新的标识符来代表
D:使用typedef有利于程序的通用和移植 36.要使用内存分配函数malloc,需要引入的头文件是(BC)。
A:stdio.h
B:stdlib.h
C:malloc.h
D:memory.h
37.以下宏定义中,不会引起二义性的宏个数为(A)。1)#define POWER(x)x*x 2)#define POWER(x)(x)*(x)3)#define POWER(x)(x*x)4)#define POWER(x)((x)*(x))(没有二义性)
A:1个
B:2个
C:3个
D:4个
38.若有二维数组定义语句:int a[4][5];则下面对元素a[2][3]不正确的引用方式是(B)。
A:*(&a[2][3])
B:*(a+5*2+3)可以换为(&a[0][0]+5*2+3)
C:*(a[2]+3)
D:*(*(a+2)+3)39.若二维数组定义为a[m][n],则在a[i][j]之前的元素个数为(B)。(不知怎么下面是m,应该是n把,不清楚!)
A:j*m+i
B:i*m+j
C:i*m+j-1
D:j*m+i-1
40.有字符数组a[10]={‘A’,‘ ’}和b[10]={‘B’},则以下正确的输出语句是(D)。
A:puts(a,b);
B:printf(“%s %sn”,a[],b[]);
C:putchar(a,b);
D:puts(a);puts(b);41.下列程序的输出结果是(D)。#include #include void main(){
char p1[20]=“abcd”,p2[20]=“ABCD”;
char str[50]=“xyz”;
strcpy(str+2,strcat(p1+2,p2+1));
printf(“%sn”,str);}
A:xyabcAB
B:abcABz
C:Ababcz
D:xycdBCD 42.以下程序执行后输出结果是(C)。void main()
{
char a[]=“movie”,b[10]=“movie”;
printf(“%d %dn”,sizeof(a),sizeof(b));}
A:5 5
B:6 6
C:6 10
D:10 10 43.以下程序的输出结果是(A)。void main(){
char *p[10]={“abc”,“aabdfg”,“dcdbe”,“abbd”,“cd”};
printf(“%dn”,strlen(p[4]));}
A:2
B:3
C:4
D:编译出错 44.已知有以下的说明,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 45.以下程序输出结果是(B)。#include main(){
int a[2][2]={1,2,3,4},(*p)[2];
p=a;
p++;
printf(“%dn”,**p);}
A:2
B:3
C:4
D:以上都不对
46.设char ch,str[4],*strp;,则正确的赋值语句是(C)。
A:ch=“CBA”;
B:str=“CBA”;
C:strp=“CBA”;
D:*strp=“CBA”;47.下面程序的运行结果是(C)。#include #include fun(char *w,int n){char t,*s1,*s2;s1=w;s2=w+n-1;while(s1
A:7654321
B:1714171
C:1711717
D:7177171 48.以下程序的输出是(C)。#include
main(){ char a[]=“language”,*p;p=a;while(*p!=‘u’){ printf(“%c”,*p-‘u’+‘U’);p++;} }
A:LANGUAGE
B:language
C:LANG
D:LANGuage 49.struct s1 {
char a[3];
int num;}t={‘a’,‘b’,‘x’,4},*p;p=&t;则输出为x的语句是(B)。
A:printf(“%cn”,p->t.a[2]);
B:printf(“%cn”,(*p).a[2])
C:printf(“%cn”,p->a[3]);
D:printf(“%cn”,(*p).t.a[2]);
50.以下程序的输出是(D)。#include main(){
struct st
{int x;
int y;
}cnum[2]={1,3,2,7};
printf(“%dn”,cnum[0].y/cnum[0].x*cnum[1].x);}
A:0
B:1
C:3
D:6 51.以下对age的非法引用是(B)。struct student {int age;
int num;}stu1,*p;p=&stu1;
A:stu1.age
B:student.age
C:p->age
D:(*p).age 52.以下程序的输出是(B)。#include union myun {struct {int x,y,z;}u;int k;}a;void main(){a.u.x=4;a.u.y=5;a.u.z=6;a.k=0;printf(“%dn”,a.u.y);}
A:4
B:5
C:6
D:0 53.若要用fopen函数打开一个二进制文件,该文件要既能读也能写,当文件不存在时新建文件,则文件打开方式字符串应是(C)。
A:“ab+”
B:“rb+”
C:“wb+”
D:“ab” 54.若执行fopen函数时发生错误,则函数的返回值是(B)。
A:地址值
B:0
C:1
D:EOF 55.要打开文件c:usertext.txt用于追加数据,正确的语句是(C)。
A:fp=fopen(“c:turboc2abc.txt”,“r”);
B:fp=fopen(“c: urboc2abc.txt”,“r”);
C:fp=fopen(“c: urboc2abc.txt”,“a+”);
D:fp=fopen(“c:turboc2abc.txt”,“a+”);56.在执行fopen函数时,ferror函数的初值是(D)。
A:TRUE
B:-1
C:1
D:0
57.#include main(){
char * s1=“Hello”,*s2=“Beijing”;
FILE *pf=fopen(“abc.dat”,“wb+”);
fwrite(s2,7,1,pf);
fseek(pf,-1,SEEK_CUR);
fwrite(s1,5,1,pf);
fclose(pf);} 以上程序执行后,文件abc.dat中的内容为(C)。
A:Hellong
B:Beijing Hello
C:BeijinHello
D:Hello 58.若fp为文件指针,且文件已正确打开,i为整型数据,以下语句的输出结果是(B)。fseek(fp,0,SEEK_END);i=ftell(fp);printf(“i=%dn”,i);
A:fp所指的文件记录长度
B:fp所指的文件长度,以字节为单位
C:fp所指的文件长度,以比特为单位
D:fp所指的文件当前位置,以字节为单位 59.函数调用语句:fseek(fp,-20L,2);的含义是(C)。
A:将文件位置指针移到距离文件头20个字节处
B:将文件位置指针从当前位置向后移动20个字节
C:将文件位置指针从文件末尾处后退20个字节
D:将文件位置指针移到离当前位置20个字节处
60.若将文件指针的读写位置指针移动到距离文件头200个字节的位置,对应正确的操作是(A)。
A:fseek(fp, 200, SEEK_SET)
B:fseek(fp, 200, SEEK_CUR)
C:fseek(fp, 200, SEEK_END)
D:ftell(200)