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行的1234
printf("%d",k);
for(h=n-abs(i)-1;h>=1;h--)//输出右半边的数,如第4行的321
printf("%d",h);
//每行结束后换行
printf("\n");//记得换行
}
return 0;
}