C程序分析填空训练题1.docx
《C程序分析填空训练题1.docx》由会员分享,可在线阅读,更多相关《C程序分析填空训练题1.docx(20页珍藏版)》请在冰点文库上搜索。
![C程序分析填空训练题1.docx](https://file1.bingdoc.com/fileroot1/2023-5/25/47110887-4910-4404-9e28-04ae688c7998/47110887-4910-4404-9e28-04ae688c79981.gif)
C程序分析填空训练题1
程序分析填空训练题
(1)若有语句inti=-19,j=i%4;printf("%d\n",j);
则输出的结果是【1】。
(2)若有程序
main()
{inti,j;scanf("i=%d,j=%d",&i,&j);
printf("i=%d,j=%d\n",i,j);
}
要求给i赋10,给j赋20,则应该从键盘输入【2】。
(3)若有以下程序main()
{intp,a=5;if(p=a!
=0)printf("%d\n",p);elseprintf("%d\n",p+2);
}
执行后输出结果是【3】。
(4)若有以下程序
main()
{inta=4,b=3,c=5,t=0;if(a
}
执行后输出结果为【4】。
(5)若有以下程序main()
{int
a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}};inti,j,s=0;
for(i=0;i<4;i++){for(j=0;j<4;j++)
{if(a[i][j]<0)continue;if(a[i][j]==0)break;s+=a[i][j];
}
}
printf("%d\n",s);
}
执行后输出结果是【5】。
(6)若有以下程序
main()
{chara;a='H'-'A'+'0';printf("%c\n",a);
}
执行后输出结果是【6】。
(7)若有以下程序intf(intx,inty)
{return(y-x)*x;}main()
{inta=3,b=4,c=5,d;d=f(f(3,4),f(3,5));printf("%d\n",d);
}
执行后输出结果是【7】。
(8)函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式
如下
1
11
121
1331
14641.
其构成规律是:
(1)第0列元素和主对角线元素均为1
(2)其余元素为其左上方和正上方元素之和
(3)数据的个数每行递增1请将程序补充完整。
#defineN6
voidyanghui(intx[N][N]){inti,j;
x[0][0]=1;
for(i=1;i{x[i][0]=【8】=1;for(j=1;j
x[i][j]=【9】;
}
}
(9)以下函数的功能是删除字符串s中的所有数字字符。
请填空。
vioddele(char*s)
{intn=0,i;for(i=0;s[i];i++)if(【10】)s[n++]=s[i];s[n]=【11】;
}
(10)设函数findbig已定义为求3个数中的最大值。
以下程序将利用函数指针调用findbig函数。
请填空。
main()
{intfindbig(int,int,int);int(*f)(),x,y,z,big;
f=【12】;scanf("%d%d%d",&x,&y,&z);big=(*f)(x,y,z);printf("big=%d\n",big);
}
(11)以下程序的输出结果是【13】。
#defineMCRA(m)2*m
#defineMCRB(n,m)2*MCRA(n)+mmain()
{inti=2,j=3;printf("%d\n",MCRB(j,MCRA(i)));
}
(12)设有以下定义
structss
{intinfo;structss*link;}x,y,z;
且已建立如下所示链表结构:
x→y→z
请写出删除结点y的赋值语句【14】。
(13)已有文本文件test.txt,其中的内容为:
Hello,everyone!
。
以下程序中,文件test.txt已正确为“读”而打开,由此文件指针fr指向文件,则程序的输出结果是【15】。
#include
main()
{FILE*fr;charstr[40];
......
fgets(str,5,fr);
printf("%s\n",str);
fclose(fr);
}
(14)以下程序运行后的输出结果是【16】。
main()
{intp=30;
printf("%d\n",(p/3>0?
p/10:
p%3));
}
(15)以下程序运行后的输出结果是【17】。
main()
{charm;
m='B'+32;printf("%c\n",m);
}
(16)以下程序运行后的输出结果是【18】。
main()
{inta=1,b=3,c=5;
if(c=a+b)printf("yes\n");
elseprintf("no\n");
}
(17)以下程序运行后的输出结果是【19】。
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);
}
(18)执行以下程序后,输出'#'号的个数是【20】。
#includemain()
{inti,j;
for(i=1;i<5;i++)
for(j=2;j<=i;j++)putchar('#');
}
(19)以下程序的功能是调用函数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=【21】;
}
returnm;
}
main()
{printf("m=%d\n",【22】);}
(20)以下程序运行后的输出结果是【23】main()
{inti,n[]={0,0,0,0,0};for(i=1;i<=4;i++)
{n[i]=n[i-1]*2+1;printf("%d",n[i]);
}
}
(21)以下程序运行后的输出结果是【24】main()
{inti,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)for(j=i+1;j<3;j++)a[j][i]=0;for(i=0;i<3;i++)
{for(j=0;j<3;j++)printf("%d",a[i][j]);printf("\n");
}
}
(22)以下程序运行后的输出结果是【25】
inta=5;
fun(intb)
{staticinta=10;a+=b++;printf("%d",a);
}
main()
{intc=20;fun(c);a+=c++;printf("%d\n",a);
}
(23)请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。
【26】(double,double);
main()
{doublex,y;scanf("%lf%lf",&x,&y);printf("%lf\n",max(x,y));
}
doublemax(doublea,doubleb){return(a>b?
a:
b);}
(24)以下程序运行后输入:
3,abcde<回车>,则输出结果是【27】#include
move(char*str,intn){chartemp;inti;temp=str[n-1];for(i=n-1;i>0;i--)str[i]=str[i-1];str[0]=temp;
}
main()
{chars[50];intn,i,z;scanf("%d,%s",&n,s);z=strlen(s);
for(i=1;i<=n;i++)move(s,z);printf("%s\n",s);
}
(25)以下程序运行后的输出结果是【28】
fun(intx)
{if(x/2>0)fun(x/2);printf("%d",x);
}
main()
{fun(6);}
(26)已有定义如下:
structnode
{intdata;
structnode*next;
}*p;
以下语句调用malloc
函数,使指针
p指向一个具有
structnode
类型的动态存
储空间。
请填空。
p=(structnode*)malloc(
【29】
);
(27)以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。
例如,输入字符串:
abc123edf456gh,执行程序后输出:
123456。
请填空。
#include#includemain()
{chars[80],d[80];inti,j;gets(s);for(i=j=0;s[i]!
='\0';i++)
if(【30】){d[j]=s[i];j++;}d[j]='\0';
puts(d);
}
(28)以下程序运行后的输出结果是【31】。
main()
{intx=10,y=20,t=0;
if(x==y)t=x;x=y;y=t;
printf("%d,%d\n",x,y);
}
(29)以下程序运行后的输出结果是【32】。
main()
{intx=15;
while(x>10&&x<50)
{x++;
if(x/3){x++;break;}
elsecontinue;
}
printf("%d\n",x);
}
(30)有以下程序:
#includemain()
{charc;
while((c=getchar())!
='?
')putchar(--c);
}
程序运行时,如果从键盘输入:
Y?
N?
<回车>,则输出结果为【33】。
(31)以下程序运行后的输出结果是【34】。
voidfun(intx,inty)
{x=x+y;y=x-y;x=x-y;printf("%d,%d,",x,y);}main()
{intx=2,y=3;
fun(x,y);
printf("%d,%d\n",x,y);
}
(32)以下函数的功能是计算s=1+1/2!
+1/3!
+,,+1/n!
,请填空。
doublefun(intn)
{doubles=0.0,fac=1.0;inti;
for(i=1;i<=n;i++)
{fac=fac【35】;
s=s+fac;
}
returns;
}
(33)下面程序的运行结果是:
【36】。
#defineN10#defines(x)x*x#definef(x)(x*x)main()
{inti1,i2;
i1=1000/s(N);i2=1000/f(N);
printf("%d%d\n",i1,i2);
}
(34)下面程序的运行结果是:
【37】。
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)下面程序的运行结果是:
【38】。
typedefunionstudent
{charname[10];longsno;charsex;floatscore[4];}STU;
main()
{STUa[5];
printf("%d\n",sizeof(a));
}
(36)若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:
fp=fopen(【39】);。
(37)设有定义:
intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。
scanf("%d",【40】);
printf("%d\n",【41】);
(38)fun函数的功能是:
首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。
请填空。
#include#defineN100intfun(int(*a)[N]){introw,col,max,min;for(row=0;row
if(【42】)max=a[row][col];
if(row==0)min=max;
elseif(【43】)min=max;
}
returnmin;
}
(39)函数sstrcmp()的功能是对两个字符串进行比较。
当s所指字符串和t所
指字符相等时,返回值为0;当s所指字符串大于t所指字符串时,返回值大于
0;当s所指字符串小于t所指字符串时,返回值小于0(功能等同于库函数
strcmp())。
请填空。
#include
intsstrcmp(char*s,char*t)
{while(*s&&*t&&*s==【44】)
{s++;t++;}
return【45】;
}
(40)若从键盘输入58,则以下程序输出的结果是【46】。
main()
{inta;scanf("%d",&a);if(a>50)printf("%d",a);if(a>40)printf("%d",a);
if(a>30)printf("%d",a);
}
(41)以下程序的输出结果是【47】。
main()
{inta=177;
printf("%o\n",a);
}
(42)以下程序的输出结果是【48】。
main()
{inta=0a+=(a=8);printf("%d\n",a);
}
(43)以下程序输出的结果是【49】。
main()
{inta=5,b=4,c=3,d;d=(a>b>c);
printf("%d\n",d);
}
(44)以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针.请将定义补充完整。
structnode
{intinfo;
【50】link;
}
(45)以下程序的输出结果是【51】。
main()
{ints,i;for(s=0,i=1;i<3;i++,s+=i);
printf("%d\n",s);
}
(46)以下程序的输出结果是【52】。
main()
{char*p="abcdefgh",*r;long*q;
q=(long*)p;
q++;
r=(char*)q;
printf("%s\n",r);
}
(47)以下程序的输出结果是【53】。
main()
{chars[]="abcdef";
s[3]='\0';
printf("%s\n",s);
}
(48)以下程序的输出结果是【54】。
main()
{intx=0;sub(&x,8,1);printf("%d\n",x);
}
sub(int*a,intn,intk)
{if(k<=n)sub(a,n/2,2*k);*a+=k;
}
(49)设有如下宏定义
#defineMYSWAP(z,x,y){z=x;x=y;y=z;}
以下程序段通过宏调用实现变量a、b内容交换,请填空。
floata=5,b=16,c;
MYSWAP(【55】,a,b);
(50)以下程序用来统计文件中字符个数。
请填空。
#include"stdio.h"main()
{FILE*fp;longnum=0L;if((fp=fopen("fname.dat","r"))==NULL){printf("Openerror\n");exit(0);}while(【56】)
{fgetc(fp);num++;}printf("num=%1d\n",num-1);fclose(fp);
}
(51)以下程序中,select函数的功能是:
在N行M列的二维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。
请填空。
#defineN3#defineM3select(inta[N][M],int*n)
{inti,j,row=1,colum=1;for(i=0;iif(a[i][j]>a[row][colum]){row=i;colum=j;}
*n=【57】;
return【58】;
}
main()
{inta[N][M]={9,11,23,6,1,15,9,17,20},max,n;
max=select(a,&n);
printf("max=%d,line=%d\n",max,n);
}
(52)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。
请填空。
intmystrlen(char*str)
{inti;
for(i=0;【59】!
='\0';i++);
return(【60】);
}
答案:
(1)-3
(2)i=10,j=20
(3)1
(4)503
(5)58
(6)7
(7)9
(8)x[i][i]和x[i-1][j-1]+x[i-1][j]
(9)!
(s[i]>='0'&&s[i]<='9')和'\0'
(10)findbig
(11)16
(12)x.link=y.link;
(13)Hell(14)3
(15)b
(16)yes
(17)132
(18)6
(19)【21】-f或f*-1或-1*f或f*(-1)或(-1)*f
【22】fun(10)
(19)13715
(20)123
056
009
(22)3025
(23)doublemax(或externdoublemax)
(24)cdeab
(25)136
(26)sizeof(structnode)或4
(27)s[i]>='0'&&s[i]<='9'或isdigit(s[i])或s[i]>=48&&s[i]<=57
s[i]<='9'&&s[i]>='0'或'9'>=s[i]&&'0'<=s[i]或'0'<=s[i]
'9'>=s[i]或s[i]<=57&&s[i]>=48或57>=s[i]&&48<=s[i]
或
&&
或48<=s[i]&&57>=s[i](28)20,0
(29)17
(30)X
(31)3,2,2,3
(32)/i或者*1.0/i或者*1/i或者*(1.0/i)或者/(double)i
(33)100010
(34)35
(35)80
(36)"d1.dat","rb"或"d1.dat","r+b"或"d1.dat","rb+"
(37)
【40】k
【41】*k
(38)
【42】max或者max<=a[row][col]
或者a[row][col]>max
或者a[row][col]>=max
【43】maxmax或者min>=max
(39)
【44】*t或者t[0]
【45】*s-*t
或者*s-t[0]
或者s[0]-*t
或者s[0]-t[0]
(40)585858
(41)261
(42)16
(43)0
(44)structnode*
(45)5
(46)efgh
(47)abc
(48)7
(49)c
(50)!
feof(fp)
(51)【57】row
【58】a[row][colum]
(52)【59】*(str+i)或str[i]
【60】i