C语言02.docx
《C语言02.docx》由会员分享,可在线阅读,更多相关《C语言02.docx(20页珍藏版)》请在冰豆网上搜索。
C语言02
sizeof(float)是(C)。
A、一个浮点表达式
B、一个不合法的表达式
C、运算结果是一个整型表达式。
D、一种函数调用
下列数据中属于"字符串常量"的是(B)。
A、'A'
B、"ABC"
C、ABC
D、'ABC'
用下面的scanf函数输入数据,使得i=10,k=15选择正确的键盘输入方法(B).
(用"[CR]"表示回车,U表示空格)
main()
{inti,k;
scanf("i=%d,k=%d",&i,&k);
}
A、i=10[CR]k=15[CR]
B、i=10,k=15[CR]
C、10U15[CR]
D、10,15[CR]
逻辑表达式3<2||-1&&4>3-!
0的值为:
(A)
A、1
B、3
C、0
D、2
下列运算符中是C语言关系运算符的是(C)。
A、&
B、~
C、!
=
D、!
语句while(!
E);中的表达式!
E等价于(D)。
A、E==1
B、E!
=0
C、E!
=1
D、E==0
以下正确的描述是(A).
A、只能在循环体内和switch语句内使用break语句
B、continue语句的作用是终止整个循环的执行
C、从多层嵌套的外层循环中退出时,只能使用goto语句
D、在循环体内使用break和continue语句的作用相同
下面各语句中,能正确进行赋字符串操作的语句是(B).
A、chars1[5][]={"ABCDE"};
B、chars2[6]={'A','B','C','D','E'};
C、charst[][]={"ABCDE"};
D、chars[5]={'A','B','C','D','E'};
若有说明:
inta[3][4]={0};则下面正确的叙述是(A)。
A、数组a中每个元素均可得到初值0
B、只有元素a[0][0]可得到初值0
C、数组a中各元素都可得到初值,但其值不一定为0
D、此说明语句不正确
若有说明inta[3][4];则a数组元素的非法引用是(B)。
A、a[1][3]
B、a[0][4]
C、a[0][2*1]
D、a[4-2][0]
执行下面程序后,输出结果是(D)。
main()
{inta,b,c;
a=45,b=27,c=0;
c=max(a,b);
printf("%d\n",c);
}
intmax(intx,inty)
{intz;
if(x>y)z=x;
elsez=y;
return(z);
}
A、72
B、18
C、27
D、45
以下正确的描述是:
在C语言程序中(B)。
A、函数的定义可以嵌套,但函数的调用不可以嵌套
B、函数的定义不可以嵌套,但函数的调用可以嵌套
C、函数的定义和函数的调用均可以嵌套
D、函数的定义和函数的调用均不可以嵌套
在C语言的函数中,下列正确的说法是(B)。
A、形参可以是常量和变量
B、可以有也可以没有形参
C、数组名不能作形参
D、必须有形参
设有宏定义#definePI3.14和#defineS(r)PI*r*r,则S
(2)的值为(B).
A、6.28
B、12.56
C、3.14
D、9.42
inta[10]={1,2,3,4,5,6,7,8};int*p;p=&a[5];p[-3]的值是(D)。
A、4
B、2
C、不一定
D、3
若有以下程序段,则使用错误的选项是(C).
structstudent
{
intnum;
intage;
};
structstudentstu[3]={{1001,20},{1002,19},{1004,20}};
main();
{
structstudent*p;
p=stu;
…
;
}
A、(*p).num
B、(p++)->num
C、p=&stu.age
D、p++
若以"a+"方式打开一个已存在的文件,则以下叙述正确的是(A)。
A、文件打开时,原有文件内容不被删除,位置指针移到文件末尾,可作添加和读操作
B、以上各种说法皆不正确
C、文件打开时,原有文件内容不被删除,位置指针移到文件开头,可作重写和读操作
D、文件打开时,原有文件内容被删除,只可作写操作
#define和printf都不是C语句。
正确
格式字符%x用来以十六进制形式输出整数.正确
语句if(a>b)printf("%d",a);elseprintf("%d",b);可以用条件表达式a>b?
a:
b取代.
错误逻辑表达式-5&&!
8的值为1.错误
循环结构中的continue语句是使整个循环终止执行错误
for循环语句不能用于循环次数未知的情况下.错误
引用数组元素时,数组元素下标必须是整型常量.错误
数组的首地址一定是第一个数组元素的地址.正确
数组整体不参加数据处理(即不参加各种运算),参加数据处理的只能是数组的元素.正确
数组名作为函数调用时的实参,实际上传递给形参的是数组全部元素的值.错误
在主函数中,必须要对被调用函数进行类型说明,否则在编译时会出现错误.错误
在一个函数中定义的静态局部变量不能被另外一个函数所调用.正确
计算机编译系统对宏定义在编译时进行语法检查.错误
指向某一变量的指针,就是该变量的内存地址.正确
对于不同类型的数据,若想合成一个有机的整体,可以引用结构体进行定义。
正确
在打开文件时,必须说明文件的使用方式,"r"表示以只读方式打开一个文件.正确
intx=2;z=x++-1;则x的值为___3__.
设x=2.5,a=7,y=4.7,算术表达式x+a%3*(int)(x+y)%2/4的值为___2.5__.
设x=62,表达式x>=60&&x<70||x==1的值为___1__.
c语言表达式5>2>7>8的值是__0___.
字符串比较的库函数是__strcmp___,只写函数名即可.
从函数的形式上看,函数分为无参函数和___有参函数__两种类型.
设有以下共用体类型说明和变量定义,则变量a在内存所占字节数是__16___。
unionstud{charnum[6];floats[4];doubleave;}a,*p;
在C语言中,根据要处理的文件存储的编码形式,可以把文件分为ASCII文件和__二进制___文件.
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
用函数求N个[10,60]上的整数中能被5整除的最大
的数,如存在则返回这个最大值,如果不存在则
返回0。
------------------------------------------------*/
#include"stdio.h"
#include"stdlib.h"
#defineN30
intfind(intarr[],intn)
{
intm=0;
/*********Begin**********/
【参考代码】
inti;
for(i=0;iif(arr[i]%5==0&&arr[i]>m)
m=arr[i];
===============
【考生代码】
/**********End**********/
return(m);
}
main()
{
inta[N],i,k;
voidTestFunc();
for(i=0;ia[i]=rand()%50+10;
for(i=0;i{
printf("%5d",a[i]);
if((i+1)%5==0)printf("\n");
}
k=find(a,N);
if(k==0)
printf("NOFOUND\n");
else
printf("themaxis:
%d\n",k);
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
intn;
inti[5];
into;
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,"%d",&i[n]);
}
o=find(i,5);
fprintf(OUT,"%d\n",o);
fclose(IN);
fclose(OUT);
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
根据整型参数n,计算如图公式的值。
------------------------------------------------*/
#include"stdio.h"
#include"conio.h"
doublefun(intn)
{
/*********Begin**********/
【参考代码】
doublea=1;inti;
for(i=1;ia=1.0/(1+a);
returna;
===============
【考生代码】
/**********End**********/
}
main()
{
intm;
voidTestFunc();
printf("Enterm:
");
scanf("%d",&m);
printf("\nTheresultis%f\n",fun(m));
TestFunc();
}
voidTestFunc()
{
FILE*IN,*OUT;
ints;
intt;
doubleo;
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,"%f\n",o);
}
fclose(IN);
fclose(OUT);
}
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
实现3行3列矩阵的转置,即行列互换。
------------------------------------------------------*/
#include"stdio.h"
voidfun(inta[3][3],intn)
{
inti,j,t;
for(i=0;ifor(j=0;j/**********ERROR**********/
scanf("%d",a[i][j]);
for(i=0;i{
for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
for(i=0;i/**********ERROR**********/
for(j=0;j{
/**********ERROR**********/
a[i][j]=t;
a[i][j]=a[j][i];
/**********ERROR**********/
t=a[j][i];
}
for(i=0;i{
for(j=0;jprintf("%4d",a[i][j]);
printf("\n");
}
}
main()
{
intb[3][3];
fun(b,3);
}
【改错1】错误
【学生答案】
scanf("%d",a[i][j]);
【参考答案】
scanf("%d",&a[i][j]);
scanf("%d",(*(a+i)+j));
============================================================
【改错2】错误
【学生答案】
for(j=0;j【参考答案】
for(j=0;j
for(j=0;i>j;j++)
for(j=0;j<=i;j++)
for(j=0;i>=j;j++)
for(j=i+1;jfor(j=i;jfor(j=0;j<=i-1;j++)
for(j=0;i-1>=j;j++)
for(j=i+1;j<=n-1;j++)
for(j=i;j<=n-i;j++)
============================================================
【改错3】错误
【学生答案】
a[i][j]=t;
【参考答案】
t=a[i][j];
============================================================
【改错4】错误
【学生答案】
t=a[j][i];
【参考答案】
a[j][i]=t;
============================================================
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
从键盘输入10个字符,统计其中数字字符的个数。
------------------------------------------------------*/
#include
intmain()
{
inti,sum=0;
charc;
for(i=11;i>=2;i--)
{
/**********ERROR**********/
c=gets();
if(c<'0'||c>'9')
/**********ERROR**********/
break;
++sum;
}
printf("sum=%d",sum);
return0;
}
【改错1】错误
【学生答案】
c=gets();
【参考答案】
c=getchar();
============================================================
【改错2】错误
【学生答案】
break;
【参考答案】
continue;
============================================================
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
从键盘上输入2名学生4门课成绩,求每个学生的平均成绩,并统计不及格门次。
-------------------------------------------------------*/
#include
#include"math.h"
intmain()
{
inti,j,n=0;
floatx,sum,avg;
for(i=1;i<=2;i++)
{
/***********FILL***********/
____________;
for(j=1;j<=4;j++)
{
scanf("%f",&x);
if(x<60)n++;
/***********FILL***********/
___________;
}
avg=sum/4.0;
printf("\navgofNO.%dis%5.2f",i,avg);
}
printf("\n%d",n);
return0;
}
【空1】错误
【学生答案】
____________;
【参考答案】
sum=0
============================================================
【空2】错误
【学生答案】
___________;
【参考答案】
sum=sum+x
sum+=x
/*-------------------------------------------------------
【程序填空】
---------------------------------------------------------
功能:
设数组a中的元素均为正整数,以下程序是求a中偶数的个数
和偶数的平均值。
-------------------------------------------------------*/
#include
intmain()
{
inta[10]={1,2,3,4,5,6,7,8,9,10};
intk,s,i;
floatave;
for(k=s=i=0;i<10;i++)
{
/***********FILL***********/
if(a[i]%2!
=0)_______;
/***********FILL***********/
s+=________;
k++;
}
if(k!
=0)
{
ave=s/k;
printf("%d,%f\n",k,ave);
}
return0;
}
【空1】错误
【学生答案】
if(a[i]%2!
=0)_______;
【参考答案】
continue
============================================================
【空2】错误
【学生答案】
s+=________;
【参考答案】
a[i]
============================================================