填空培训讲学.docx
《填空培训讲学.docx》由会员分享,可在线阅读,更多相关《填空培训讲学.docx(23页珍藏版)》请在冰点文库上搜索。
填空培训讲学
填空
1.
下列程序的输出结果是___:
#include"stido.h"
main()
{
charb[]="ABCDEFG";
char*chp=&b[7];
while(--chp>&b[0])
putchar(*chp);
putchar('\n');
}
答案:
GFEDCB
2.
#include
main()
{charch1,ch2;intn1,n2;
ch1=getchar();ch2=getchar();
n1=ch1-'0';n2=n1*10+(ch2-'0');
printf(“%d\n”,n2);
}
程序运行时输入:
12<回车>,执行后输出结果是___。
}
答案:
12
3.
若有以下程序:
main()
{
inti,j;
scanf("i=%d,j=%d",&i,&j);
printf("i=%d,j=%d",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入___。
答案:
i=10,j=20
4
以下程序的输出结果是___。
main()
{inta=177;
printf("%o\n",a);
}
答案:
261
5.
以下程序运行后的输出结果是___。
main()
{inta=1,b=3,c=5;
if(c=a+b)printf("yes\n");
elseprintf("no\n");
}
答案:
yes
6.
下面程序的功能是:
输出100以内能被3整除且个位数为6的所有整数,请填空。
#include
main()
{inti,j;
for(i=0;___;i++)
{j=i*10+6;
if(___)continue;
printf("%d",j);
}
}
答案:
i<=9|!
(j%3==0)
7.
以下程序运行后的输出结果是___。
main()
{intx=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d,%d\n",x,y);
}
答案:
20,0
8.执行下述程序的输出结果是___。
#include
floataverage(int*pa,intn)
{
inti;
floatavg=0.0;
for(i=0;iavg+=*(pa+i);
return(avg/n);
}
main()
{
inta[5]={2,4,6,8,10};
floatmean;
mean=average(a,5);
printf("mean=%f\n",mean);
}
答案:
6.000000
9.
输入1个正整数n,计算并输出s的前n项的和。
S=1-1/2+1/3-1/4+1/5-1/6+……
main()
{intk,flag,n;floats;
flag=1;s=0;
scanf("%d",&n);
for(k=1;k<=n;k++)
{
s=s+___;
___;
}
printf("sum=%fn",s);
}
答案:
1.0/k*flag|flag=-1*flag
10
下面程序的功能是:
从键盘上输入若干学生的成绩,统计并输出最高成绩和最低成绩,最
后当输入负数时结束输入。
请填空:
main()
{floatx,amax,amin;
scanf("%f",&x);
amax=x;amin=x;
while(___)
{if(x>amax)amax=x;
if(xscanf("%f",&x);
}
printf("\namax=%f\namin=%f\n",amax,amin);
}
答案:
x>=0|amin=x;
12.
下面程序的功能是计算1到10之间的奇数之和即偶数之和。
请填空:
main()
{inta,b,c,i;
a=c=0;
for(i=0;i<=10;i+=2)
{a+=i;
___;
c+=b;
}
printf("偶数之和:
%d\n",a);
printf("奇数之和:
%d\n",___);
}
答案:
【答案】b=i+1|c-11
13.
从键盘上分别输入两个字符串,将其连接成一个字符串输出.
main()
{
inti=0,j=0;
staticcharstrl[50],str2[20];
printf("Enterstring_1:
\n");
scanf("%s",strl);
printf("Enterstring_2:
\n");
scanf("%s",str2);
while(___);
___;
while(___);
printf("%s.\n",strl);
}
答案:
str1[i++]!
='\0'|i=i-1|(str1[i++]=str2[j++])!
='\0'
14.
下面程序段的运行结果是___。
chars[20]="abcd";
char*sp=s;
sp++;
puts(strcat(sp,”ABCD”));
}
答案:
bcdABCD
15.
以下程序的运行结果是_____________
increment()
{staticintx=0;
x+=1;
printf("%d",x);
}
main()
{increment();
increment();
increment();
}
答案:
123
16.
下面程序的运行结果是:
________。
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{intx=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}
答案:
35
17.
mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。
请填空。
intmystrlen(char*str)
{inti;
for(i=0;*(str+i)!
=________;i++);
return(________);
}
答案:
'\0'|i
18.若有定义:
int(*p)[4],则p是一个指向________的指针。
答案:
含有四个整型元素的一维数组
19.若有说明:
char*language[]={“FORTRAN”,”BASIC”,”JAVA”,”C”};则language[2]的值是:
________。
答案:
字符串”JAVA”的地址
20.
下面程序的运行结果是:
________。
#include“stdio.h”
fun(char*s)
{char*p=s;
while(*p)p++;
return(p-s);}
main()
{char*a=”abcd\0efg”;
inti;
i=fun(a);
printf(‘%d”,i);
}
答案:
4
21.若有定义:
inta[2][3]={2,4,6,8,10,12};则*(a[1]+2)的值是________,*(&a[0][0]+5)的值是________。
答案:
12|12
22.若有以下定义和语句:
inta[4]={0,1,2,3},*p;p=&a[1];则++(*p)的值是________。
答案:
2
23.
main()
{chara;
a=’H’-‘A’+’0’;
printf(“%c”,a);
}
执行后的输出结果是_____________
答案:
7
24.
下面的程序是实现1+2+3+……+100,请补充完整:
main()
{inti,sum=0;
i=1;
do
{
_____________;
_____________;
}
while(i<=100);
printf(“%d”,sum);
}
答案:
sum=sum+i|i++
25.
若已定义:
structnum
{inta;
intb;
floatf;
}n={1,3,5.0};
structnum*pn=&n;
则表达式pn->b/n.a*++pn->b的值是__________,表达式(*pn).a+pn->f的值是__________。
}
答案:
12|6.0
26.
下列程序的运行结果是________。
#include
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
}
答案:
efgh
27.
有以下程序
voidf(inty,int*x)
{y=y+*x;*x=*x+y;\}
main()
{intx=2,y=4;
f(y,&x);
printf("%d%d\n",x,y);
}执行后输出的结果是_________。
答案:
84
28.执行下述程序的输出结果是___
#include
main()
{
staticchara[]="language";
char*ptr==a;
while(*ptr)
{
printf("%c",*ptr-32);
prt++;
}
printf("\n";
}
答案:
LANGUAGE
29.以下函数func的功能是:
累加n个数组元素的值,将和值放入x所指的存储单元中。
请填空。
func(intb[],intn,int*x)
{
intk,sun=0;
for(k=0;ksun+=b[k];
___
}
答案:
*x=sum
30.已知有定义“intx,a[]={15,17,19},*pa=a;”,在执行“x=*pa++;”后,*pa的值是___
答案:
17
31.下述函数定义的功能是:
把两个整数指针所指的存储单元中的内容进行交换。
请填空。
voidexchange(___)
{
intt;
t=*y;
*y=*x;
*x=t;
}
答案:
int*x,int*y(或者int*y,int*x)
32.下面的函数定义是一个求阶乘的递归调用函数。
假定n0。
请填空。
longfac(intn)
{
longf;
if(n==0)
f=1;
else
f=___;
return(f);
}
答案:
n*fac(n-1)(或fac(n-1)*n)
33.以下程序的执行结果是___。
#include
main()
{
intx=5,y=2;
printf("1:
%d,",!
(y==x/2));
printf("2:
%d,",y!
=x%3);
printf("3:
%d,",x>0&&y<0);
printf("4:
%d\n",x!
=y||x>=y);
}
答案:
1:
0,2:
0,3:
0,4:
1
34.
阅读程序
#include
#defineMAX20
intfib(intn)
{
intres;
if(n==0)
res=0;
elseif(n==1)
res=1;
else
res=fib(n-1)+fib(n-2);
return(res);
}
main()
{
intm,n;
printf("Inputn(0<=n<=%d):
",MAX);
scanf("%d",&n);
for(m=0;m<=n;m++)
{
printf("%6d",fib(m));
if((m+1)%5==0)
printf("\n");
}
printf("\n");
}
当运行程序时,若有下述交互信息(带下划线的为输入信息)
Inputn(0<=n<=20):
请写出接下去的输出结果______。
答案:
01123
58132134
5589144233377
610
35.执行下述程序的输出结果是___
#include
charb[]="ABCDEF";
main()
{
char*bp;
for(bp=b;*bp;bp+=2)
printf("%s",bp);
printf("\n");
}
}
答案:
ABCDEFCDEFEF
36.执行下述程序的输出结果时_______
#includemain()
{char*p="abcdefghijk";
while(*p++!
='e');
printf("%c\n",*p0;}
答案:
f
37.
以下程序运行后,输出结果是___________________________
fut(int**s,intp[2][3])
{**s=p[1][1];}
main()
{inta[2][3]={1,3,5,7,9,11},*p;
p=(int*)malloc(sizeof(int));
fut(&p,a);
printf(“%d\n”,*p);
}
答案:
9
38.以下程序运行后,输出结果是___________________________
main()
{charch[2][5]={“693”,“825”},*p[2];
inti,j,s=0;
for(i=0;i<2;i)p[i]=ch[i];
for(i=0;i<2;i)
for(j=0;p[i][j]>='0'&&p[i][j]<='9';j=2)
s=10*sp[i][j]-'0';
printf(“%d\n”,s);
}
答案:
6385
39.以下程序运行后,输出结果是___________________________
intd=1l
fun(intp)
{intd=5;
d=p;
printf(“%d”,d);
}
main()
{itna=3;
fun(a);
d=a;
printf(“%d\n”,d);
}
答案:
84
40.以下程序运行后,输出结果是___________________________
main()
{
staticchara[]=“ABCDEFGH”,b[]=“abCDefFh”;
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))printf(“%c”,*(p1+k));
printf(“\n”);
}
答案:
CDF
41.以下程序运行后,输出结果是___________________________
#include
#definept5.5
#difines(x)pt*x*x
main()
{inta=1,b=2;
printf(“%4.lf/n”,s(ab));
}
答案:
9.5
42.
以下程序运行后,输出结果是___________________________
func(intm,inti)
{
staticinta=3;
i+=m;
m=i+a;
a=12;
return(m);
}
main()
{
intk=4,m=1,p;
p=func(k,m);printf(“%d,”,p);
p=func(k,m);printf(“%d\n”,p);
}
答案:
8,17
43.以下程序对输入的两个整数,按从大到小顺序输出。
请在[]填入正确内容。
main()
{intx,y,z;
scanf("%d,%d,&x,&y);
if(___)
{z=x;___}
printf("%d,%d",x,y);
}
答案:
x44.以下程序从读入的整数数据中,统计大于零的整数个数和小于零的整数个数。
用输入零来结束输入,程序中用i统计大于零的个数,用变量j统计小于零的整数。
请填空。
main()
{intn,i,j;
printf(“EnterINTnumbers,with0toend\n”);
i=j=0;
scanf(“%d”,&n);
while___
{if(n>0)i++;
if(n<0)j++;
___;
}
printf(“i=%4dj=%4d\n”,i,j);
}
答案:
(n!
=0)|scanf("%d",&n)
45.如果一个数的各位数的立方和等于它本身,则这样的数称为水仙花数求100~999中所有的水仙花数。
main()
{
inti,a,b,c;
for(i=100;i<=999;i++)
{a=i/100;
b=___;
c=i%10;
if(___)
printf("%5d",i);
}
}
答案:
i%100/10|a*a*a+b*b*b+c*c*c==i
46.输出下列图形,则程序段中应该填入。
123456789
23456789inti,j;
3456789for(i=1;i<=___;i++)
456789\for(j=___;j<=9;j++)printf("%2d",j);
56789printf("\n");\
6789
789
89
9
}
答案:
9|i
47.以下程序用“辗转相除法”来求出两个正整数的最大公约数。
请填空。
若两个数分别放在m和n中,求最大公约数的算法如下:
(1)将两数中最大的那个放在m中,小的放在n中。
(2)求出m被n除后的余数r。
(3)若余数为0则执行步骤(7);否则执行步骤(4)。
(4)把除数作为新的被除数;把余数作为新的除数。
(5)求出新的余数r。
(6)重复步骤(3)到(5)。
(7)输出n,n即为最大公约数。
main()
{intr,m,n,t;
printf("Enterm,n:
");
scanf("%d%d",&m,&n);
printf("m=%dn=%d\n",m,n);
if(mt=m;m=n;n=t;
r=___;
while(___)
{m=n;n=r;r=___;}
printf(“H.C.F=%d\n,n);
}
答案:
m%n|r!
=0|m%n
48.用π/4≈1-1/3+1/5-1/7+……公式求π的近似值,直到最后一项的绝对值小于10-6为止。
#include
main()
{ints;
floatn,t,pi;
t=1,pi=0,n=1.0,s=1;
while(___)
{pi=pi+t;
___;
___;
t=s/n;
}
pi=pi*4;
printf(“pi=%10.6f”\n”,pi);
}
答案:
(fabs(t))>1e-6|n=n+2|s=-s
49.面程序的功能是将小写字母变成对应大写字母后的第二个字母如a变成C。
其中y变成A,z变成B。
请填入正确内容。
#include<stdio.h>
main()
{charc;
while((c=getchar())!
='\0')
{if(c>='a'&&c<='z')
{___;
if(c>'Z'&&c<='Z'+2)
___;
}
printf("%c",c);
}
}
答案:
c=c-30|c=c-26
50.下面程序以每行4个数据的形式输出a数组,请填空。
#defineN20
main()
{inta[N],i;
for(i=0;ifor(i=0;i{if(___)___;
printf("%3d",a[i]);
}
printf("%\n");
}
答案:
&a[i]|i%4==0|printf("\n");