C语言习题级答案2.docx
《C语言习题级答案2.docx》由会员分享,可在线阅读,更多相关《C语言习题级答案2.docx(25页珍藏版)》请在冰豆网上搜索。
![C语言习题级答案2.docx](https://file1.bdocx.com/fileroot1/2023-2/25/90f61613-0b36-4f3a-a65c-2c9fb289230f/90f61613-0b36-4f3a-a65c-2c9fb289230f1.gif)
C语言习题级答案2
选折题
1.inta=1,b=2,c=3;if(a>b)a=b;if(a>c)a=c;则a的值为(A)。
A、1
B、不一定
C、3
D、2
2.以下选项中不合法的用户标识符是B
A、Dim
B、printf
:
C、_123
D、A$
3.inti,j,a[2][3];按照数组a的元素在内存的排列次序,不能将数
1,2,3,4,5,6存入a数组的是(C)。
A、for(i=0;i<2;i++)for(j=0;j<3;j++)a[i][j]=i*3+j+1;
B、for(i=0;i<6;i++)a[i/3][i%3]=i+1;
C、for(i=1;i<=6;i++)a[i][i]=i;
D、for(i=0;i<3;i++)for(j=0;j<2;j++)a[j][i]=j*3+i+1;
。
4.以下所列的C语言常量中,错误的是___A___。
A、、0xFF
C、2L
D、'\72'
5.若有说明:
inta[3][4]={0};则下面正确的叙述是(A)。
A、数组a中每个元素均可得到初值0
B、只有元素a[0][0]可得到初值0
C、此说明语句不正确
|
D、数组a中各元素都可得到初值,但其值不一定为0
6.以下正确的字符串常量是D
A、'abc'
B、'A'
C、OlympicGames
D、"\\\"
7.C语言中,char类型数据占(C)。
A、8个字节
$
B、4个字节
C、1个字节
D、2个字节
8.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表
示的字符常量'\101'是____D__。
A、非法的常量
B、字符a
C、字符e
D、字符A
¥
9.以下函数的类型是(D)
fff(floatx)
{
return5;
}
A、与参数x的类型相同
B、void类型
C、无法确定
~
D、int类型
10.以下叙述中正确的是(A)。
A、静态(static)类别变量的生存期贯穿于整个程序的运行期间
B、全局变量的作用域一定比局部变量的作用域范围大
C、函数的形参都属于全局变量
D、未在定义语句中赋初值的auto变量和static变量的初值都是随机值
11.下列运算符中是C语言关系运算符的是(C)。
A、&
[
B、~
C、!
=
D、!
12.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用
八进制表示的字符常量'\101'是(D)。
A、字符e
B、字符a
C、非法的常量
D、字符A
:
13.若有floatx=;,则执行下列程序段的输出结果为(B)。
printf("%3d",(int)x);
A、
B、213
C、
D、
14.全局变量的定义不可能在(A)。
A、函数内部
B、文件外面
《
C、最后一行
D、函数外面
15.C语言中函数调用的方式有(A)。
A、函数调用作为语句、函数表达式或函数参数三种
B、函数调用作为语句一种
C、函数调用作为函数表达式一种
D、函数调用作为语句或函数表达式两种
16.字符串"\\\"WWW\123\xCC\t"的长度为(A)
:
A、8
B、9
C、10
D、14
17.若有double*p,x[10];inti=5;使指针变量p指向元素x[5]的语句为(D)。
A、p=x;
B、p=x[i];
C、p=&(x+i)
D、p=&x[i];
,
18.以下程序的执行结果是___A____.
main()
{intnum=0;
while(num<=2){num++;printf("%d,",num);}}
A、1,2,3,
B、1,2,3,4,
C、1,2,
D、0,1,2
`
19.若fp已正确定义并指向某个文件,当未遇到该文件结束标志时函数D
feof(fp)的值为()。
A、一个非0值
B、-1
C、1
D、0
20.以下对枚举类型名的定义中正确的是(D)。
A、enuma{"sum","mon","tue"};
*
B、enuma={sum,mon,tue};
C、enuma={"sum","mon","tue"};
D、enuma{sum=9,mon=-1,tue};
21.在执行fopen函数时,ferror函数的初值是(D)。
A、TRUE
B、1
C、-1
D、0
。
22.以下能正确进行字符串赋值的语句是D
A、chars[5]=“good!
”;
B、chars[5]={‘a’,‘e’,‘i’,‘o’,‘u’};
C、chars[5];s=“good!
”;
D、char*s;s=“good!
”;
23.已知p,p1为指针变量,a为数组名,j为整型变量,下列赋值语句中
不正确的是(C)。
A、p=&a[j];
B、p=a;
{
C、p=10;
D、p=&j,p=p1;
24.若有intx,y,z;,则执行以下程序段后的输出结果为:
C
x=1;y=5;z=3;
if(x>y)x=y;
y=z;
printf("x=%d,y=%d,z=%d",x,y,z);
A、x=5,y=3,z=5
B、x=1,y=5,z=3
、
C、x=1,y=3,z=3
D、x=5,y=3,z=3
25.当顺利执行了文件关闭操作时,fclose函数的返回值是(D)。
A、TRUE
B、1
C、-1
D、0
26.以下能正确定义数组并正确赋初值的语句是(D)。
A、intc[2][]={{1,2},{3,4}};
B、inta[1][2]={{1},{3}};
C、intN=5,b[N][N];
D、intd[3][2]={{1,2},{34}};
27.以下程序的执行结果是_____B___.
main()
{intw=1,x=2,y=3,z=4;
w=(ww;
w=(ww;
~
w=(ww;
printf("%d",w);}
A、2
B、4
C、3
D、1
28.以下for循环的执行次数是for(x=0,y=0;(y=123)&&(x<4);x++);(A)。
¥
A、4次
B、是无限循环
C、3次
D、循环次数不定
29.以下函数的类型是__B____。
fff(floatx)
{
return5;
}
>
A、无法确定
B、int类型
C、与参数x的类型相同
D、void类型
30.关于建立函数的目的,以下正确的说法是(C)。
A、减少程序文件所占内存
B、提高程序的执行效率
C、提高程序的可读性
>
D、减少程序的篇幅
判断
1.若有intⅰ=10,j=0;则执行完语句
if(j=0)ⅰ++;elseⅰ--;ⅰ的值为11。
F
2.inti=20;switch(i/10){case2:
printf("A");
case1:
printf("B");}的输出结果为A。
F
3.C语言的函数可以嵌套定义.F
4在程序中定义了一个结构体类型后,可以多次用它来定义具有
¥
该类型的变量。
T
5.在C语言中,对于数组的定义chara[8]="computer"是错误的.T
6.结构体类型只有一种。
F
7.函数中的形式参数是局部变量.T
8.在C语言中charstr[6]="hello",可以将字符串"hello"正确赋给数组.T
9.C语言中只能逐个引用数组元素而不能一次引用整个数组。
T
|
10.在C语言中charstr[]={'h','e','l','l','o'}不能将字符串"hello"正确赋给数组.T
程序设计1
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
给定n个数据,求最小值出现的位置(如果最小值
出现多次,求出第一次出现的位置即可)。
-
------------------------------------------------*/
#include<>
voidbky();
intstation(ints[],intn)
{
/**********Begin**********/
inti,k;
k=0;
(
for(i=1;iif(s[i]
return(k);
/**********End**********/
}
程序设计2
/*------------------------------------------------
【程序设计】
|
--------------------------------------------------
功能:
请编一个函数voidfun(inttt[M][N],intpp[N]),
tt指向一个M行N列的二维数组,求出二维数组每列
中最小元素,并依次放入pp所指一维数组中。
二维
数组中的数已在主函数中赋予。
------------------------------------------------*/
#include<>
~
#include<>
#defineM3
#defineN4
voidbky();
voidfun(inttt[M][N],intpp[N])
{
/**********Begin**********/
¥
inti,j;
for(j=0;j{
pp[j]=tt[0][j];
for(i=1;iif(tt[i][j]pp[j]=tt[i][j];
>
}
/**********End**********/
}
main()
{
intt[M][N]={{22,45,56,30},
{19,33,45,38},
【
{20,22,66,40}};
intp[N],i,j,k;
printf("Theoriginaldatais:
\n");
for(i=0;i{
for(j=0;jprintf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
?
printf("\nTheresultis:
\n");
for(k=0;kprintf("\n");
bky();
}
voidbky()
{
inti,j,array[3][4],p[4];
FILE*rf,*wf;
、
rf=fopen("","r");
wf=fopen("","w");
for(i=0;i<3;i++)
for(j=0;j<4;j++)
fscanf(rf,"%d",&array[i][j]);
fun(array,p);
for(j=0;j<4;j++)
{
fprintf(wf,"%7d",p[j]);
?
fprintf(wf,"\n");
}
fclose(rf);
fclose(wf);
}
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
|
功能:
为一维数组输入10个整数;将其中最小的数与第一个数
对换,将最大的数与最后一个数对换,输出数组元素。
------------------------------------------------------*/
#include<>
main()
{
inta[10];
voidinput();
$
voidoutput();
voidmax_min();
input(a,10);
max_min(a,10);
output(a,10);
}
voidinput(int*arr,intn)
{
int*p,i;
,
p=arr;
printf("pleaseenter10integers:
\n");
for(i=0;i/**********ERROR**********/
scanf("%d",p);
}
voidmax_min(int*arr,intn)
{
int*min,*max,*p,t;
>
min=max=arr;
for(p=arr+1;p/**********ERROR**********/
if(*p<*max)
max=p;
elseif(*p<*min)min=p;
t=*arr;*arr=*min;*min=t;
/**********ERROR**********/
if(max=arr)max=min;
t=*(arr+n-1);
,
*(arr+n-1)=*max;
*max=t;
}
voidoutput(int*arr,intn)
{
int*p,i;
p=arr;
printf("Thechangedarrayis:
\n");
/**********ERROR**********/
{
while(i=0;iprintf("%3d",*p++);
printf("\n");
}
【改错1】错误
【学生答案】
scanf("%d",p);
【参考答案】
。
scanf("%d",p★++);
scanf("%d",arr[i]);
scanf("%d",p+i);
scanf("%d",arr+i);
============================================================
【改错2】错误
【学生答案】
{
if(*p<*max)
【参考答案】
if(*p>*max)
if(*max<*p)
============================================================
【改错3】错误
$
【学生答案】
if(max=arr)max=min;
【参考答案】
if(max==arr)
if(arr==max)
============================================================
'
【改错4】错误
【学生答案】
while(i=0;i【参考答案】
for(i=0;ifor(i=0;n>i;i++)
for(p=arr;pfor(i=0;i<=n-1;i++)
for(i=0;n-1>=i;i++)
[
for(p=arr;p<=arr+n-1;)
for(p=arr;arr+n-1>=p;)
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
有n个整数,使其前面各数顺序向后移m个位置,最后m个
—
数变成最前面的m个数。
------------------------------------------------------*/
#include""
main()
{
intnumber[20],n,m,i;
printf("thetotalnumbersis:
");
|
scanf("%d",&n);
printf("backm:
");
scanf("%d",&m);
for(i=0;iscanf("%d,",&number[i]);
scanf("%d",&number[n-1]);
move(number,n,m);
for(i=0;iprintf("%d,",number[i]);
printf("%d",number[n-1]);
》
}
move(array,n,m)
/**********ERROR**********/
intn,m,array(20);
{
int*p,array_end;
/**********ERROR**********/
array_end=(array+n-1);
—
for(p=array+n-1;p>array;p--)
/**********ERROR**********/
*p==*(p-1);
*array=array_end;
m--;
if(m>0)move(array,n,m);
}
【改错1】错误
·
【学生答案】
intn,m,array(20);
【参考答案】
intn,m,array[20];
============================================================
【改错2】错误
<
【学生答案】
array_end=(array+n-1);
【参考答案】
array_end=*(array+n-1);
============================================================
【改错3】错误
、
【学生答案】
*p==*(p-1);
【参考答案】
*p=*(p-1);
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
\
功能:
从键盘输入若干行字符,输入后把他们存储到一磁盘文件
中。
在从该文件中读出这些数据,将其中的小写字母转换
成大写字母后在屏幕上输出。
-------------------------------------------------------*/
#include""
#defineN100
、
main()
{
FILE*fp;
charc,*p,s[N][20];
inti,n;
printf("n=");scanf("%d",&n);
/**********FILL**********/
if(n<1_____n>N)exit(0);
printf("Input%dstring:
\n",n);
for(i=0;i}
scanf("%s",s[i]);
/**********FILL**********/
fp=fopen("text",_____);
for(i=0;i{
p=s[i];
/**********FILL**********/
while(*p!
='\0')
if(!
ferror(fp))fputc(_____,fp);
}
%
fclose(fp);
printf("\n");
/**********FILL**********/
fp=fopen("text",_____);
while((c=fgetc(fp))!
=EOF)
{
if(c>'a'&&c<='z')c-+32;
putchar(c);
}
printf("\n");
|
fclose(fp);
}
【空1】错误
【学生答案】
if(n<1_____n>N)exit(0);
【参考答案】
||
{
============================================================
【空2】错误
【学生答案】
fp=fopen("text",_____);
【参考答案】
"w"
#
============================================================
【空3】错误
【学生答案】
while(*p!
='\0')
【参考答案】
*p++
?
============================================================
【空4】错误
【学生答案】
fp=fopen("text",_____);
【参考答案】
"r"
—
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
数组名作为函数参数,求平均成绩。
-------------------------------------------------------*/
)
floataver(floata[])/*定义求平均值函数,形参为一浮点型数组名*/
{
inti;
floatav,s=a[0];
for(i=1;i<5;i++)
/**********FILL**********/
s+=_____[i];
av=s/5;
/**********FILL**********/
return_____;
}
voidmain()
{
floatsco[5],av;
inti;
printf("\ninput5scores:
\n");
for(i=0;i<5;i++)
/**********FILL**********/
scanf("%f",_____);
/**********FILL**********/
av=aver(_____);
printf("averagescoreis%\n",