基本概念:
打出
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
代码示例:
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
//先用a*b代表1*2之类
int a=1;
int b;
//用内循环先让b+1
while(a<=n){
//
b=1;
//a=1,b=1
//1*1
//b=2,a=1,b不小于a
//关键重要;b重新等于1
//a=2,1*2
//假如是a<=b,输出a*b的话,那么只能输出1*2,1*3,1*4,不能从1*2变到2*2
// 输出b*a的话,那也只能反过来
while(b<=a){
// 让小的数在前面
printf("%d*%d=%d",b,a,a*b);
if(a*b<10){
printf(" ");
}else{printf(" ");}
//不能把这个while放在循环的里面,不然会由于a一直等于b导致一直输出换行
//while(a==b){
//printf("\n");
b++; }
//内循环结束时a=b,应当输出换行
printf("\n");
a++; }
return 0;
}
理解心得:
1.可以多多尝试,如果不行可以试试反过来是否可行。
2.套多个循环的时候注意可能某个内循环会导致陷入死循环
3.本题外循环内的b=1既可以让b初始化,也可以让b在新的一轮循环中被重新赋值为1,然后重新加到2,3,4等等
BUG记录:把
while(a==b){
//printf("\n");
放在了最内层的循环。
不能把这个while放在循环的里面,不然会由于a一直等于b导致一直输出换行·