或者:
5.28 三位数xyz和yzz的和为532,编程计算x、y、z 分别是几?
5.29 编程求出两个正数m和n的最大公约数。
提示1:用穷举法。注意循环时是从大到小好还是从小到大好。
提示2:设n除以m的商为q余数为r,如果r为0,则m、n的最大公约数为n,否则有m=n*q+r。此时显然有m、n的公约数也是n和r的公约数,即m和n的最大公约数与n和r的最大公约数相同,所以只要求出n和r的最大公约数就可,重复该过程直到余数为0求出最大公约数为止。如m =12,n=21时,过程如下
次 数 1 2 3 4 m 12 21 12 9 n 21 12 9 3 r 12 9 3 0 所以12和21的最大公约数为3。 答案:穷举法
辗转相除法
或
5.30 根据公式e?1?111??……? 编程求e的近似值,精度要求为10?6。 1!2!n!
5.31 输入正整数a(1?a?9)和n的值,编程求出a+aa+??+a??a(最后一个也就是第n个加数由n个a组成)的和。
5.32 下面程序的功能是求2323的个、十、百位上的数字之和。请把程序补充完整。
#include
int i, p = 1, t = 0; for(i=1; i<=23; ++i)
p = p * 23 % 1000; do {
t += ; p = ; }while( );
printf(\的23次方的个、十、百位上的数字和为%d。\\n\}
5.33 计算n!(n<10000)的末尾有多少个零。(提示:考虑每个因数含有几个5)
5.34 编程将一个正整数分解质因数。例如,输入20,输出20=2*2*5。请分析下面的两个程序。
1. #include
int m, i;
printf(\请输入一个正整数:\ scanf(\ printf(\ for(i=2; i while(m != i) if(m % i == 0) { printf(\ m /= i; } break; } printf(\} 2. #include void main( ) { int m, i; printf(\请输入一个正数:\scanf(\printf(\for(i=2; m!=1; ++i) if(m % i == 0) else { printf(\m /= i; i -= 1; } printf(\} 5.35 我国有4大淡水湖。甲说:洞庭湖最大,洪泽湖最小,鄱阳湖第三。乙说:洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三。丙说:洪泽湖最小,洞庭湖第三。丁说:鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三。四个人每人仅答对了一个,请编程给出四个湖从大到小的顺序。(提示:C语言中真为1,假为0,故由甲的判断构成的逻辑表达式的值加起来应为1,因为甲仅答对了一个)