C语言模拟题.docx
《C语言模拟题.docx》由会员分享,可在线阅读,更多相关《C语言模拟题.docx(40页珍藏版)》请在冰点文库上搜索。
C语言模拟题
C语言模拟题
(一)
一、选择题
1、以下字符中不是转义字符的是(A)。
A'\c'
B、'\b'
C'\\'
D'\a'
2、设a=12,且a定义为整型变量。
执行语句a+=a-=a*=a;后a的值为(A)
A0
B、144
C132
D12
3、已定义floatx=1.25,y=3.37;
根据下面的输出结果,正确的输出语句是(C).
y+x=4.62,y-x=2.12
Aprintf("y+x=%6.2f,y-x=%6.2f\n",y+x,y-x);
B、printf("y+x=%f,y-x=%f\n",y+x,y-x);,l
Cprintf("y+x=%.2f,y-x=%.2f\n",y+x,y-x);
Dprintf("y+x=%5.2f,y=%5.2f\n",y+x,y-x);
4、执行下面程序段后,b的值为(A).
ints=35;
chart='A';
intb;
b=((s&&4)&&(tv'a'));
B、3
C2
D0
5k是整型,则以下程序段的执行结果是:
(B)
k=-3;
if(kv=O)printf("####")elseprintf("&&&&");
A####
B、有语法错误,无结果
C&&&&
D####&&&&6设j和k都是int类型,则下面的for循环语句(D)for(j=0,k=0;jv=9&&k!
=876;j++)scanf("%d",&k);
A最多执行9次
B、是无限循环
C循环体一次也不执行
D最多执行10次
7以下正确的描述是(A).
A、只能在循环体内和switch语句内使用break语句
B、continue语句的作用是终止整个循环的执行
C从多层嵌套的外层循环中退出时,只能使用goto语句
D在循环体内使用break和continue语句的作用相同
8以下能对一维数组a进行正确初始化的语句是(B)。
Ainta[1O]={};
B、inta[]={0};
Cinta[10]={10*1};
Dinta[10]=(0,0,0,0,0)
9以下正确的说法是(A).
A、函数的类型决定返回值的类型
B、定义函数时,形参的类型说明可以放在函数体内
Creturn后面不能为表达式
D如果形参与实参的类型不一致,以实参类型为准
10以下程序的输出结果为(C。
intfunc(intx,inty)
{return(x+y);
}
main()
{inta=1,b=2,c=3,d=4,e=5;
printf("%d\n",func((a+b,b+c,c+a),(d+e)));
}
A9
B、15
C13
D函数调用出错
11以下正确的说法是(D)o
A用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调
B、用户若需调用标准库函数,调用前必须重新定义
C系统根本不允许用户重新定义标准库函数
D用户可以重新定义标准库函数,若如此,该函数将失去原有含义
12在#include命令中,文件名可用双引号或尖括号括起来,对于二者的下列说法中正确的是
(A).
A用尖括号时,直接按系统标准方式检索文件目录.
B、用双引号时,直接按系统标准方式检索文件目录.
C用双括号和尖括号时,都不检查源文件所在的文件目录.
D以上说法都不对.
13当说明一个结构体变量时系统分配给它的内存是(D)o
A成员中占内存量最大者所需的容量
B、结构中第一个成员所需内存量
C结构中最后一个成员所需内存量
D各成员所需内存量的总和
14以下程序段给数组所有的元素输入数据,请选择正确答案填入(C)
#include
main()
{inta[1O],i=O;'
while(i<1O)scanf("%d",());
}
A&a[i+1]
B、a+i
Ca+(i++)
D&a[++i]
15在定义构造数据类型时,不能(A)。
A、末尾不写分号
B、说明存储类型
C初始化
D说明变量
二、判断题
1、在C程序中,%作为运算符时,是只能用于整数运算。
丫
2、若有inti=10,j=2;则执行完i*=j+8;后i的值为28。
格式字符%g选用%e或%f格式中输出宽度较长的一种格式输出实数.N
3、格式字符%g选用%e或%f格式中输出宽度较长的一种格式输出实数.N
4charc[6]="abcde";printf("%3s",c)表示输出的字段的宽度为3位,如果被输出的数据
的位数大于3,只输出3位数.N
5设x=1,y=2,z=3,则逻辑表达式x-y>z&&y!
=z的值为0.丫
6运算符的级别由高向低依次为!
->算术运算符->关系运算符->逻辑运算符->赋值运算符.Y
7已知a=3,b=4,c=5,则逻辑表达式!
(a>b)&&!
c||1的值为1.Y
8for循环语句只能用于循环次数确定的情况下.N
9break语句能够终止当前进行的多层循环.Nh
10for循环的三个表达式都可以省略.Y
11下列程序段是否正确:
N
inta[10];
a++;kl
12定义一维数组的形式为:
类型说明数组名[表达式],其中表达式必须是整型常量.N
13字符串"Dalian"在内存中的存储长度是7.N
14字符串"Dalian"在内存中的存储长度是7.N
15字符处理函数strcpy(str1,st⑵的功能是把字符串1接到字符串2的后面.N
lllllllll
16静态局部变量是在编译时被初始化的,故它只被赋初值一次.Y
17被包含文件是在编译时先单独生成目标文件,然后连接到可执行文件中去.N
18假设有inta[1O],*p;则p=&a[0]与p=a等价Y
19typedef可以定义生成新的数据类型.N
20用fopen("file","r+");打开的文件"file"可以进行修改。
丫
三、填空题
1、设a、b、c为整型数,且a=2、b=3、c=4,则执行完以下语句:
a*=16+(b++)-(++c);后,a
的值是__28___.
2若所用变量都已正确定义,请填写以下程序段的输出结果_OK.
for(i=1;i<=5;i++);
printf("OK");
3c语言表达式!
(4>=6)&&(3<=7)的值是__1___.
4设x和y均为int型变量,则以下for循环中的scanf语句最多可执行的次数是3__.
for(x=0,y=0;y!
=123&&x<3;x++)
scanf("%d",&y);
5按内存排列顺序,数组chara[2]中的所有元素是a[0]和__a[1]_.
6函数不可以进行嵌套定义,但可以进行嵌套__调用—.
7将数组a的首地址赋给指针变量p的语句是_p=a;.
8设有以下结构类型说明和变量定义,则变量a在内存所占字节数是__30。
structstud
{charnum[6];floats[4];doubleave;}a,*p;
四、程序设计
1、【程序设计】
功能:
把20个随机数存入一个数组,然后输出该数组中的
最小值。
其中确定最小值的下标的操作在fun函数中
实现,请给出该函数的定义。
#include"stdio.h"
#include"stdlib.h"
#defineVSIZE20intvector[VSIZE];
intfun(intlist[],intsize)
{
}main()
{
inti;
voidNONO();
for(i=0;i{
vector[i]=rand();
printf("Vector[%d]=%6d\n",i,vector[i]);
}
i=fun(vector,VSIZE);
printf("\nMininum:
Vector[%d]=%6d\n",i,vector[i]);
NONO();
}
voidNONO()
{
inti,t;
FILE*fp;
fp=fopen("out.dat","w");
for(i=0;i{
fprintf(fp,"Vector[%d]=%6d\n",i,vector[i]);
}
t=fun(vector,VSIZE);
fprintf(fp,"\nMininum:
Vector[%d]=%6d\n",t,vector[t]);
fclose(fp);
}
2、功能:
求k!
(k〈13),所求阶乘的值作为函数值返回
(要求使用递归)
*/
#include"stdio.h"
#include"conio.h"
longfun(intk)
{
/*********Begjn**********/
/**********End**********
}
main()
{
intm;
voidTestFunc();
printf("Enterm:
");
scanf("%d",&m);
printf("\nTheresultis%ld\n",fun(m));
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
ints;
intt;
longo;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
for(s=1;s<=5;s++)
{
fscanf(IN,"%d",&t);
o=fun(t);
fprintf(OUT,"%ld\n",o);
}
fclose(IN);
fclose(OUT);
}
五、程序改错
1、功能:
求1到10的阶乘的和。
*/
#include"stdio.h"
main()
{
inti;
floats=0;
floatfac(intn);
**********ERROR**********
for(i=1;i<10;i++)
**********ERROR**********/
s=fac(i);
printf("%f\n",s);
floatfac(intn)
**********ERROR**********
inty=1;
inti;
for(i=1;i<=n;i++)
y=y*i;
**********ERROR**********
return;
2、功能:
实现交换两个整数的值
例如:
给和b分别输入和6,输出为=6b=3
*/
#include"stdio.h"
**********ERROR**********voidfun(inta,b)
intt;
**********ERROR**********
t=a;
**********ERROR**********
a=b;
**********ERROR**********
b=t;
main()
{
inta,b;
printf("entera,b:
");scanf("%d%d",&a,&b);
fun(&a,&b);
printf("a=%db=%d\n",a,b);
}
六、程序填空
1
功
能
调
f
u
m
#include"stdio.h"intfun(intn)
{intm=0,f=1,i;
/***********
FILL*
********
for(i=1;;i++)
m+=i*f;
FILL*
return
}main()
{
printf("m=%d\n",fun(1O));
}
2、题目:
输出连接后的字符串
*/
#include"stdio.h"
FILL*
********
main()
{
charss[10]="12345";
strcat(ss,"6789");
/***********FILL***********
printf(,ss);
}
C语言模拟题
(二)
、判断题
1若变量均已正确定义并赋值,以下合法的C语言赋值语句是(C)
Ax+n=l;
B、x==5;
Cx=n/2.5;
D5=x=4+1;
2下述错误的C语言常量是:
(C).
A0xf
B、5.
C090
D.25
?
(B)
3根据下面的程序,使a=123,c1='o',c2='k'哪一种是正确的键盘输入方法
(规定用字符串[CR]表示回车,U表示空格)
main()
{inta;
charc1,c2;
scanf("%d%c%c",&a,&c1,&c2);
}
A123UoUk[CR]
B、123ok[CR]
C123Uok[CR]
D123oUk[CR]
4已知键入a=4,b=3,执行下面程序输出的结果是(B).
main()
{inta,b,s;
scanf("%d%d",&a,&b);
s=a;
if(a>b)s=b;
s=s*s;
printf("%d\n",s);
}
A13
B、9
C16
D15
5执行下面程序段后,i的值是(A).
inti=10;
switch(i)
{case9:
i+=1;
case10:
i--;
case11:
i*=3;
case12:
++i;
}
A28
B、10
C9
D27
6以下不是无限循环的语句为(D。
A、while
(1){x++;}
B、for(;;x++=i);
Cfor(i=10;;i--)sum+=i;
Dfor(y=0,x=1;x>++y;x=i++)i=x;
7下面程序段运行的结果是(A).
x=-1;
do{
x=x*x;
}while(!
x);
A、循环执行一次
B、有语法错误
C死循环
D循环执行两次
8若有说明:
inta[][3]={1,2,3,4,5,6,7};贝Ua数组第一维的大小是(A)
A3
B、无确定值
C4
D2
9若定义inta[12]={1,2,3,4,5,6,7,8,9,10,11,12};charc='a',d,g;
则数值为4的表达式是(D).
Aa[4]
B、a[g-c]
Ca['d'-'c']
Da['d'-c]
10以下叙述中正确的是(C。
A可以在一个函数中定义另一个函数
B、main()函数必须放在其它函数之前
C构成C程序的基本单位是函数
D所有被调用的函数一定要在调用之前进行定义
11下述函数的功能是(C).
intfun(char*x)
{char*y=x;
while(*y++);
returny-x-1;
}
A、比较两个字符串的大小
B、求字符串存放位置
C求字符串的长度
D将字符串x连接到字符串y后面
12在执行"文件包含"命令时,下列说法正确的是(A).
A、作为一个源程序编译,得到一个目标文件.
B、一个include命令可指定多个被包含文件.
C在编译时作为两个文件联结.
D被包含的文件可以是源文件或目标文件
13在说明语句:
int*f();中,标识符f代表的是(A)。
A一个返回值为指针型的函数名
B、一个用于指向函数的指针变量
C一个用于指向一维数组的行指针
D一个用于指向整型数据的指针变量
14下面程序的输出结果应该是(B).
chars[]="ABCD";
main()
{char*p;
for(p=s;p
printf("%s",p);
}
ADCBA
B、ABCDBCDCDD
CABCDABCABA
DABCD
15设有如下定义:
structsk{inta;floatb;}data,*p;
若要使p指向data中的a域,正确的赋值语句是(0。
Ap=(structsk*)data.a;
B、*p=data.a;
Cp=&data.a;
Dp=&data,a;
二、判断题
1在C程序中,%作为运算符时,是只能用于整数运算。
丫
2若a=3,b=2,c=1则关系表达式"(a>b)==c"的值为"真"。
丫
3格式字符%g选用%6或%f格式中输出宽度较长的一种格式输出实数.N
4整型变量在全部范围内可以用字符格式输出.N
5已知a=3,b=4,c=5,则逻辑表达式!
(a+b)+c-1&&b+c/2的值为0.N
6语句if(a>b)printf("%d",a);elseprintf("%d",b);可以用条件表达式a>b?
a:
b取代N.
7已知a=4,b=2,c=3,d=5,表达式a>b?
a:
cc:
d的值为4.Y
8for循环的三个表达式都可以省略.Y
9continue语句对于while和do-while循环来说,意味着转去计算While表达式丫.
10for语句的循环体至少执行一次.N
11语句charch[12]={"CProgram"};与语句charch[]="CProgram";具有不同的赋初值
功能.N
12定义chars[9];gets(s);若输入的字符串是Turboc/(/代表按回车键操作)则输入给
数组s中的字符个数是7.Y
13对静态数组的初始化是在编译阶段完成的.Y
14C语言中,通过函数调用只能获得一个返回值.N
15字符处理函数strcpy(str1,st⑵的功能是把字符串1接到字符串2的后面.N
16函数的返回值可以通过函数中的return语句获得。
丫
17被包含文件是在编译时先单独生成目标文件,然后连接到可执行文件中去.N
18char*p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。
N
19对于不同类型的数据,若想合成一个有机的整体,可以引用结构体进行定义。
丫
20用fopen("file","r+");打开的文件"file"可以进行修改。
丫
三、填空题
1设x的值为15,n的值为2,则表达式x%=(n+=3)运算后x的值是_0_.
2以下程序的输出结果为__9,10,#include"stdio.h"main(){int
a=O1O,j=1O;printf("%d,%d\n",++a,j--);}
3设a,b,c,t为整型变量,初值为a=3,b=4,c=5,执行完语句t=!
(a+b)+c-1&&b+c/2后,t的值
是1.
4若输入字符串:
abcdev回车>,则以下while循环体将执行__0次.
while((ch=getchar())=='e')printf("*");
5若有以下数组a,数组元素:
a[0]~a[9],其值为941282107513该数
组的元素中,数值最小的元素的下标值是__8___.
6函数不可以进行嵌套定义,但可以进行嵌套_调用.
7在c程序中,只能给指针变量赋NULL值和—地址___值.
8设有以下共用体类型说明和变量定义,则变量a在内存所占字节数是_16。
union
stud{charnum[6];floats[4];doubleave;}a,*p;
四、程序设计
1、功能:
将字符串中的小写字母转换为对应的大写字母,
其它字符不变。
*/
#include"string.h"
#include"stdio.h"voidchange(charstr[])
/*********
Begin
**********
/**********End**********/
}
main()
{
voidchange();
charstr[40];
voidTestFunc();
gets(str);
change(str);
puts(str);
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
chari[200];
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
fscanf(IN,"%s",i);
change(i);
fprintf(OUT,"%s\n",i);
fclose(IN);
fclose(OUT);
}
2、功能:
从低位开始取出长整型变量s中偶数位上的数,依次
构成一个新数放在t中。
例如:
当s中的数为:
7654321时,t中的数为:
642。
*/
#include"stdio.h"
longfun(longs,longt)
/**********End**********/
}
returnt;
}
main()
{
longs,t,m;
voidTestFunc();
printf("\nPleaseenters:
");scanf("%ld",&s);
m=fun(s,t);
printf("Theresultis:
%ld\n",m);
TestFunc();
}voidTestFunc()
{
FILE*IN,*OUT;
intn;
longi,t,m;
IN=fopen("in.dat","r");
if(IN==NULL)
{printf("ReadFileError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFileError");
}
for(n=0;n<5;n++)
{
fscanf(IN,"%ld",&i);m=fun(i,t);fprintf(OUT,"%ld\n",m);
}
fclose(IN);
fclose(OUT);
}
五、程序改错
1、功能:
猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个,第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
#include"stdio.h"main()
{intday,x1,x2;day=9;
/********************
x2==1;
while(day>0)
{
**********ERROR**********/
x1=(x2+1)/2;
x2=x1;
**********ERROR**********/
day++;
}
printf("thetotalis%d\n",x1);
}
2、功能:
将s所指字符串的反序和正序进行连接形成一个新