内容正文:
第五章循环结构(二)
第五章
循环结构(二)
一、理论测试题(每小题12分,其中输出格式占2分,共60分)
1.写出下列程序的运行结果。
#include "stdio.h"
int main()
int i,j,k,s1,s2,s3;
s1=s2=0;s3=1:
for(j=1j<=5;j++)
{s1++;
for(k=1:k<=j:k++,s2+=1)》
s2+=1:
for(i=k;>=1;i--)
s3=s3+k;
}
printf("d,%d.%d",s1,s2.s3):
}
2.写出下列程序的运行结果。
#include "stdio.h"
int main()
int suml=0,sum2=0,i,j,k;
for(i=0:i<=3:i++)
suml=i+sizeof(A');
for(j=1;j<=i:j++)
sum2=sum2+j;
for(k=2;k<=j;k++)
suml=suml-k;
}
printf("suml=%d,sum2=%d",suml,sum2);
3.写出下列程序的运行结果。
#include "stdio.h"
int main()
int i,j,t=0,k=0;
do
{for(i=1,j=10:i<4:i++,j--)
t=i+j:t++;
if(t>=10)k++:
·17
单招零距离·计算机专业综合测试卷·下册
}while(k++<=10);
printf("d,%d,%d".j,t,k);
4.写出下列程序的运行结果。
#include <stdio.h
int main()
int i,j:
for(i=0:i<=2:i++)
{for(G=0;j<=3;j+=2)
switch(i+j)
case 0:printf("I");break:
case 1:printf("BeiJing
");break;
case 2:printf("love");break:
case 3:
case 4:printf("Olympic");
case 5:printf("Games!");break;
}
}
5.编程从键盘上输入一个长整数,从低位到高位数起,把奇数位的数形成新数1,偶数位
的数形成新数2,再求出这两个数的和。
如输入1234,则输出结果为:num=123424+13=37
完成所缺程序。
#include"stdio.h"
int main()
long numl,num,suml,newnuml,newnum2;
printf("请从键盘上输入一个长整数:");
scanf("%ld",&.num);
printf("num=%ld\t",num);
sum1=0;
numl=
①
while(num1)
(suml=suml 10+num1%10;
numl/=
②
;
newnuml=
③
while(sum1)
(newnuml=newnuml 10+suml%10;
sum1/=10:
numl=num/10;
·18·
第五章循环结构(二)
while(num1)
(suml=suml 10+num1%10;
num1,=100:
}
newnum2-0;
while(
④)
(newnum2=newnum2 10+sum1%10;
sum1./=10:
printf("%d+%d=%d",newnuml,newnum2,newnuml+newnum2);
}
二、技能测试题(第1题20分,第2、3题各30分,共80分)
1.程序填空题:已知两个正整数a,b的最大公约数是x,最小公倍数是y,求这两个正整数
a,b。程序输入954,则结果如下:
x=9,y=54
a=9,b=54
a=18,b=27
#include<stdio.h
#include<math.h
int main()
int k,x,y,z,j,r,m,n;
printf("请输入两个整数的最大公约数及最小公倍数:"):
scanf("%d%d",&.x,&.y):
printf("
x=%d.y=%d
",x,y);
Z=x*y;
k=(int)sqrt(z);
for(j=x;j<=k;j+=x)
{
/并关米关米0养0米并米关关希0并SPACE并并并0关0米*并0*关关关并/
if((1)
(m=j,n=z/j;
while(r=m%n)
m=n;
n=r;
/关米兴米米*关0兴兴兴关0米*关SPACE兴弟米00米米*关*兴米关米米/
if(n==(2))
printf("a=%d,b=%d
",j,z!j);
}
·19·
单招零距离·计算机专业综合测试卷·下册
2.程序改错题:从键盘上输入一个区间的起始点和终点,求出其中的素数。程序中有三
处错误,请改正。
#include<stdio.h
#include<math.h>
int main()
int i,k,j,left,right;
printf("请输入区间的两端:"):
scanf("%d,%d",&.left,&.right);
/米0米米米*米0*米F)UND0米光**米米米*¥(
i=left==1?left+2:left;
if(i==2)
{printf("%d八t",i):
i++;
while(i<=right)
(k=(int)sqrt(i);
for(j=3:j<=k:j+=2)
f(i%j==0)
/*兴关米¥¥***兴FOUND关米兴兴*米*¥**
continue;
/米¥关关米芳**著米F()UND米米米**¥米¥米米
if(j<=k)printf("%d\t",i):
i+=2:
}
3.程序设计题:编程对键盘输入的整数进行处理,把它的最高位及最低位对调,形成新的
整数。
如:输人的数:23547,处理后的新数为73542、输人的数:2,处理后的新数为2、输入的数:
23,处理后的新数为32。
#include<stdio.h
int main()
{/并米关米米米*兴*米Pr0gram关*米***米*米*/
/米米*******米End**米米米***兴米/
}
·20· {newnum=newnum∗10+sum1%10;
sum1/=10;
}
if(newnum==sum)
printf("newnum=%ld是回文数",newnum);
else
printf("newnum=%ld 不 是 回 文 数",newG
num);
第五章 循环结构(二)
一、理论测试题
1.5,30,91
2.sum1=-3,sum2=10
3.7,12,12
4.IloveBeiJing
OlympicGames!loveOlympicGames!
5.①num ②100 ③0 ④sum1
二、技能测试题
1.(1)z%j==0 (2)x
2.(1)i=left==1? left+1:left;
(2)break;
(3)if(j>k)printf("%d\t",i);
3.
intx,num,p,left,right,mid,newnum;
scanf("%d",&x);
if(x>=10)
{num=x;
p=1;
while(num>=10)
{num/=10;
p=p∗10;
}
left=x/p;right=x%10;
mid=x%p/10;
newnum=right∗p+mid∗10+left;
}
elsenewnum=x;
printf("x=%d,newnum=%d",x,newnum);
第六章 数 组(A)
一、理论测试题
1.1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
2.3 2 5
3.Japan
chinafranch
4.i=0,k=2
sum=sum+s[i]
k++,sum=0
5.if(a[j]==a[i])i--;
for(j=0;j<20-i;j++)
f==0&&l<=r
p=m
二、技能测试题
1.(1)1
(2)a[i]%2==1
(3)break
2.(1)floatfun(intn)
(2)for(i=2;i<=n;i++)
(3)A =1.0/(1+A);
3.while(str[i+n-1])
{str[i-1]=str[i+n-1];
i++;
}
str[i-1]='\0';
第六章 数 组(B)
一、理论测试题
1.1
2.abcd 4
size=7 comp=1
15 -12
3.Jiang sum=10
4.OneWorldOneDream !
5.i=9 s=15 k=16
6.(1)rand()%64+29
(2)i--或i--,break
(3)j<n+m-2-i
(4)a[j]<a[j+1]
二、技能测试题
1.(1)&&
(2)0或'\0'
(3)s[j]
3
总复习方案参考答案