return(x);
}
A.x=a+iB.x=*(a+i)C.x=[a+i]D.x=&(a+i)
10.下面程序的输出是(D)。
#include"string.h"
main()
{charp1[10]="abc",*p2="DEF",str[20]="xyz";
strcpy(str+2,strcat(p1,p2));
printf("%s\n",str);
}
A.xyzabcDEFB.zabcDEFC.yzabcDEFD.xyabcDEF
答案:
1、B2、C3、C4、C5、A(提示:
由于x,y都是全局变量,因此move函数中所用到的x和y都是全局的x和y)6、C7、D9、B10、D(提示:
strcpy(str+2,strcat(p1,p2));语句指的是先将p2字符串附加在p1字符串之后,且覆盖掉p1字符串的’\0’;再将p1拷贝到str字符串,从str+2开始拷贝。
如下图所示:
)
二、填空题
1.结构化程序的3种基本结构是顺序结构、选择结构和循环结构。
2.C程序的开始执行点是程序中main函数
3.流程图及N—S图都是一种)算法描述的工具。
4.有符号的基本整形变量的有效取值范围是)-32768~32767。
5.字符常量是用单引号括起来的一个字符。
6.字符串的结束标识是\0。
7.为避免条件语句if—else嵌套的二义性,C语言规定:
else与上面最近未匹配的if配对。
8.C语言用非表示逻辑“真”值。
9.能实现C程序循环结构的语句包括while语句,do-while语句和for语句
10.C语言的逻辑运算符包括&&(逻辑与)、||(逻辑或)和!
(逻辑非)
11.无条件使流程跳出循环的语句是break。
12.假使整形变量a、b的值分别1和3,表达式a+b/2的值是2。
13.在函数内部定义的变量,其有效范围是从定义变量开始到本函数结束。
14.函数体一般包括声明部分与执行部分。
15.C语言提供的预处理功能主要有宏定义、文件包含和条件编译
16.在C程序的函数内____不能__嵌套定义函数。
17.C语言规定标识符只能由________字母,下划线和数字三种字符组成。
18.设inta,b;则能正确表示代数式1/(ab)的C语言表达式是_____(18)_______。
19.设inti=1,s=0;
与do{s=s+i;}while(i++<5);等价的for循环结构是________(19)________。
20.下面程序读入20个整数,统计非负数个数并计算非负数之和。
请填空。
main()
{inti,a[20],s,count;
s=count=0;
for(i=0;i<20;i++)
scanf("%d",_(20)___);
for(i=0;i<20;i++)
{
if(a[i]<0)___(21)_____;
s+=a[i];
count++;
}
printf("%d\t%d",s,count);
}
21.下面程序的功能是从字符串"ComputerandC"中删去所有空格,请填空。
#include
main()
{charstr1[]="ComputerandC",str2[80];
inti,j=0;
for(i=0;i<_____(22)___;i++)
if(str1[i]___(23)___'')
{
str2[j]=str1[i];
j++;
}
str2[j]='\0';
printf("%s",str2);
}
22.下面程序的功能是把100~200之间的不能被3整除的数输出。
main()
{intn;
for((24);(25);___(26)____)
{if(n%3==0)(27);
printf("%d\n",n);
}
}
23.以下程序用"辗转相除法"来求出两个正整数的最大公约数。
请填空.若两个数分别放在变量m和n中,求最大公约数的算法如下:
(1)将两数中大的那个放在m中,小的放在n中
(2)求出m被n除后的余数r
(3)若余数为0则执行步骤(7);否则执行步骤(4)
(4)把除数作为新的被除数;把余数作为新的除数
(5)求出新的余数r
(6)重复步骤(3)到(5)
(7)输出n,此时n即为最大公约数
#include
main()
{intr,m,n;
printf("Enterm,n:
",m,n);
scanf("%d,%d",&m,&n);
if(mr=____(29)___;
while(___(30)_____)
{m=___(31)___;
n=____(32)____;
r=____(33)____;
}
printf("H.C.F=%d\n",n);
}
24.下面的函数是对一个数组的各元素值乘以2,(假设数组为int型),请填空。
voidsort(__(34)__)
{inti;
for(i=0;ia[i]=a[i]*2;
return;
}
25、下面函数的功能是交换a,b指针所指向的值,请填空。
//此次考试不考
voidf(int*a,int*b)
{____(35)___;
t=*a;*a=*b;*b=t;
}
若函数f是如下写法,又该怎样修改,请填空。
voidf(int*a,int*b)
{____(36)___;
*t=*a;*a=*b;*b=*t;
}
26、下面函数实现将字符串s复制到字符串t。
//此次考试不考
voidf(char*s,char*t)
{while(___(37)___)
{
*t=_(38)__;
t++;
s++;
}
*t='\0';
}
27、打印9×9乘法表。
输出格式要求为:
1*1=1
2*1=22*2=4
3*1=33*2=63*3=9
………………
程序如下:
main()
{intm,n;
for(m=1;m<=9;m++)
{for(n=1;(39);n++)
printf(“(40)”,m,n,m*n);
(41)
}
}
28.判断某个大于2的无符号整数是否素数。
判断无符号整数N是否素数的标准是:
除了1与N以外,N不能被任何一个整数所整除。
main()
{intn,i,ext;/*n表示输入数据,ext表示n是否素数的判断结论*/
ext=1;
scanf(“%d”,(42));
for(i=2;i<=n-1;i++)
if(n%i==0)
{ext=(43);
(44)
}
if(ext!
=0)
printf(“YES”);
else
printf(“NO”);
}
答案:
(1)顺序结构、选择结构和循环结构
(2)程序中main函数(3)算法描述
(4)-32768~32767(5)单引号(6)\0(7)上面最近未匹配的if(8)非0
(9)while语句,do-while语句和for语句(10)&&(逻辑与)、||(逻辑或)和!
(逻辑非)(11)break;(12)2(13)从定义变量开始到本函数结束(14)声明部分
(15)宏定义、文件包含和条件编译(16)不能(17)字母,下划线和数字
(18)1/(float)(a*b)(19)for(;i<=5;i++){s=s+i;}或for(;i<6;i++){s=s+i;}
(20)&a[i](21)continue;(22)strlen(str1)(23)!
=(24)n=100(25)n<200(26)n++(27)continue(28){r=m;m=n;n=r;}(29)m%n(30)r!
=0(31)n(32)r(33)m%n(34)inta[],intn或int*a,intn(35)intt;
(36)intk;int*t;t=&k;(37)*s!
=’\0’(38)*s(39)n<=m
(40)%d*%d=%d\t(41)printf("\n");(42)&n(43)0(44)break;
三、读程序填空
1、现有C语言程序段
main()
{intsum,i;
for(i=1;i<=100;i++)
{sum=0;
sum=sum+i;
}
printf(“sum=%d\n”,sum);
}
其输出是:
2、当从键盘键入abcedef(回车)时,下面的C程序段输出是:
#include
try_me()
{
charc;
if((c=getchar())!
=‘\n’)
try_me();
putchar(c);
}
main()
{
printf(“\n”);
try_me();
printf(“\n”);
}
3、现有一个C语言计算的数学函数fib(n):
fib(intn)
{
switch(n){
case0:
return0;
case1:
return1;
default:
{
inti;
inta=0,b=1,result;
for(i=2;i<=n;i++)
{
result=a+b;
a=b;
b=result;
}
returnresult;
}
}
}
该数学函数的表达式是
4、下面程序段的输出结果是:
func(intx)
{x=11;
return(x);
}
main()
{intx=13;
func(x);
printf("%d",x+x);
}
6.下面程序段的运行结果是:
#include
main()
{inti,j,k=0,m=0;
for(i=0;i<2;i++)
{for(j=0;j<3;j++)
k++;
k=k-j;
}
m=i+j;
printf("k=%d,n=%d\n",k,m);
}
7.运行下面程序段:
#include
main()
{intnumber,digit,s=0;
scanf("%d",&number);
do
{digit=number%10;
number=(number-digit)/10;
s=s+digit;
}while(number!
=0);
printf("%d\n",s);
}
键盘输入值12345,输出结果为:
_____________
8.下面程序段的运行结果是:
#include
longfunc(intx)
{longp;
if(x==0||x==1)return
(2);
p=x*func(x-1);
return(p);
}
main()
{printf("%d\n",func(4));
}
9.下面程序段的运行结果是:
intx;
intsub(inty)
{intz;
x=x+1;
y=y+1;
z=x+y;
printf(“x=%d,y=%d,z=%d\n”,x,y,z);
returnz;
}
main()
{inty,z;
x=10;
y=20;
z=30;
z=sub(y);
printf(“x=%d,y=%d,z=%d\n”,x,y,z);
}
10.下面程序段的运行结果是:
main()
{inti,s=0;
for(i=0;i<10;i++)
s=s+2;
printf(“%d”,s);
}
11.下面程序段的运行结果是:
main()
{intn=3,a=1,b=1,c;
while(n<=5)
{c=a+b;
a=b;
b=c;
n=n+1;
}
printf(“%d”,c);
}
12.下面程序段的运行结果是: