
目录A.循环练习1B.循环练习3C.循环练习4D.循环练习5E.循环练习BF.循环练习CG.水仙花数H.幸运UIDI.奇偶分离J.小B的乘法口诀K.数字模式探索者L.小B的米饭M.九九乘法表N.AO.小B跑马拉松P.找最大值Q.奶龙的质数判断R.小明的口袋S.有精神分裂症的小明T.abcU.M?ACM!V.数字翻转W.快乐数X. only one!A.循环练习1从1 11到n nn用循环遍历,将所有奇数(% 2 = = 1 \%2 == 1%2==1)的数输出。ACcode#includestdio.hintmain(){intn;scanf("%d",n);for(inti=1;i=n;i++){if(i%2==1)printf("%d ",i);}printf("\n");return0;}B.循环练习3用一个变量s u m sumsum记录平方和,初始为0 00,用循环从1 11到n nn遍历,每次将i ∗ i i * ii∗i累加到s u m sumsum,最后输出。结果会爆i n t intint,要开l o n g l o n g long longlonglongACcode#includestdio.hintmain(){intn;scanf("%d",n);longlongsum=0;// 存平方和for(inti=1;i=n;i++){sum+=i*i;}printf("%lld\n",sum);return0;}C.循环练习4阶乘就是1 × 2 × 3 × . . . × ( n − 1 ) × n 1 \times 2 \times 3 \times ... \times (n - 1) \times n1×2×3×...×(n−1)×n,因此用一个变量r e s resres存结果,赋初值为1 11,用循环遍历从1 11到n nn的每一个数,每次累乘到r e s resres,最后输出。结果会爆i n t intint,要开l o n g l o n g long longlonglongACcode#includestdio.hintmain(){intn;scanf("%d",n);longlongres=1;// 存累乘的结果for(inti=1;i=n;i++){res*=i;}printf("%lld\n",res);return0;}D.循环练习5这题要输出的东西有行也有列,因此要用双重f o r forfor循环。观察样例可以发现,这题的目的就是:第一行输出n nn个数,第二行输出n − 1 n - 1n−1个数,…,第n − 1 n - 1n−1行输出2 22个数,第n nn行输出1 11个数。因此,可以用第一重f o r forfor循环来表示当前输出的是第几行,第二重f o r forfor循环来控制这一行输出的数的个数。显然,对于第i ii行,要输出n − i + 1 n - i + 1n−i+1个数,只需让内层f o r forfor循环执行n − i + 1 n - i + 1n−i+1次,每次输出一个数即可。因为每次输出的数都是从1 11开始向上累加的,因此可以在循环外面初始化一个变量,给其赋初值为1 11,每次输出这个变量,然后给这个变量+ 1 +1+1,就变成了下次该输出的数。对于题目中的补0 00操作,用占位符自动补位即可,不会的请移步至讲义。ACcode#includestdio.hintmain(){intn;scanf("%d",n);intt=1;for(inti=1;i=n;i++){// 当前输出的是第 i 行for(intj=1;j=n-i+1;j++){// 第 i 行要输出 n - i + 1个数printf("%02d",t);// 每次输出当前的数t++;// 将 t 改成下一个要输出的数}printf("\n");// 输出下一行之前要换行}return0;}E.循环练习B用一个变量存分母,赋初值为1 11,用一个变量存结果,赋初值为0 00,循环n nn次,每次给1 分母 \frac{1}{分母}分母1累加到结果,然后给分母 + 3 分母+3分母+3即可。ACcode#include