实验四:
1.调试示例:输入2个正整数m,n,输出它们的最小公倍数和最大公约数。 修改后的程序:#include
printf(\:\\n\
while(scanf(\ || n<0); j=m;
while(j%n!=0) j=j+m;
k=(m*n)/j;
printf(\最小公倍数是:%d\\n最大公约数是:%d\\n\}
运行结果: input m n:3 6 最小公倍数是:6
最大公约数是:3
2.编程,输入一批整数,先求出其中的偶数和及奇数和,然后输出偶数和与奇数和的差. 输入输出示例:
输入一批整数:10 11 20 33 Ctrl+Z sub=-14 源程序: #include
int x,sum1=0,sum2=0,sub=0;
printf(\请输入一批整数:\\n\ while(scanf(\ { if (x%2==0) sum1+=x; else
sum2+=x;
sub=sum1-sum2;
}
printf(\}
运行结果为:
请输入一批整数: 1 2 3 4 Ctrl+Z sum1=6 sum2=4 sub=2
3.编程,输入1个正实数eps,计算并输出下式的值,直到最后一项的绝对值小于eps 源程序如下; #include
{ float f=0,eps,t=1.0; int i=1,sign=1;
printf(\请输入正实数eps的值:\scanf(\输入一个正实数%f\while(abs(t)>eps) {
t=1.0/i*sign; f+=t; sign=-sign; i+=4;
}
printf(\}
运行结果为:
请输入正实数eps的值:0.000001 f=0.878576
4 编程,输入一个整数,求它的各位数字之和及位数。例如123的各位数字之和是6,位数是3.
源程序如下: #include
int i=0,n,sum=0;
scanf(\ if(n<0) n=-n;
while (n>0) {
sum+=n; n=n/10; i++; }
printf(\位数=%d,各位数之和=%d\\n\
}
运行结果: 134
位数=3;各位数之和=8
5、改错,输入2个整数,分别将其逆向输出。 输入输出示例:
修改后的程序:#include
int fun(int n) { int m,y; y=0;
if(n>0) m=n; else m=-n; while (m>0) { y=y*10+m; m=m/10; }
if(n>=0) return y; else return -y; }
void main()
{ int n,m;
scanf(\%d\
printf(\的逆向是%d\\t\ printf(\的逆向是%d\\t\}
运行结果: 234 -234
234的逆向是432 -234的逆向是-432
6调试示例,输入正整数的个数n,再输入n个正整数,判断它们是否为素数。素数就是只能被1和自身整除的正整数,1不是素数,2是素数 修改后的程序: #include
printf(\输入正整数的个数n:\ scanf(\
printf(\输入%d个正整数\\n\ k=n;
for(j=0;j if(i>n) printf(\是一个素数!\\n\ else printf(\不是一个素数!\\n\ } } 运行结果: 输入正整数的个数n:3 输入3个正整数:2 5 9 2不是一个素数; 5是一个素数; 9不是一个素数; 7.编程,输出101-115之间不能被3整除的数,每行输出5个。要求使用continue语句。 源程序: #include int n,count=0; for(n=101;n<=115;n++) if(n%3==0) continue; else { printf(\ \ count++; if(count%5==0) printf(\ } } 运行结果: 101 103 104 106 107 109 110 112 113 115 8.编程,猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半多一个。到第10天早上想再吃的时候,见只剩下一个桃子了。求第1天共摘了多少桃子 源程序: #include { int day,total,sum=1; for(day=1;day<=9;day++) { total=(sum+1)*2; sum=total; } printf(\} 运行结果:1534 方法二 #include int day,x; day=9; x=1; while(day>0) {x=(x+1)*2; day--; } printf(\ } 9.在100-1500内找出所有的亲密数对,并输出每对亲密数对。 输入输出示例: (220,284)(284,220)(1184,1210)(1210,1184) 源程序: # include for (a=100;a<=1500;a++) { b=yun(a); if (b>=100&&b<=1500) { if ((yun(b)==a)&&(a!=b)) {printf(\ } } } int yun(int x) { int i,sum=0; for(i=1;i 运行结果: ( 220 284) ( 284 220) ( 1184 1210) ( 1210 1184) Press any key to continue