c语言考试第三套.docx
《c语言考试第三套.docx》由会员分享,可在线阅读,更多相关《c语言考试第三套.docx(13页珍藏版)》请在冰豆网上搜索。
c语言考试第三套
c语言考试第三套
————————————————————————————————作者:
————————————————————————————————日期:
C语言中运算对象必须是整型的运算符是(B)。
A.=
B.%=
C.〈=
D./
下列字符序列中,不可用作C语言标识符的是(C)。
A.b70
B.a_1
C.#ab
D.symbol
下列程序的输出结果是(D)。
main()
{inta=011;
printf("%d\n",++a);
}
A.11
B.9
C.12
D.10
逻辑表达式5>3&&2||8<4-!
0的值为:
(C)
A.3
B.2
C.1
D.0
下列选项中,合法的C语言关键字是(B)。
A.integer
B.default
C.VAR
D.cher
下列程序的输出为(A)。
main()
{inty=10;
while(y--);
printf("y=%d\n",y);
}
A.y=-1
B.y=0
C.y=1
D.while构成无限循环
以下表述中正确的是(B).
A.在do-while循环中,while表达式的值不能为"假"
B.do-while循环中,while语句不能省略
C.do-while循环中,while(表达式)后面不能加分号
D.除了for循环,其他循环中都不能使用复合语句
以下不能正确定义二维数组的选项是(A)。
A.inta[2][]={{1,2},{3,4}};
B.inta[2][2]={{1},2,3};
C.inta[2][2]={{1},{2}};
D.inta[][2]={1,2,3,4};
inta[10];给数组a的所有元素分别赋值为1、2、3、……的语句是(D)。
A.for(i=1;i<11;i++)a[i]=i;
B.for(i=1;i<11;i++)a[0]=1;
C.for(i=1;i<11;i++)a[i+1]=i;
D.for(i=1;i<11;i++)a[i-1]=i;
若有说明:
inta[3][4]={0};则下面正确的叙述是(A)。
A.数组a中每个元素均可得到初值0
B.只有元素a[0][0]可得到初值0
C.数组a中各元素都可得到初值,但其值不一定为0
D.此说明语句不正确
以下叙述错误的是(B).
A.函数调用可以出现在一个表达式中
B.函数调用可以作为一个函数的形参
C.函数调用可以作为一个函数的实参
D.函数允许递归调用
以下叙述不正确的是(C).
A.全局变量可以由系统自动初始化
B.在程序运行期间,全局变量所占存储单元的值永久保留
C.当局部变量与全局变量重名时,全局变量起作用
D.全局变量存放在静态存储区
函数的形式参数系统默认存储类型说明是(D)。
A.static
B.extern
C.register
D.auto
设有宏定义#defineMAX(x,y)(x)>(y)?
(x):
(y),则F=4*MAX(2,3)的值为(B).
A.3
B.2
C.12
D.8
以下程序的输出结果是(B).
#include"stdio.h"
f(char*s)
{
char*p=s;
while(*p!
='\0')p++;
return(p-s);
}
main()
{
printf("%d\n",f("ABCDEF"));
}
A.0
B.6
C.3
D.8
对于下述定义,不正确的叙述是(B).
uniondata
{inti;
charc;
floatf;
}a,b;
A.变量a的地址和它的各成员地址都是相同的
B.可以在定义类型的同时定义变量a,并对a的任意成员初始化
C.变量a所占内存的长度等于成员f的长度
D.如果有定义语句uniondataa={6};则对变量a的初始化是正确的
定义my_file为文件型指针变量,使用fopen打开一个能读能写的新的文本文件,
正确的调用形式为(D).
A.my_file=fopen("my.dat","wb+");
B.my_file=fopen("my.dat","ab+");
C.my_file=fopen("my.dat","r+");
D.my_file=fopen("my.dat","w+");
在C程序中,APH和aph是两个不同的变量T
格式字符%o用来以八进制形式输出整数.T
已知a=1,b=2,c=3,d=4,则条件表达式a>b?
a:
(c>d?
c:
d)的值为4.T
在逻辑运算符中的运算级别由高向低依次为&&->||->!
F
for语句的循环体至少执行一次.F
for循环语句不能用于循环次数未知的情况下.F
字符串"Dalian"在内存中的存储长度是7.F
给数组赋初值时,初值的个数可以小于所定义的元素的个数.T
引用数组元素时,下标可以是整型表达式或整型常量.T
函数strlen("ASDFG\n")的值是7。
F
在C语言中,函数名代表函数的入口地址.T
在C程序中,函数既可以嵌套定义,也可以嵌套调用F
宏命令#define无论在文件中何处定义,其有效范围为整个源文件。
F
指向某一变量的指针,就是该变量的内存地址.T
在定义结构体变量时不允许对它赋初值.F
C语言把文件看作是一个字符(字节)序列。
T
已知floati=5.6;inta;写出语句a=(int)i;执行后变量i的值是__5.6___.
在C语言中,long类型数据占__4___个字节,short类型数据占__2___个字节.
c语言表达式5>2>7>8的值是__0___.
设a=3,b=4,c=4,则表达式a+b>c&&b==c&&a||b+c&&b==c的值为__1___.
若有数组定义:
inta[10];
则该数组可用的最小下标值是__0___.
若在程序中用到"strlen()"函数时,应在程序开头写上包含命令#include"__string.h___".
设有以下共用体类型说明和变量定义,在TC编译环境下,变量a在内存所占字节数是__16___。
unionstud{charnum[6];floats[4];doubleave;}a,*p;
fscanf(fp,"%d",&here)用来把fp所指向的文件数据读入到here变量中,执行一次fscanf(fp,"%3d",&here);
读入一个__整___型数据,该数据的宽度为__3___。
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
给定n个数据,求最大值在数组中出现的逻辑位置
(如果最大值出现多次,求出第一次出现的位置即可。
注意:
下标为0的数组元素,逻辑位置为1)。
------------------------------------------------*/
#include"stdio.h"
intstation(ints[],intn)
{
/*********Begin**********/
/**********End**********/
}
【参考代码】
inti,k=0;
for(i=1;i<=n;i++)
if(s[i]>s[k])k=i;
return(k+1);
/*------------------------------------------------
【程序设计】
--------------------------------------------------
功能:
输入n个数,并求出小于平均值的数的个数。
------------------------------------------------*/
#include"stdio.h"
intaverage_num(inta[],intn)
{
/*********Begin**********/
/**********End**********/
}
【参考代码】
inti,sum=0,k=0;
doubleaverage;
for(i=0;isum=sum+a[i];
average=sum*1.0/n;
for(i=0;iif(average>a[i])k++;
return(k);
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
计算数组元素中值为正数的平均值(不包括0)。
例如:
数组中元素的值依次为39-47212-8150,
则程序的运行结果为19.250000。
------------------------------------------------------*/
#include"stdio.h"
doublefun(ints[])
{
/**********ERROR**********/
intsum=0.0;
intc=0,i=0;
/**********ERROR**********/
while(s[i]=0)
{
if(s[i]>0)
{
sum+=s[i];
c++;
}
i++;
}
/**********ERROR**********/
sum\=c;
/**********ERROR**********/
returnc;
}
main()
{
intx[1000];inti=0;
do
{
scanf("%d",&x[i]);}
while(x[i++]!
=0);
printf("%f\n",fun(x));
}
【改错1】
【参考答案】
doublesum=0.0;
doublesum=0;
【改错2】
【参考答案】
while(s[i]!
=0)
while(!
s[i]==0)
while(!
0==s[i])
while(s[i])
【改错3】
【参考答案】
sum/=c;
sum=sum/c;
【改错4】
【参考答案】
returnsum;
return(sum);
/*------------------------------------------------------
【程序改错】
--------------------------------------------------------
功能:
以下程序输出前六行杨辉三角形,既
1
11
121
1331
14641
…………
…………
------------------------------------------------------*/
#include"stdio.h"
main()
{