(18)以下能正确定义一维数组的选项是______。
A)intnum[];B)#defineN100
intnum[N];
C)intnum[0..100] ;D)intN=100;
intnum[N]
(19)有以下程序
main()
{ints=0,a=1,n;
scanf("%d",&n);
do
{s+=1;a=a-2;}
while(a!
=n);
printf("%d\n",s);
}
若要使程序的输出值为2,则应该从键盘给n输入的值是______。
A)-1B)-3C)-5D)0
(20)有以下程序
main()
{charstr[]="xyz",*ps=str;
while(*ps)ps++;
for(ps--;ps-str>=0;ps--)
puts(ps);}
执行后输出结果是______。
A)yzB)zC)zD)x
yzxyz
Xyzyzxyzxy
(21)以下不能正确定义二维数组的选项是______。
A)inta[2][2]={{1},{2}};
B)inta[][2]={1,2,3,4};
C)inta[2][2]={{1},2,3}
D)inta[2][]={{1,2},{3,4}}
(22)以下叙述中正确的是______。
A)C程序中注释部分可以出现在程序中任意合适的地方
B)花括号“{”和“}”只能作为函数体的定界符
C)构成C程序的基本单位是函数,所有函数名都可以由用户命名
D)分号是C语句之间的分隔符,不是语句的一部分
(23)有以下程序
voidfun(char*a,char*b)
{a=b;(*a)++;}
main()
{charc1='A',c2='a',*p1,*p2;
p1=&c1;p2=&c2;fun(p1,p2);
printf("%c%c\n",c1,c2);
}
程序运行后的输出结果是______。
A)AbB)aaC)AaD)Bb
(24)以下程序中函数scmp的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址。
#include
#include
char*scmp(char*s1,char*s2)
{if(strcmp(s1,s2)<0)
return(s1);
elsereturn(s2);
}
main()
{inti;charstring[20],str[3][20];
for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));/*库函数strcpy对字符串进行复制*/
strcpy(string,scmp(string,str[2]));
printf("%s\n",string);
}
若运行时依次输入:
abcd、abba和abc三个字符串,则输出结果为______。
A)abcdB)abbaC)abcD)baca
(25)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是______。
A)函数调用可以作为独立的语句存在
B)函数调用可以作为一个函数的实参
C)函数调用可以出现在表达式中
D)函数调用可以作为一个函数的形参
(26)若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)。
s=a;
for(b=1;b<=c;b++)s=s+1;
则与上述程序段功能等价的赋值语句是______。
A)s=a+b;B)s=a+c;C)s=s+c;D)s=b+c;
(27)设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是______。
A)x=x*100+0.5/100.0;
B)x=(x*100+0.5)/100.0
C)x=(int)(x*100+0.5)/100.0;
D)x=(x/100+0.5)/100.0;
(28)下列选项中正确的语句组是______。
A)chars[8];s={"Berjing"};
B)char*s;s={"Beijing"};
C)chars[8];s="Berjing";
D)char*s;s="Beijing";
(29)已定义以下函数
fun(int*p)
{return*p;}
该函数的返回值是______。
A)不确定的值
B)形参p中存放的值
C)形参p所指存储单元中的值
D)形参p的地址值
(30)下列函数定义中,会出现编译错误的是______。
A)max(intx,inty,int*z)
{*z=x>y ?
x :
y ;}
B)intmax(intx,y)
{intz;z=x>y?
x:
y;returnz;}
C)max(intx,inty)
{intz;
z=x>y?
x:
y;return(z);}D)intmax(intx,inty){return(x>y?
x:
y);}
(31)若有定义:
int*p[3];,则以下叙述中正确的是______。
A)定义了一个基类型为int的指针变量p,该变量具有三个指针
B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C)定义了一个名为*p的整型数组,该数组含有三个int类型元素
D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
(32)有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)
inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A)a[p-a]B)*(&a[i])
C)p[i]D)*(*(a+i))
(33)有以下程序
main()
{inta;charc=10;
floatf=100.0;doublex;
a=f/=c*=(x=6.5);
printf("%d%d%3.1f%3.1f\n",a,c,f,x);
}
程序运行后的输出结果是______。
A)16516.5B)1651.56.5
C)1651.06.5D)2651.56.5
(34)有以下程序
main()
{intx=3,y=2,z=1;
printf("%d\n",x/y&~z);
}
程序运行后的输出结果是______。
A)3B)2C)1D)0
(35)有以下程序
main()
{intk=4,n=0;
for(;n{n++;
if(n%3!
=0)continue;
k--;}
printf("%d,%d\n",k,n);
}
程序运行后的输出结果是______。
A)1,1B)2,2C)3,3D)4,4
(36)若运行时给变量x输入12,则以下程序的运行结果是
main()
{intx,y;
scanf("%d",&x);
y=x>12?
x+10:
x-12;
printf("%d\n",y);
}
A)0B)22C)12D)10
(37)以下说法正确的是
A)C语言程序总是从第一个函数开始执行
B)在C语言程序中,要调用函数必须在
main()函数中定义
C)C语言程序总是从main()函数开始执行
D)C语言程序中的main()函数必须放在程序的开始部分
(38)有以下程序
#defineF(X,Y)(X)*(Y)
main()
{inta=3,b=4;
printf("%d\n",F(a++,b++));
}
程序运行后的输出结果是
A)12B)15C)16D)20
(39)下列程序执行后的输出结果是
voidfunc(int*a,intb[])
{b[0]=*a+6;}
main()
{inta,b[5]={0};
a=0;b[0]=3;
func(&a,b);
printf("%d\n",b[0]);
}
A)6B)7C)8D)9
(40)若有下面的程序段
chars[]="china";char*p;p=s;
则下列叙述正确的是
A)s和p完全相同
B)数组s中的内容和指针变量p中的内容相等
C)s数组长度和p所指向的字符串长度相等
D)*p与s[0]相等
(41)下列程序的输出结果是
main()
{inta[5]={2,4,6,8,10},*p,**k;
p=a;
k=&p;
printf("%d",*(p++));
printf("%d\n",**k);
}
A)4B)22C)24D)46
(42)下面程序段的运行结果是
char*p="abcdefgh";
p+=3;
printf("%d\n",
strlen(strcpy(p,"ABCD")));
A)8B)12C)4D)7
(43)下列函数的运行结果是
main()
{inti=2,p;
intj,k;
j=i;
k=++i;
p=f(j,k);
printf("%d",p);
}
intf(inta,intb)
{intc;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
return(c);
}
A)-1B)1C)2
D)编译出错,无法运行
(44)已知函数的调用形式:
fread(buf,size,count,fp),参数buf的含义是
A)一个整型变量,代表要读入的数据项总数
B)一个文件指针,指向要读的文件
C)一个指针,指向要读入数据的存放地址
D)一个存储区,存放要读的数据项
(45)有如下程序
#defineN2
#defineMN+1
#defineNUM2*M+1
main()
{inti;
for(i=1;i<=NUM;i++)
printf("%d\n",i);
}
该程序中的for循环执行的次数是
A)5B)6C)7D)8
(46)有如下程序
intfunc(inta,intb)
{return(a+b);}
main()
{intx=2,y=5,z=8,r;
r=func(func(x,y),z);
printf("%d\n",r);
}
该程序的输出的结果是
A)12B)13C)14D)15
(47)下列关于单目运算符++、--的叙述中正确的是______。
A)它们的运算对象可以是任何变量和常量
B)它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C)它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D)它们的运算对象可以是char型变量、int型变量和float型变量
(48)函数fun的返回值是
fun(char*a,char*b)
{intnum=0,n=0;
while(*(a+num)!
=‘\0’)num++;
while(b[n])
{*(a+num)=b[n];num++;n++;}
returnnum;
}
A)字符串a的长度B)字符串b的长度
C)字符串a和b的长度之差D)字符串a和b的长度之和
(49)以下程序执行后a的值是
main()
{intx,y=252,i=386,*m=&y,*z=&i;
x=(z==y);
printf("%d",x);
}
A)252B)1C)0
D)运行时出错,x无定值
(50)阅读下列程序,当运行函数时,输入asdafaaz67,则输出为
#include
#include
#include
intfun(char*str)
{inti,j=0;
for(i=0;str[i]!
=‘\0’;i++)
if(str[i]!
=‘‘)
str[j++]=str[i];
str[j]=‘\0’;
}
main()
{charstr[81];
intn;
clrscr();
printf("Inputastring:
");
gets(str);
puts(str);
fun(str);
printf("%s\n",str);
}
A)asdafaaz67B)asdafaaz67
C)asdD)z67
二、填空题(每空2分,共40分)
请将答案分别写在答题卡中序号为【1】至【20】的横线上,答在试卷上不得分。
(1)以下程序运行结果是【1】。
longfib(intg)
{switch(g)
{case0∶return0;
case1∶case2∶return1;
}
return(fib(g-1)+fib(g-2));
}
main()
{longk;
k=fib(5);
printf("k=%d\n",k);
}
(2)以下程序段中,错误的行号是【2】。
①#include
②main()
③{charstr[14];str[]={"IloveChina"};
④printf("%s",str);
⑤}
(3)将以下程序写成三目运算表达式是【3】。
if(a>b)max=a;elsemax=b;
(4)设x和y均为int型变量,且x=1,y=2,则表达式double(1+x/y)的值为【4】。
(5)设有以下定义和语句,则*(*(p+2)+1)的值为【5】。
inta[3][2]={10,20,30,40,50,60},
(*p)[2];p=a;
(6)以下程序的功能是调用函数fun计算:
m=1-2+3-4+…+9-10,并输出结果。
请填空。
intfun(intn)
{intm=0,f=1,i;
for(i=1;i<=n;i++)
{m+=i*f;
f=__【6】____;
}
returnm;
}
main()
{printf("m=%d\n",__【7】____);}
(8)以下程序运行后的输出结果是__【9】____。
main()
{inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{case0:
m++;n++;break;
case10:
n++;break;
default:
k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
(9)以下程序运行后的输出结果是__【10】___。
main()
{inta=1,b=3,c=5;
if(c=a+b)printf("yes\n");
elseprintf("no\n");
}
(10)以下程序运行后的输出结果是__【11】____。
main()
{charm;
m='B'+32;printf("%c\n",m);
}
(11)执行以下程序后,输出"#"号的个数是
__【12】____。
#include
main()
{inti,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
(12)请在以下程序第一行的下划线处填写适当内容,使程序能正常运行。
__【13】____(double,double);
main()
{doublex,y;
scanf("%1f%1f",&x,&y);
printf(%1f\n",max(x,y));
}
doublemax(doublea,doubleb)
{return(a>b?
a:
b);}
(13)下面程序的输出是 【14】 。
main()
{int arr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n",k);}
(14)以下程序运行后的输出结果是__【15】。
main()
{inti,n[]={0,0,0,0,0};
for(i=1;i<=4;i++)
{n[i]=n[i-1]*2+1;
p