C语言模拟试题II复习课程.docx
《C语言模拟试题II复习课程.docx》由会员分享,可在线阅读,更多相关《C语言模拟试题II复习课程.docx(16页珍藏版)》请在冰豆网上搜索。
![C语言模拟试题II复习课程.docx](https://file1.bdocx.com/fileroot1/2023-2/3/0b9ef7dd-257b-44e2-b1fe-f2c4dd98dd73/0b9ef7dd-257b-44e2-b1fe-f2c4dd98dd731.gif)
C语言模拟试题II复习课程
C语言模拟试题II
《C语言程序设计教程实验与练习》(第二版)模拟试题II及答案
一、单项选择题(每题2分,30道题,共60分)
1.下面的程序将输出:
main()
{
floatf;
intx=1,y=2.5;
f=x/y;
printf("f=%1.1f,y=%#X",f,y);
}
A.f=0.0,y=2B.f=0.5,y=0X2C.f=0.0,y=0X2D.f=0.5,y=2
2.下面的程序将输出:
#include"string.h"
main()
{
intlen;
charstr[]="a\b\04235\0";
len=strlen(str);
printf("%d",len);
}
A.10B.5C.6D.7
3.下面的程序将输出:
main()
{
inta=0x31;
char*str[]={"thisisone.","thisistwo."};
charch;
ch=++a-’0’;
switch(ch)
{
case1:
printf("%s",str[0]);
case2:
printf("%s",str[1]);
default:
printf("noway!
");
}
}
A.thisisone.B.thisistwo.C.noway!
D.thisistwo.noway!
4.下面的程序将输出:
main()
{
inta[5]={1,2,3};
intk,j;
for(k=1;k<4;k++)
a[k]++;
for(j=0;j<5;j++)
printf("%d",a[j]);
}
A.13410B.23410C.23400D.13400
5.已知有下面两个变量,将数组a的第2个单元赋值为1的C语句是:
inta[10];
int*p;
p=a;
A.a[2]=1;B.p[1]=1;C.*(p++)=1;D.*(++a)=1;
6.下面程序将输出:
voidadd(inta)
{
a++;
return;
}
main()
{
intk;
k=3.4;
add(k);
printf("%d",k);
}
A.3.4B.4.4C.3D.4
7.下列循环结构中,不是无限循环的是:
A.for(i=1,s=0;;i++)B.i=10;
s=s+i;while
(1)
{i=i%10+1;
if(i>10)break;}
C.inti=0;D.i=100;
do{++i;}while(i>=0);while(++i%2)i++;
8.若已知inta[3][4],*p;p=(int*)a;那么对数组a的第2行第2列的正确引用是:
A.a[2][2]B.p[5]C.a[5]D.p[1][1]
9.已知:
int(*p)[20];且p的值是0X5000,请问表达式p+2的值是多少?
A.0X5050B.0X5002C.0X5004D.0X5040
10.若有说明inta[2][2];那么,下面正确的C赋值语句是:
A.a=2;B.a[1]=2;C.a[1]={1,2};D.a[0][1]=a[1][0];
11.设x为int型变量,则执行以下语句后,x的值为
x=10;x+=x-=x-x;
A.10B.20C.40D.30
12.已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!
y)的值是:
A.0B.语法错C.1D."假"
13.下面能正确进行字符串赋值操作的语句是:
A.chars[5]={"ABCDE"};B.chars[]={'A','B','C','D','E'};
C.char*s;s="ABCDEF";D.char*s;scanf("%s",s);
14.已知:
inta[3][4],*p=&a[0][0];p+=6;那么*p和_____的值相同.
A.(a+6)B.*(&a[0]+6)C.a[2][2]D.*(&a[0][0]+6)
15.设有以下说明和定义:
typedefunion{longi;intk[4];charc;}DATE;
structdate{intcat;DATEcow;doubledog;}too;
DATEmax;
则下列语句的执行结果是
printf("%d",sizeof(structdate)+sizeof(max));
A.26B.30C.18D.8
16.设有如下定义:
int*(*ptr)();
则以下叙述中正确的是
A.ptr是指向一维组数的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是指向函数的指针,该函数的返回值是指向int型数据的指针
17.若二维数组a有m列,则在a[i][j]之前的元素个数为______
A.j*m+iB.i*m+jC.i*m+j-1D.i*m+j+1
18.以下程序运行后,输出结果是
A.13B.51C.11D.53
intd=1;
fun(intp)
{intd=5;
p=d;
printf("%d",p);
}
main()
{inta=3;
fun(a);
d=a;
printf("%d\n",d);
}
19.以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为
A.4B.7C.6D.5
#include
#include
func(charstr[])
{intnum=0;
while(*(str+num)!
='\0')num++;
return(num);
}
main()
{charstr[10],*p=str;
gets(p);printf("%d\n",func(p));
}
20.执行以下程序段后,m的值为
inta[2][3]={{1,2,3},{4,5,6}};
intm,*p;
p=&a[0][0];
m=(*p)*(*(p+2))*(*(p+4));
A.15B.14C.13D.12
21.已知定义了两个结构体变量,下面是正确的语句是:
struct{intx;charname[10];floatmark;}S1,S2;
A.S1={5,”yang”,90.5};
B.S1=S2;
C.S1.x=S2.x;S1.name=S2.name;S1.mark=S2.mark;
D.strcpy(S1,S2);
22.下面这段程序运行的结果是:
inta=0x4145;
char*p;
p=(char*)&a;
*p+=1;
printf(“%X”,*p);
A.46B.42C.4146D.4245
23.下面这段程序运行的结果是:
charstr[]=”%#X”;
inta=50;
printf(str,a++);
A.50B.0X33C.0X32D.有语法错
24.下面哪个语句是函数的原型声明
A.int(*f)(inta,intb);B.intf(inta,5);
C.intf(inta,intb);D.intf(inta=5,intb=6);
25.已知inta=0XF11F,b;执行完下面的操作后,a的值是多少?
b=(a&0xFF00)>>4;
A.0X0FF1B.0XF11FC.0XFF10D.0XFFF1
26.有以下程序:
inta=2;
intf(int*a)
{return(*a)++;}
main()
{ints=0;
{inta=5;
s+=f(&a);
}
s+=f(&a);
printf("%d\n",s);
}
执行后输出结果是。
A.10B.9C.7D.8
27.设有以下语句:
typedefstructS
{intg;charh;}T;
则下面叙述中正确的是。
A.可用S定义结构体变量B.可以用T定义结构体变量
C.S是struct类型的变量 D.T是structS类型的变量
28.有以下程序:
main()
{unsignedchara,b;
a=4|3;
b=4&3;
printf("%d%d\n",a,b);
}
执行后输出结果是。
A.70B.07C.11D.430
29.有以下程序
voidsort(inta[],intn)
{inti,j,t;
for(i=0;ifor(j=i+2;jif(a[i]}
main()
{intk[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(k,10);
for(i=0;i<10;i++)printf("%d,",k[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,
30.有以下程序:
voidf(inta[],inti,intj)
{intt;
if(i{t=a[i];a[i]=a[j];a[j]=t;
f(a,i+1,j-1);
}
}
main()
{inti,k[5]={1,2,3,4,5};
f(k,0,4);
for(i=0;i<5;i++)printf("%d,",k[i]);printf("\n");
}
执行后输出结果是。
A.5,4,3,2,1,B.5,2,3,4,1,C.1,2,3,4,5,D.1,2,3,4,5,
二、阅读程序,将运行结果写在右边空白处(共2道题,每题5分,共10分)
程序1
#include
intf(intn)
{staticints=1;
while(n)s*=n--;
returns;
}
main()
{inti,j;
i=f(3);j=f(5);
printf("\nTheoutputis:
\n");
printf("i=%d,j=%d\n",i,j);}
程序2
#include
#include
structdata_tag
{
intx;
structdata_tag*next;
};
typedefstructdata_tagDATA;
voidmain()
{
DATANode[5];
DATA*p;
inti;
clrscr();
for(i=0;i<5;i++)
Node[i].x=i*2+1;
Node[0].next=&Node[3];
Node[3].next=&Node[2];
Node[2].next=&Node[4];
Node[4].next=&Node[1];
Node[1].next=NULL;
p=Node;
while(p!
=NULL)
{
printf("%d",p->x);
p=p->next;
}
}
三、改错题(每道题有5个错,每改对一个给2分,共3道题,30分)
程序1
#include″stdio.h″
voidmain()
{
inta,b;
scanf(″%d%d″,&a,b);
f=float(a/b);
printf(″a/b=%d″,f);
}
程序2
#include″stdio.h″
#include″conio.h″
intCompareInt(inta,intb)
{
if(a>b)
return1;
elseif(a=b)
return0;
elseif(!
a>=b)
return-1;
}
voidmain()
{
inta,b;
unsignedintk;
printf("inputtwonumber,likethis"12,13\":
");
scanf("%d,%d",&a,&b);
k=CompareInt(a,b);
switch(k)
{
case1:
printf("%d>%d",a,b);
case0:
printf("%d=%d",a,b);break;
case-1:
printf("%d<%d",a,b);break;
}
getch();
}
程序3
longStrToNum(char*str)
{
intk;
longresult=0;
k=0;
while(str[k]!
=0)
result=result*10+str[k];
returnresult;
}
voidmain()
{
char*str;
inti;
longl;
for(i=0,i<6;i++)
*(str+i)="1"+i;
l=StrToNum(str);
printf("%ld",l);
}
参考答案:
一、选择题
1~5CBDAB6~10CCBAD11~15BCCDA16~20DBDDA
21~25BACCB26~30CBACA
二、读程序写结果
程序1
TheOutputis:
i=6,j=720
程序2
17593
三、改错题(双下划线是修改后的错误之处)
程序1
#include"stdio.h"
voidmain()
{
inta,b;floatf;
scanf("%d%d",&a,&b);
f=(float)a/b;
printf("a/b=%f",f);
}
程序2
#include"stdio.h"
#include"conio.h"
intCompareInt(inta,intb)
{
if(a>b)
return1;
elseif(a==b)
return0;
elseif(a
return-1;
}
voidmain()
{
inta,b;
intk;
printf("inputtwonumber,likethis\"12,13\":
");
scanf("%d,%d",&a,&b);
k=CompareInt(a,b);
switch(k)
{
case1:
printf("%d>%d",a,b);break;
case0:
printf("%d=%d",a,b);break;
case-1:
printf("%d<%d",a,b);break;
}
getch();
}
程序3
longStrToNum(char*str)
{
intk;
longresult=0;
k=0;
while(str[k]!
=0)
result=result*10+str[k++]-'0';
returnresult;
}
voidmain()
{
charstr[6];
inti;
longl;
for(i=0;i<6;i++)
*(str+i)='1'+i;
l=StrToNum(str);
printf("%ld",l);
}