前面列举了几个简单的例子,在这里就说一下,结构稍微多一点的
目录
1.打印五组24678
第一种方法就相对简单一些,直接输出24678,循环五次,但是在这用一下别的方法
(1)因为是要打印五次,所以最外层的循环,我们可以想到用五次循环
(2)对于内部的内容来说,因为每次打的都是一样,就可以在设置一个循环是打印24678
(3)因为并不是很规律,2.4.6每次都是进行加2得操作,后续可以进行一个判断,后续加几
#include <stdio.h>
/*
打印5组:24678
*/
int main ()
{
int zu,shu;
for ( zu=1;zu<=5;zu++)//外层的五次循环
{
for ( shu=2;shu<=8;shu+=2)//从2开始打,2.4.6,当遇到6是,进行判断
{
printf("%i ",shu);
if (shu==6)
{
printf("%i ",shu+1);
}
if (shu==8)
{
printf("\n");
} //当等于6得时候,进行加1打印,得到7,因为还是小于8,在进行循环,直到等于8的时候,进行退出
}
}
return 0;
}
2.打印下列数字
打印如下格式的数字
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
首先这就是很有规律的4*5得图形,碰到这样的就可以直接考虑,俩层for循环,先对一行的数值进行打印,然后再是第二行,以此类推,然后在观察每一行的初始值,第二行的开始值就相当于第二行的值,因此再开始设计的时候,第二行的初始值就直接设成第二行的值
int main()
{
int h,s;//在这里h设置的是外层循环四次,就是四行 s设置的是循环5次,打印的列值
for( h=1 ;h<=4 ;h=h+1 )
{
for( s=h ;s<=h+4 ;s=s+1 )
{
printf("%i\t",s);
}进行列值循环的时候,列值初试值等于行值,并且最后结束的时候,列值不能大于行值加4,大于之后就结束
printf("\n");
}
return 0;
}
3,判断是否结婚
#include <stdio.h>
/*
判断一个人能否结婚:
按法律:男年满22周岁 女年满20周岁
*/
int main205()
{
int age=21;
//C没有 boolean布尔 性别: 男 女
int sex=0;//在C语言中 非0的数字(比如1)代表逻辑‘真’ 0代表逻辑‘假’
//此例中:1 代表男 0 代表女
if (sex )
{
if (age>=22)
{
printf("男的 能\n");
}
else
{
printf("男的 不能\n");
}
} //这部分是对于男生来说
else
{
if (age>=20)
{
printf("女的 能\n");
}
else
{
printf("女的 不能\n");
}
}//这部分是对于女生来说
return 0;
}
这个主要是想对sex这个进行说明,在我们使用判断条件中,1,0往往分别代表真假,当然这个1并不是完全必须是1,只要是任何非0得数都是可以得
4,打印乘法表
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
首先观察有行列,就肯定有俩层循环,再观察再每一行进行输出的时候,列值永远不会大于行值,因此可以将列值终止值设置为行值
int main206 ()
{
int h,k;//h代表设置的行值,k代表设置的列值
for ( h =1; h <10; h++)//行值从1行到9行
{
for ( k =1; k <=h; k++)//列值从1开始,到等于行值时候结束
{
printf("%d×%d=%-2d\t",k,h,h*k);
//%-2d的含义: 整数占两个位置,不足用空格占位。 -号为左对齐之意。
}
printf("\n");
}
return 0;
}
5,打印正三角
打印如下图形
*
***
*****
*******
*********
这个例子感觉还是很有意思的,都可以试试各种样子的三角形
首先还是分析一下,很明显又是俩层循环,但是再第二层循环中,空格是有规律的,*也是有规律的,因此,在设计的时候,可以考虑,一个大循环里面套着俩层循环,并且空格的数量是从4到0,*是行数乘2-1
int main208()
{
int h,k,o;//h代表行,k代表空格循环,o代表*循环
for( h=1 ;h<=5 ; h=h+1)
{
//打印空格
for( k=1 ;k<=5-h ;k++ )
{
printf(" ");
}
//打印*
for( o=1 ;o<=2*h-1 ;o++ )
{
printf("*");
}
//换行
printf("\n");
}
return 0;
}