SCAU高级语言程序设计--实验6 循环结构(二)(2)
二、堂下练习
1、找满足要求的数字
题目:输出1到9999中能被7整除,而且至少有一位数字是5的所有数字
思路:判断一个数字中是否有5,首先要掌握拆数字的方法。算法如下:一个整数a,使用a%10就可以得到个位数,然后再使用a /= 10,就可以去掉个位数字,重复上述步骤,就可以一个一个判断。
#include<stdio.h>#include<stdlib.h>int main(){int i,j;for(i=7;i<=9999;i+=7){j=i;while(j!=0){if(j%10==5){printf("%d\n",i);//遇到5就打印break;//遇到就跳出循环}j /= 10;//遇不到就下一位}}return 0;}
2、打印图案
题目:由键盘输入正数n(n<10),要求输出如下中间数字为n的菱形图案。
思路:继续参考实验3,这个时候是更换了输出的图案而已。
#include<stdio.h>#include<stdlib.h>int main(){int n,i,j,k,h;scanf("%d",&n);//输入半层数,例如上图为4.for(i=1-n;i<=n-1;i++){//第几层//输出空格for(j=0;j<abs(i);j++)printf(" ");//先输入空格//输出数字for(k=1;k<=n-abs(i);k++)//输出左半边的数,如第4行的1234printf("%d",k);for(h=n-abs(i)-1;h>=1;h--)//输出右半边的数,如第4行的321printf("%d",h);//每行结束后换行printf("\n");//记得换行}return 0;}