printf("%4d",s[i]);
}
}
程序的运行结果是
16.阅读以下程序并写出其运行结果
#include
main()
{FILE*fp;
inta[10]={1,2,3},i,n;
fp=fopen(“dl.dat”,”w”);
for(i=0;i<3;i++)fprintf(fp,”%d”,a[i]);
fprintf(fp,”\n”);
fclose(fp);
fp=fopen(“dl.dat”,”r”);
fscanf(fp,”%d”,&n);
fclose(fp);
printf(“%d\n”,n);
}
程序的运行结果是
17.阅读以下程序并写出其运行结果
#include
main()
{
inti,j;
charch;
i=1;
while(i<=5){
j=1;
ch='a';
while(j<=i){
printf("%2c",ch);
ch=ch+1;
j++;
}
printf("\n");
i++;
}
}
程序的运行结果是
二.单项选择题
1.在C语言中,函数的隐含存储类别是()。
A)autoB)staticC)externD)无存储类别
2.若用数组名作为函数调用时的实参,则实际上传递给形参的是()。
A.数组的首地址B.数组的第一个元素值
C.数组中全部元素的值D.数组元素的个数
3.已知structsk{
inta;
floatb;
}data,*p;
若有p=&data,则对data中的成员a正确引用是()
A.(*p).dataB.(*p).aC.p->data.aD.p.data.a
4.在while(x)语句中的x与下面条件表达式等价的是:
。
A.x!
=0B.x==1C.x!
=1D.x==0
5.二维数组a有m行n列,则在a[i][j]之前的元素个数为()。
A.j*n+iB.i*n+jC.i*n+j-1D.i*n+j+1
6.设有声明语句:
inta=1,b=0;则执行以下语句后输出为:
。
switch(a)
{
case1:
switch(b)
{
case0:
printf("**0**");
break;
case1:
printf("**1**");
break;
}
case2:
printf("**2**");
break;
}
A**0**B**0****2**
C**0****1****2**D有语法错误
7.以下程序运行结果是()
main()
{chars[]=”Address”;
printf(”%d\n”,strlen(s));
}
A)7B)8
C)9D)10
8.以下不正确的描述是()
A)在函数外部定义的变量是全局变量
B)在函数内部定义的变量是局部变量
C)函数的形参是局部变量
9.D)局部变量不能与全局变量同名
10.以下选项中关于程序模块化的叙述错误的是()。
A)把程序分成若干相对独立的模块,可便于编码和调试
B)把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块
C)可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序
D)可采用自项向下、逐步细化的设计方法把若干独立模块组装成所要求的程序
(13)以下选项中关于c语言常量的叙述错误的是()。
A)所谓常量,是指在程序运行过程中,其值不能被改变的量
B)常量分为整型常量、实型常量、字符常量和字符串常量
C)常量可分为数值型常量和非数值型常量
D)经常被使用的变量可以定义成常量
11.若有定义:
inta,b;,通过语句scanf("%d;%d",&a,&b);,能把整数3赋给变量a,5赋给变量b的输入数据是()。
A)35B)3,5C)3;5D)35
12.若有定义语句:
intk1=10,k2=20;,执行表达式(k1=k1>k2)&&(k2=k2>k1)后,k1和k2的值分别为()。
A)0和1B)0和20C)10和1D)10和20
13.以下叙述中错误的是()。
A)C语言编写的函数源程序,其文件名后缀可以是.C
B)C语言编写的函数都可以作为一个独立的源程序文件
C)C语言编写的每个函数都可以进行独立的编译并执行
D)一个C语言程序只能有一个主函数
14.若有定义语句:
inta=10;doubleb=3.14;,则表达式'A'+a+b值的类型是()。
A)charB)intC)doubleD)float
15.若有定义语句:
intx=12,y=8,z;,在其后执行语句z=0,9+x/y;,则Z的值为()。
A)9B)1C)2D)2.4
16.下列条件语句中,输出结果与其他语句不同的是()。
A)if(a)printf("%d\-n",x);elseprintf("%d\n",y);
B)if(a—0)printf("%d\n",y);elseprintf("%d\n",x);
C)if(a!
=0)p由tf("%d\n",x);elseprintf("%d\n",y);
D)if(a=0)printf("%d\n",x);elseprintf("%d\n",y);
17.若有定义语句:
intyear=2009,*p=&year;,以下不能使变量year中的值增至2010的语句是()。
A)*p+=1;B)(*p)++;C)++(*p);D)*p++;
18.以下定义数组的语句中错误的是()。
A)intnum[]={1,2,3,4,5,6};B)intnum[][3]={{1,2},3,4,5,6};
C)intnum[2][4]=({1,2,,{3,4},{5,6});D)intnum[][4]={1,2,3,4,5,6};
19.有以下函数
intfun(char*x,char*y){
intn=0;
while((*x=*y)&&*x!
='\0'){
x++;
y++;
n++;}
returnn:
}
函数的功能是()。
A)查找x和y所指字符串中是否有'\0'
B)统计x和y所指字符串中最前面连续相同的字符个数
c)将y所指字符串赋给X所指存储空间
D)统计x和y所指字符串中相同的字符个数
20.1.关于C语言中数的表示,以下叙述正确的是()
A、只有整型数在允许范围内能精确无误的表示,实型数会有误差
B、只要在在允许范围内整型和实型都能精确表示
C、只有实型数在允许范围内能精确无误的表示,整型数会有误差
D、只有八进制表示的数在不会有误差
21.2.以下关于算法叙述错误的是()
A、算法可以用伪代码、流程图等多种形式来描述B、一个正确的算法必须有输入
C、一个正确的算法必须有输出D、用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码
22.3.以下叙述错误的是()
A、一个C程序可以包含多个不同名的函数
B、一个C程序只能有一个主函数
C、C程序在书写时,有严格的缩进要求,否则不能编译通过
D、C程序的主函数必须用main作为函数名
23.4.设有以下语句
charch1,ch2;
scanf(”%c%c”,&ch1,&ch2);
若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是()
A、A和B之间用逗号间隔B、A和B之间不能有任何间隔符
C、A和B之间可以用回车间隔D、A和B之间用空格间隔
24.5.以下选项中非法的字符常量是()
A、’\102’B、’\65’C、’\xff’D、’\019’17
25.6.设变量均已正确定义并且赋值,以下与其他三组输出结果不同的一组语句是()
A、x++;printf((“%d\n”,x);B、n=++x;printf((“%d\n”,n);
C、++x;printf((“%d\n”,x);D、n=x++;printf((“%d\n”,n);
26.7.以下选项中,能表示逻辑值“假”的是()
A1B0.000001C0D100.0
27.8.若k是int类型变量,且有以下for语句for(k=-1;k<0;k++)printf(****\n”);
下面关于语句执行情况的叙述中正确的是()
A、循环体执行一次B、循环体执行两次
C、循环体一次也不执行D、构成无限循环
28.9.设有如下定义语句Intm[]={2,4,6,8},*k=m;
以下选项中,表达式的值为6的是()
A*(k+2)Bk+2C*k+2D*k+=2
29.10.若有函数
voidfun(doublea[],int*n)
{………}
以下叙述中正确的是()
A、调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送
B、形参a和n都是指针变量
C、形参a是一个数组名,n是指针变量
D、调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组
三.填空题,
1.C语言中简单数据类型包括、、。
2.C语言中用_______表示逻辑值“假”,用________表示逻辑值“真”。
3.char*p[10];这条语句的含义是:
_____
4.设有语句“inta=3;”,执行语句“printf(”%d”,-a++);”后,输出结果是,变量a的值是。
5.如果在程序中定义静态变量和全局变量时,未明确指明其初始值,那么它们可以在程序编译阶段自动被初始化为。
6.下面这个程序功能:
读入5个整数,当程序读入的数据为正整数时,则显示该数,否则,不显示。
读入5个数据后,程序结束运行。
#include
main()
{
inti,n;
for(i=1;i<=5;i++)
{
printf("Pleaseentern:
");
scanf("%d",&n);
if(n<=0)_____________;
printf("n=%d\n",n);
}
printf("Programisover!
\n");
}
7.通过函数的递归调用计算阶乘,请填空使程序完整。
#include
longpower(intn)
{
longf;
if(n>1)
f=_________________________________;
else
f=1;
return(f);
}
intmain()
{
longy;
printf("inputainteagernumber:
\n");
scanf("%d",_________________________);
y=power(n);
printf("%d!
=%ld\n",n,_______________________________);
getch();
}
8.韩信点兵。
韩信有一队兵,他想知道有多少人,便让士兵排队报数:
按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。
下面程序的主要功能是计算韩信至少有多少兵。
#include
main()
{
intx=1;
intfind=0;
for(x=1;________;x++)
{
if(x%5==1&&x%6==5&&x%7==4&&x%11==10)
{
printf("x=%d\n",x);
____________;
}
}
}
9.计算1+1/2+1/4+…+1/50的值,并显示出来。
m