C语言模拟试题第三套Word格式文档下载.docx
《C语言模拟试题第三套Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言模拟试题第三套Word格式文档下载.docx(29页珍藏版)》请在冰豆网上搜索。
![C语言模拟试题第三套Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-2/4/247052f6-2784-4581-8abc-3933dd2777a8/247052f6-2784-4581-8abc-3933dd2777a81.gif)
printf("
C
4.设x,y,z,t均为整型变量,则执行以下语句后,t的值为:
()
x=y=z=1;
t=++x||++y&
&
++z;
A、0
B、1
C、2
D、不定值
B
5.如果inta=2,b=3,c=0,下列描述正确的是()。
A、a&
b>
c的结果为假
B、!
a!
=(b!
=c)表达式的值为1
C、a||(b=c)执行后b的值为0
D、a>
b!
=c和a>
(b!
=c)的执行顺序是一样的
6.
从键盘输入的整数中找出最小值min,输入0时结束.请在A处填写正确语句()。
#include"
stdio.h"
main()
{intmin=0,a;
do{
scanf("
%d"
&
a);
if(min>
a)min=a;
}while(___A___);
printf("
min);
}
A、a=0
B、a==0
C、a>
0&
a<
D、a!
=0
7.设有如下程序段:
intk=10;
while(k==0)
k--;
则下述说明中正确的是().
A、循环体一次也不执行
B、循环体执行一次
C、死循环
D、循环体执行10次
8.staticcharstr[10]="
China"
;
数组元素个数为()。
A、6
B、9
C、5
D、10
9.函数调用:
strcat(strcpy(str1,str2),str3)的功能是()。
A、将串str1复制到串str2中后再连接到串str3之后
B、将串str2连接到串str1之后再将串str1复制到串str3中
C、将串str1连接到串str2之后再复制到串str3之后
D、将串str2复制到串str1中后再将串str3连接到串str1之后
10.C语言程序中必须有的函数是()。
A、#include"
B、main
C、printf
D、scanf
11.程序运行结束后,屏幕上输出值为().
staticintx=10;
main()
{intx=3;
f();
x--;
x);
}
f()
{x++;
A、10
B、2
C、11
D、3
12.file1.c中有命令,#include<
file2.c>
若file2.c中有全局静态变量a,则().
A、a在file1.c中应用extern说明.
B、a在file1.c中有效,不必用extern说明.
C、a在file1.c中不生效
D、a在file1.c和file2.c中均不生效.
13.若有说明:
intn=2,*p=&
n,*q=p;
,则以下非法的赋值语句是()。
A、*p=*q;
B、n=*q;
C、p=n;
D、p=q;
14.以下程序的输出结果是().
main()
{charstr[]="
ABCD"
*p=str;
%d\n"
*(p+3));
A、68
B、不确定的值
C、字符D的地址
D、0
15.使用共用体变量,不可以()。
A、同时访问所有成员
B、进行动态管理
C、节省存储空间
D、简化程序设计
二、判断题
1.在C语言中,各种类型的整型数据在内存中都占2个字节。
【学生答案】错误
未答此题
============================================================
【参考答案】
错误
2.表达式(j=3,j++)的值是4.
3.格式字符%e以指数形式输出实数数字部分小数位数7位.
4.charc[6]="
abcde"
%3s"
c)表示输出的字段的宽度为3位,如果被输出的数据的位数大于3,只输出3位数.
5.设d=1,e=2,f=3,则逻辑表达式!
(d+e)+f&
e+f*2的值为0.
6.已知a=1,b=2,c=3,d=4,则条件表达式a>
b?
a:
(c>
d?
c:
d)的值为4.
正确
7.已知a=3,b=4,c=5.则逻辑表达式a+b>
c&
b==c值为0.
8.do-while循环由do开始,while结束,循环体可能一次也不做。
9.对于for(表达式1;
表达式2;
表达式3)语句来说,continue语句意味着转去执行表达式2.
10.在do-while循环中,任何情况下都不能省略while.
11.对静态变量的初始化不是在编译阶段完成的.
12.定义intx[5],n;
则x=x+n;
或x++;
都是正确的.
13.语句charch[12]={"
CProgram"
};
与语句charch[]="
具有不同的赋初值功能.
14.数组名作为函数调用时的实参,实际上传递给形参的是数组第一个元素的值.
15.变量根据其作用域的范围可以分作局部变量和全局变量.
16.当变量的存储类型定义缺省时,系统默认为变量的存储类型为auto类型,分配在静态区.
17.若有宏定义:
#defineS(a,b)t=a;
a=b;
b=t由于变量t没定义,
所以此宏定义是错误的。
18.设有如下定义:
int*p;
*p=100;
则printf("
p);
的输出结果是100.
19.使几个不同的变量共占同一段内存的结构,称为"
结构体"
类型.
20.在打开文件时,必须说明文件的使用方式,"
wb+"
表示以读/写方式打开一个二进制文件.
三、填空题
1.若有定义:
inta=10,b=9,c=8;
接着顺序执行下列语句后,变量c中的值是_____.c=(a-=(b-5));
c=(a%11)+(b=3);
【空1】错误
[无]
9
2.getchar()函数只能接收一个_____.
字符
3.当a=1,b=2,c=3时,执行以下程序段后b=_____.if(a>
c)b=a;
a=c;
c=b;
2
4.若输入字符串:
abcde<
回车>
则以下while循环体将执行_____次.while((ch=getchar())=='
e'
)printf("
*"
5.字符串的结束标志是_____.
\0
'
\0'
6.如果函数不要求返回值,可用_____来定义函数为空类型.
void
7.将函数funl的入口地址赋给指针变量p的语句是_____.
p=funl;
8.设有以下共用体类型说明和变量定义,则变量d在内存所占字节数是_____。
unionstud{shortintnum;
charname[8];
floatscore[3];
doubleave;
}d,stu[3];
12
四、程序设计
1./*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
用do-while语句求1~100的累计和。
------------------------------------------------*/
longintfun(intn)
{
/*********Begin**********/
/**********End**********/
main()
inti=100;
voidTestFunc();
1~100的累加和为:
%ld\n"
fun(i));
TestFunc();
voidTestFunc()
FILE*IN,*OUT;
inti;
intiIN;
longintiOUT;
IN=fopen("
in.dat"
r"
if(IN==NULL)
{
PleaseVerifyTheCurrerntDir..ItMayBeChanged"
OUT=fopen("
out.dat"
w"
if(OUT==NULL)
PleaseVerifyTheCurrentDir..ItMayBeChanged"
for(i=0;
i<
5;
i++)
{
fscanf(IN,"
iIN);
iOUT=fun(iIN);
fprintf(OUT,"
iOUT);
fclose(IN);
fclose(OUT);
【参考代码】
inti=1,sum=0;
do
{sum=sum+i;
i++;
}while(i<
=n);
returnsum;
===============
【考生代码】
2./*------------------------------------------------
编写程序,实现矩阵(3行3列)的转置(即行列互换)
例如:
输入下面的矩阵:
100200300
400500600
700800900
程序输出:
100400700
200500800
300600900
voidfun(intarray[3][3])
/*********Begin**********/
}
main()
{
inti,j;
voidNONO();
intarray[3][3]={{100,200,300},
{400,500,600},
{700,800,900}};
for(i=0;
i<
3;
i++)
for(j=0;
j<
j++)
%7d"
array[i][j]);
\n"
}
fun(array);
Convertedarray:
NONO();
voidNONO()
inti,j,array[3][3];
FILE*rf,*wf;
rf=fopen("
"
);
wf=fopen("
fscanf(rf,"
&
array[i][j]);
fprintf(wf,"
array[i][j]);
fclose(rf);
fclose(wf);
【参考代码】
inti,j,t;
for(i=0;
for(j=0;
i;
{t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
五、程序改错
1./*------------------------------------------------------
【程序改错】
--------------------------------------------------------
有1、2、3、4个数字,能组成多少个互不相同且无重复数
字的三位数?
都是多少?
------------------------------------------------------*/
inti,j,k;
/**********ERROR**********/
)
for(i=1;
=5;
for(j=1;
j<
j++)
for(k=1;
k<
k++)
if(i!
=k||i!
=j||j!
=k)
%d,%d,%d\n"
i,j,k);
【改错1】错误
【改错2】错误
for(i=1;
=4;
【改错3】错误
if(i!
=k&
i!
=j&
j!
if((i!
=k)&
(i!
=j)&
(j!
=k))
2./*------------------------------------------------------
以下程序把两个数按由大到小的顺序输出来.
/***********ERROR***********/
voidswap(int*p1,*p2)
intp;
p=*p1;
*p1=*p2;
*p2=p;
inta,b,*p,*q;