C语言习题级参考答案.docx
《C语言习题级参考答案.docx》由会员分享,可在线阅读,更多相关《C语言习题级参考答案.docx(21页珍藏版)》请在冰点文库上搜索。
C语言习题级参考答案
测试题11
1.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是(B)。
A、chars[10];strcpy(s,"abcdefg");
B、chars[10];s="abcdefg";
C、chars[10]="abcdefg";
D、chart[]="abcdefg",*s=t
2.下列语句的输出结果是(B)。
printf("%d\n",(int)(2.5+3.0)/3);
A、2
B、1
C、有语法错误不能通过编译
D、0
3.以下程序段的输出结果是A
main()
{charch1,ch2;
ch1=‘A’+‘5’-‘3’;
ch2=‘A’+‘5’-‘3’;
printf(“%d,%c\n”,ch1,ch2);
}
A、67,C
B、B,C
C、不确定的值
D、C,D
4.以下程序段的输出结果为(B)。
charc[]="abc";inti=0;do;while(c[i++]!
='\0');printf("%d",i-1);
A、abc
B、3
C、ab
D、2
5.相同结构体类型的变量之间,可以(C)。
A、比较大小
B、地址相同
C、赋值
D、相加
6.C语言源程序文件经过C编译程序编译连接之后生成一个后缀为(B)的可执行文件
A、.obj
B、.exe
C、.c
D、.bas
7.以下程序的输出结果是C
main()
{chars[]=“ABCD”,*p;
for(p=s;p
printf(“%s\n”,p);
}
A、
B、
C、
D、
8.当调用函数时,实参是一个数组名,则向函数传送的是(B)。
A、数组每一个元素的地址
B、数组的首地址
C、数组每个元素中的值
D、数组的长度
9.如果inta=2,b=3,c=0,下列描述正确的是(D)
A、a>b!
=c和a>(b!
=c)的执行顺序是一样的
B、a&&b>c的结果为假
C、a||(b=c)执行后b的值为0
D、!
a!
=(b!
=c)表达式的值为1
10.当调用函数时,实参是一个数组名,则向函数传送的是(B)。
A、数组每个元素中的值
B、数组的首地址
C、数组的长度
D、数组每一个元素的地址
11.C语言中,switch后的括号内表达式的值可以是C
A、只能为整型和字符型
B、只能为整型
C、任何类型
D、只能为整型,字符型,枚举型
12.定义语句int*swap();指的是D
A、以上说法均不对
B、swap是一个返回整型值的函数
C、swap是一个指向函数的指针
D、swaP是一个返回指向整型值指针的函数
13.若有定义inta=9;,则执行语句printf("%d\n",++a);后的输出结果是(C)。
A、11
B、9
C、10
D、12
14.以下数组定义中不正确的是(C)。
A、inta[2][3];
B、intb[][3]={0,1,2,3};
C、intd[3][]={{1,2},{1,2,3},{1,2,3,4}};
D、intc[100][100]={0};
15.下列程序段的输出结果为(C)。
intx=3,y=2;printf("%d",(x-=y,x*=y+8/5));
A、5
B、1
C、3
D、7
16.下列四组选项中,均不是C语言关键字的选项是(C)。
A、getccharprintf
B、includescanfcase
C、defineIFtype
D、whilegopow
17.若用数组名作为函数的实参,传递给形参的是(C)。
A、数组元素的个数
B、数组第一个元素的值
C、数组的首地址
D、数组中全部元素的值
18.若变量a与i已正确定义,且i已正确赋值,合法的语句是(B)。
A、a=a++=5;
B、++i;
C、a==1
D、a=int(i);
19.指针变量p进行自加运算(即执行p++;)后,地址偏移值为2,则其
数据类型为(A)。
A、int
B、double
C、float
D、char
20.下面标识符中,不合法的用户标识符为A
A、m#n
B、x_22
C、Do
D、CHAR
21.下列数组说明中,正确的是(B)。
A、intarray[3][];
B、intarray[][4];
C、intarray[][][5];
D、intarray[][];
22.判断两个字符串是否相等,正确的表达方式是(C)
A、while(s1=s2)
B、while(s1==s2)
C、while(strcmp(s1,s2)==0)
D、while(strcmp(s1,s2)=0)
23.利用fseek函数可以实现的操作是(D)。
A、改变文件的位置指针
B、文件的随机读写
C、文件的顺序读写
D、以上答案均正确
24.下列关于单目运算符++、--的叙述中正确的是(A)
A、它们的运算对象可以是char型变量和int型变量
B、它们的运算对象可以是任何变量和常量
C、它们的运算对象可以是int型变量,但不能是char型变量
D、它们的运算对象可以是char型变量,但不能是int型变量
25.设有intx=11;则表达式(x++*1/3)的值是(C)。
A、12
B、11
C、3
D、4
26.下列变量定义中合法的是(A)。
A、short_a=1-.1e-1;
B、longdo=0xfdaL;
C、doubleb=1+5e2.5;
D、float2_and=1-e-3;
27.下列语句的结果是(B)。
main()
{intj;
j=3;
printf("%d,",++j);
printf("%d",j++);
}
A、3,4
B、4,4
C、4,3
D、3,3
28.系统的标准输入文件是指(B)。
A、显示器
B、键盘
C、硬盘
D、软盘
29.设有intx=11;则表达式(x++*1/3)的值是(A)。
A、3
B、4
C、12
D、11
30.以下程序的输出结果是C
voidfun(int*s)
{staticintj=0;
do
s[j]+=s[j+1];
while(++j<2);
}
main()
{intk,a[10]={1,2,3,4,5};
for(k=1;k<3;k++)
fun(a);
for(k=0;k<5;k++)
printf("%d",a[k]);
}
A、34756
B、23445
C、35745
D、12345
判断
1.静态存储变量不随其所在函数的调用结束而被释放,其值会保留作为下一次调用的初值.T
2.若有说明intc;则while(c=getchar());是正确的C语句。
T
3.设有数组定义:
chararray[]="hello";则数组array所占的空间为5.F
4.经过下述赋值intx=3;doubley;y=(double)x;后,则x变量的数据类型为int。
T
5.char*p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。
F
6.integer是合法的关键字。
F
7.共同体变量所占的内存长度等于最长的成员的长度。
T
8.数组在内存中占一连续的存储区,数组名代表数组的首地址.T
9.若有定义:
intj;则表达式(j=3,j++,j=5,j+5)执行后,j的值为10。
F
10.++(i+1);是非法的赋值语句。
T
程序设计
/*------------------------------------------------
【程序设计】1
--------------------------------------------------
功能:
求一个四位数的各位数字的立方和。
-----------------------------------------------*/
#include
voidTestFunc();
intfun(intn)
{
/*********Begin**********/
intd,s=0;
while(n>0)
{d=n%10;
s+=d*d*d;
n/=10;
}
returns;
/**********End**********/
}
main()
{
intk;
k=fun(1234);
printf("k=%d\n",k);
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
intiIN,iOUT,i;
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("PleaseVerifyTheCurrerntDir..itMayBeChanged");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("PleaseVerifyTheCurrentDir..itMayBeChanged");
}
for(i=0;i<5;i++)
{
fscanf(IN,"%d",&iIN);
iOUT=fun(iIN);
fprintf(OUT,"%d\n",iOUT);
}
fclose(IN);
fclose(OUT);
}
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
将tt数组中的小写字母都改为对应的大写字母,其它字符删除。
例如:
a4bdsk88*,结果:
ABDSK
------------------------------------------------*/
voidTestFunc();
#include
#include
voidfun(chartt[])
{
/*********Begin**********/
inti,j=0;
for(i=0;tt[i];i++)
if(('a'<=tt[i])&&(tt[i]<='z'))
tt[j++]=tt[i]-32;
tt[j]=0;
/**********End**********/
}
main()
{chartt[81];
printf("\nPleaseenterastring:
");
gets(tt);
fun(tt);
printf("\nTheresultstringis:
\n%s",tt);
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
chars[100];
IN=fopen("in.dat","r");
if(IN==NULL)
{
printf("ReadFILEError");
}
OUT=fopen("out.dat","w");
if(OUT==NULL)
{
printf("WriteFILEError");
}
fgets(s,100,IN);
fun(s);
fprintf(OUT,"%s",s);
fclose(IN);
fclose(OUT);
}
程序改错
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
用下面的和式求圆周率的近似值。
直到最后一项的绝对值
小于等于0.0001。
π111
-=1--+---+...
4357
------------------------------------------------------*/
#include
/**********ERROR**********/
#include
fun()
{
inti=1;
/**********ERROR**********/
ints=0,t=1,p=1;
/**********ERROR**********/
while(fabs(t)<=1e-4)
{
s=s+t;
p=-p;
i=i+2;
t=p/i;
}
/**********ERROR**********/
printf("pi=%d\n",s*4);
}
main()
{
fun();
}
【改错1】错误
【学生答案】
#include
【参考答案】
#include"math.h"
#include
============================================================
【改错2】错误
【学生答案】
ints=0,t=1,p=1;
【参考答案】
floats=0,t=1,p=1;
floats=0,p=1,t=1;
floatp=1,s=0,t=1;
floatp=1,t=1,s=0;
floatt=1,p=1,s=0;
floatt=1,s=0,p=1;
============================================================
【改错3】错误
【学生答案】
while(fabs(t)<=1e-4)
【参考答案】
while(fabs(t)>1e-4)
while(0.0001while(1e-4while(fabs(t)>0.0001)
============================================================
【改错4】错误
【学生答案】
printf("pi=%d\n",s*4);
【参考答案】
printf("pi=%f\n",s*4);
printf("pi=%f\n",4*s);
/*------------------------------------------------------
【程序改错】2
--------------------------------------------------------
功能:
以下程序能求出1*1+2*2+......+n*n<=1000中满足条件的
最大的n。
------------------------------------------------------*/
#include"string.h"
main()
{
intn,s;
/**********ERROR**********/
s==n=0;
/**********ERROR**********/
while(s>1000)
{
++n;
s+=n*n;
}
/**********ERROR**********/
printf("n=%d\n",&n-1);
}
【改错1】错误
【学生答案】
s==n=0;
【参考答案】
s=n=0;
============================================================
【改错2】错误
【学生答案】
while(s>1000)
【参考答案】
while(s<=1000)
============================================================
【改错3】错误
【学生答案】
printf("n=%d\n",&n-1);
【参考答案】
printf("n=%d\n",n-1);
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
统计字符s在字符串str中出现的次数。
例如:
若字符串为"aaaslkaaas",则应输出2。
-------------------------------------------------------*/
#include
/***********FILL***********/
intfun(chart,_____)
{
inti,num=0;
for(i=0;str[i];i++)
/***********FILL***********/
if(_____)
num++;
returnnum;
}
main()
{
charstr[80],s;
printf("inputastring:
");
gets(str);
printf("输入要查找的字符s:
");
/***********FILL***********/
s=_____;
printf("%d\n",fun(s,str));
}
【空1】错误
【学生答案】
intfun(chart,_____)
【参考答案】
charstr[]
char*str
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
从键盘上输入两个复数的实部与虚部,求出并输出它们的
和、差、积、商。
-------------------------------------------------------*/
#include
voidmain()
{
floata,b,c,d,e,f;
printf("输入第一个复数的实部与虚部:
");
scanf("%f,%f",&a,&b);
printf("输入第二个复数的实部与虚部:
");
scanf("%f,%f",&c,&d);
/**********FILL**********/
_____;
f=b+d;
printf("相加后复数:
实部:
%f,虚部:
%f\n",e,f);
e=a*c-b*d;
/**********FILL**********/
_____;
printf("相乘后复数:
实部:
%f,虚部:
%f\n",e,f);
e=(a*c+b*d)/(c*c+d*d);
/**********FILL**********/
_____;
printf("相除后复数:
实部:
%f,虚部:
%f\n",e,f);
}
【空1】错误
【学生答案】
_____;
【参考答案】
e=a+c
e=c+a
============================================================
【空2】错误
【学生答案】
_____;
【参考答案】
f=a*d+b*c
f=a*d+b*c
f=a*d+b*c
============================================================
【空3】错误
【学生答案】
_____;
【参考答案】
f=(b*c-a*d)/(c*c+d*d)
f=(b*c-a*d)/(c*c+d*d)
f=(b*c-a*d)/(c*c+d*d)