程序阅读及填空答案.docx
- 文档编号:28822287
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:16
- 大小:19.12KB
程序阅读及填空答案.docx
《程序阅读及填空答案.docx》由会员分享,可在线阅读,更多相关《程序阅读及填空答案.docx(16页珍藏版)》请在冰豆网上搜索。
程序阅读及填空答案
一.程序阅读题
1.若运行时输入100↙,写出以下程序的运行结果。
main()
{inta;
?
?
?
?
scanf(“%d”,&a);
?
?
?
?
printf(“%s”,(a%2!
=0)?
”No”:
”Yes”);
}
答案:
Yes
2.写出以下程序的运行结果。
main()
{inta=2,b=7,c=5;
?
?
?
?
switch(a>0){
?
?
?
?
?
?
?
case1:
switch(b<0){
?
?
?
?
?
?
?
?
?
?
?
?
?
?
case1:
printf(“@”);break;
?
?
?
?
?
?
?
?
?
?
?
?
?
?
case2:
printf(“!
”);break;
?
?
?
?
?
?
?
?
?
?
?
?
?
}
?
?
?
?
?
?
?
case0:
switch(c==5){
?
?
?
?
?
?
?
?
?
?
?
?
?
?
case1:
pritnf(“*”);break;
?
?
?
?
?
?
?
?
?
?
?
?
?
?
case2:
printf(“#”);break;
?
?
?
?
?
?
?
?
?
?
?
?
?
?
default:
printf(“#”);break;
?
?
?
?
?
?
?
?
?
?
?
?
?
}
?
?
?
?
?
?
?
default:
printf(“&”);
?
?
?
?
}
?
?
?
?
printf(“\n”);
}
答案:
*&
3.写出下面程序运行的结果。
main()
{inti,b,k=0;
?
?
?
for(i=1;i<=5;i++){
?
?
?
?
?
?
?
b=i%2;
?
?
?
?
?
?
?
while(b--==0)k++;
?
?
?
}
?
?
?
printf(“%d,%d”,k,b);
}
答案:
20
4.写出下面程序运行的结果。
main()
{intk=1,n=263;
?
?
?
do{k*=n%10;n/=10;}while(n);
?
?
?
printf(“%d\n”,k);
}
答案:
36
5.写出下面程序运行的结果。
main()
{inta=10,y=0;
?
?
?
do{
?
?
?
?
?
?
a+=2;y+=a;
?
?
?
?
?
?
if(y>50)break;
?
?
?
}while(a=14);
?
?
?
printf(“a=%dy=%d\n”,a,y);
}
答案:
a=16y=60
数组部分:
1.写出下面程序的运行结果。
?
?
?
?
?
?
main()
?
?
?
?
?
?
{inta[6][6],i,j;
?
?
?
?
?
?
?
?
?
for(i=1;i<6;i++)
?
?
?
?
?
?
?
?
?
?
?
?
for(j=1;j<6;j++)
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
a[i][j]=(i/j)*(j/i);
?
?
?
?
?
?
?
?
?
for(i=1;i<6;i++){
?
?
?
?
?
?
?
?
?
?
?
?
for(j=1;j<6;j++)
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
printf(“%2d”,a[i][j]);
?
?
?
?
?
?
?
?
?
?
?
?
printf(“\n”);
?
?
?
?
?
?
?
?
?
}
}
2.写出下面程序的运行结果。
?
?
?
?
?
?
main()
?
?
?
?
?
?
{inti=0;
?
?
?
?
?
?
?
?
?
chara[]=”abm”,b[]=”aqid”,c[10];
?
?
?
?
?
?
?
?
?
while(a[i]!
=’\0’&&b[i]!
=’\0’){
?
?
?
?
?
?
?
?
?
?
?
?
if(a[i]>=b[i])c[i]=a[i]-32;
?
?
?
?
?
?
?
?
?
?
?
?
elsec[i]=b[i]-32;
?
?
?
?
?
?
?
?
?
?
?
?
i++;
?
?
?
?
?
?
?
?
?
}
?
?
?
?
?
?
?
?
?
c[i]=’\0’;
?
?
?
?
?
?
?
?
?
puts(c);
}
答案:
AQM
3.当运行下面程序时,从键盘上输入AabD↙,则写出下面程序的运行结果。
?
?
?
?
?
?
main()
?
?
?
?
?
?
{chars[80];
?
?
?
?
?
?
?
?
?
inti=0;
?
?
?
?
?
?
?
?
?
gets(s);
?
?
?
?
?
?
?
?
?
while(s[i]!
=’\0’){
?
?
?
?
?
?
?
?
?
?
?
?
if(s[i]<=’z’&&s[i]>=’a’)
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
s[i]=’z’+’a’-s[i];
?
?
?
?
?
?
?
?
?
?
?
?
i++;
?
?
?
?
?
?
?
?
?
}
?
?
?
?
?
?
?
?
?
puts(s);
}
答案:
AzyD
二.程序判断题
1.下面程序将输入的大写字母改写成小写字母输出,其他字符不变;请判断下面程序的正误,如果错误请改正过来。
main()
{charc;
?
?
?
?
c=getchar();
?
?
?
?
c=(c>=’A’||c<=’Z’)?
c-32:
c+32;
?
?
?
?
printf(“%c”,c);
}
答案:
c=(c>=’A’||c<=’Z’)?
c-32:
c+32;改为:
c=(c>='A'&&c<='Z')?
c+32:
c;
?
2.下面程序输入两个运算数x,y和一个运算符号op,然后输出该运算结果的值,例如输入3+5↙得到结果8;请判断下面程序的正误,如果错误请改正过来。
?
?
?
?
main()
?
?
?
?
{
?
?
?
?
?
?
?
?
?
floatx,y,r;
?
?
?
?
?
?
?
?
?
charop;
?
?
?
?
?
?
?
?
?
scanf(“%f%c%f”,&x,&op,&y);
?
?
?
?
?
?
?
?
?
switch(op){
?
?
?
?
?
?
?
?
?
?
?
?
case‘+’:
r=x+y;
?
?
?
?
?
?
?
?
?
?
?
?
case‘-’:
r=x-y;
?
?
?
?
?
?
?
?
?
?
?
?
case‘*’:
r=x*y;
?
?
?
?
?
?
?
?
?
?
?
?
case‘/’:
r=x/y;
?
?
?
?
?
?
?
?
}
?
?
?
?
?
?
?
?
printf(“%f”,r);
}
答案:
每个Case分之后面加Break;
三.程序填空题
1、以下程序输出x,y,z三个数中的最小值,请填
(2)空使程序完整。
main()
{intx=4,y=5,z=8;
?
?
?
intu,v;
?
?
?
u=x 【1】; ? ? ? v=u 【2】; ? ? ? printf(“%d”,v); } 答案: 【1】x: y【2】u: z 2、下述程序用“碾转相除法”计算两个整数m和n的最大公约数。 该方法的基本思想是计算m和n相除的余数,如果余数为0则结束,此时的被除数就是最大公约数。 否则,将除数作为新的被除数,余数作为新的除数,继续计算m和n相除的余数,判断是否为0,等等,请填(3)空使程序完整。 main() {intm,n,w; ? ? ? scanf(“%d,%d”,&m,&n); ? ? ? while(n){ ? ? ? ? ? ? w=【1】; ? ? ? ? ? ? m=【2】; ? ? ? ? ? ? ? n=【3】; ? ? ? } ? ? ? printf(“%d”,m); } 答案: 【1】w=m%n;【2】m=n;【3】n=w; 3、下面程序的功能是输出1至100之间每位数的乘积大于每位数的和的数,请填(3)空使程序完整。 main() {intn,k=1,s=0,m; ? ? for(n=1;n<=100;n++){ ? ? ? ? ? ? k=1;s=0; ? ? ? ? ? ? 【1】; ? ? ? ? ? ? while(【2】){ ? ? ? ? ? ? ? ? ? ? k*=m%10; ? ? ? ? ? ? ? ? ? ? s+=m%10; ? ? ? ? ? ? ? ? ? ? 【3】; ? ? ? ? ? ? } ? ? ? ? ? ? if(k>s)printf(“%dd”,n); ? ? } } 答案: 【1】m=n;【2】m! =0【3】m=m/10; 4、下面程序按公式(课本169页习题6.5)求和并输出结果,请填(3)空使程序完整。 main() { ? ? ? ? 【1】; ? ? ? ? ? intk; ? ? ? ? ? for(k=1;k<=100;k++) ? ? ? ? ? ? ? ? s+=k; ? ? ? ? ? for(k=1;k<=50;k++) ? ? ? ? ? ? ? ? s+=k*k; ? ? ? ? ? for(k=1;k<=10;k++) ? ? ? ? ? ? ? ? s+=【2】; ? ? ? ? ? printf(“sum=【3】”,s); } 答案: 【1】floats=0;【2】1/k【3】%f 数组部分: 一、程序判断: 1.下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。 ? ? ? ? ? ? main() ? ? ? ? ? ? {inta[3]={3*0}; ? ? ? ? ? ? ? ? ? inti; ? ? ? ? ? ? ? ? ? for(i=0;i<4;i++)scanf(“%d”,&a[i]); ? ? ? ? ? ? ? ? ? for(i=0;i<4;i++)printf(“%d”,a[i]); } 答案: ? for(i=0;i<3;i++)(只有3个数组元素,下标0~2) 2.下面程序为数组输入数据并输出结果;判断下面程序的正误,如果错误请改正过来。 ? ? ? ? ? ? main() ? ? ? ? ? ? {inta[3]={1,2,3},i; ? ? ? ? ? ? ? ? ? scanf(“%d%d%d”,&a); ? ? ? ? ? ? ? ? ? for(i=0;i<3;i++)printf(“%d”,a[i]); } 答案: scanf("%d%d%d",&a[0],&a[1],&a[2]); 3.下面程序的功能是: 先将在字符串s中的字符按逆序存放到t串中,然后把s中的字符按正序连接到t串的后面。 例如,当s中的字符串为: “ABCDE”时则t中的字符串应为: “EDCBAABCDE”;判断下面程序的正误,如果错误请改正过来。 ? ? ? ? ? ? main() ? ? ? ? ? ? {chars[80],t[200];inti,sl; ? ? ? ? ? ? ? ? ? gets(s);sl=strlen(s); ? ? ? ? ? ? ? ? ? for(i=0;i t[i]=s[sl-i-1]; ? ? ? ? ? ? ? ? ? for(i=0;i t[s1+i]='\0';加上语句: t[s1+i]='\0'; ? ? ? ? ? ? ? ? ? puts(t); } 答案: 见右边修改语句 4.下面程序的功能是: 将n各无序整数从小到大排序;判断下面程序的正误,如果错误请改正过来。 ? ? ? ? ? ? main() ? ? ? ? ? ? {inta[100],i,j,p,t,n=20; ? ? ? ? ? ? ? ? ? for(j=0;j ; ? ? ? ? ? ? ? ? ? for(j=0;j ? ? ? ? ? ? ? ? ? {p=j; ? ? ? ? ? ? ? ? ? ? ? ? for(i=j+1;i n ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(a[p]>a[i])t=i;t改为: p ? ? ? ? ? ? ? ? ? ? ? ? if(p! =j) ? ? ? ? ? ? ? ? ? ? ? ? {t=a[j];a[j]=a[p];a[p]=t;} ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? for(j=0;j } 答案: 见右边修改语句 5.下面程序的功能是: 统计子字符串substr在字符串str中出现的次数。 例如,若字符串为aaaslkaaas,子字符串为as,则应输出2;判断下面程序的正误,如果错误请改正过来。 ? ? ? ? ? ? main() ? ? ? ? ? ? {charsubstr[80],str[80]; ? ? ? ? ? ? ? ? ? inti,j,k,num=0; ? ? ? ? ? ? ? ? ? gets(substr);gets(str); ? ? ? ? ? ? ? ? ? for(i=0,str[i],i++) ? ? ? ? ? ? ? ? ? ? ? ? ? for(j=i,k=0;substr[k]==str[j];k++,j++) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(substr[k+1]! =’\0’){ ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? num++; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? printf(“num=%d”,num); } 答案: 程序修改如右框所示。 二、程序填空题 1.下面程序可求出矩阵a的主对角线上的元素之和,请填 (2)空使程序完整。 ? ? ? ? main() ? ? ? ? {inta[3][3]={1,3,5,7,9,11,13,15,17},sum=0,i,j; ? ? ? ? ? ? ? for(i=0;i<3;i++) ? ? ? ? ? ? ? ? ? ? ? for(j=0;j<3;j++) ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(【1】) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? sum=sum+【2】; ? ? ? ? ? ? ? printf(“sum=%d”,sum); } 答案: 【1】i==j【2】a[i][j] 2.下面程序将十进制整数base转换成n进制,请填(3)空使程序完整。 main() {inti,base,n,j,num[20]; ? ? ? scanf(“%d”,&n); ? ? ? scanf(“%d”,base); ? ? ? do{ ? ? ? ? ? ? i++; ? ? ? ? ? ? num[i]=【1】; ? ? ? ? ? ? n=【2】; ? ? ? }while(n! =0); ? ? ? for(【3】); ? ? ? ? ? ? printf(“%d”,num[j]); } 答案: 此程序有点小错误,红色文字为改正错误,蓝色文字为填空答案. 3.下面程序的功能是输入10个数,找出最大值和最小值所在的位置,并把两者对调,然后输出调整后的10个数,请填(3)空使程序完整。 main() {inta[10],max,min,i,j,k; ? ? for(i=0;i<10;i++) ? ? ? ? ? scanf(“%d”,&a[i]); ? ? max=min=a[0]; ? ? for(i=0;i<10;i++){ ? ? ? ? ? if(a[i] ? ? ? ? ? if(a[i]>max){max=a[i];【2】;} ? ? }/*循环完后,最小的数组元素下标放在变量j中,最大的放在变量k中*/ ? ? 【3】;/*借助中间变量max,将最大最小两数组元素交换*/ ? ? for(i=0;i<10;i++) ? ? ? ? ? printf(“%d”,a[i]); } 答案: 【1】j=i【2】k=i【3】max=a[j];a[j]=a[k];a[k]=max; 4.下面程序用“插入法”对数组a进行由小到大的排序,请填(3)空使程序完整。 经典算法提示: 简单插入排序算法的基本思想使将数组处理n-1次,第k次处理是将第k个元素插入到目前的位置。 第k次的元素是这样插入的: 在第k次处理时,前面的元素a[0],a[1],…,a[k-1]必定已排成了升序,将a[k]与a[k-1],a[k-2],…a[0]逐个比较(由后向前),若有a[j] main() {inta[10]={191,3,6,4,11,7,25,13,89,10}; ? ? ? inti,j,k; ? ? ? for(i=1;i<10;i++){ ? ? ? ? ? ? k=a[i]; ? ? ? ? ? ? j=【1】; ? ? ? ? ? ? while(j>=0&&k>a[j]){/*k>a[j]改为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 阅读 填空 答案