每日一道c语言幸福快乐每一天
#include<stdio.h>
/*打印一个直角三角形用*号
假设输入n=5当 i=0 i<n时j=0且此时j=i 第一行输出一个星;然后 i++ 第一个大循环结束; 此时i=1 到j的循环里 此时
j=0 j<i此行当前输出一个*,然后j++发现此时j=1 j=i 然后再输出一个星之后j++ j=2 j>i 循环结束 这时i++ i=2 i<n
进入到j循环 j=0 j<i 输出一个*,j++,此时j=1 j<i 再输出一个 * j++ j=2 j=i 输出一个*结束j的循环然后i++ i=3 i<n继续
进行j 的循环 j=0.......
*/
int main(){
int i ,j;
int n;
printf("请输入一个数:");
scanf("%d" , & n ); //输入直角三角形的行数
for(i=0;i<n;i++){ // 控制直角三角形的行数
for(j=0;j<=i;j++){ //一行之中有几个星星
printf("*");
}
if(j<n){ //如果不加这个判断条件的话在循环进行到最后一次的话会出现多一行空白
printf("\n");//每一次打印*的循环结束进行一次换行
}
}
}
下面还会接着更倒三角,先分割线不给打印结果希望自己下去可以直接演示一遍也是提醒我自己要好好学习(可能要出去几天回来再继续慢慢更和学习)
--------------------------------------------------- 分割线 ---------------------------------------------------------
倒三角形
#include<stdio.h>
/*倒三角跟正三角大差不差假如令k=5时一共要打印5行
第一行打印5颗星第二行4第三行3个第四行2个第五行1个
当i=0 时 要想让第一行打印5颗星 (找关系)行数和星星的关系即k-i可以满足
第一圈当k=5,i=0时,j=0 j<5-0 ,j=1 ,j=2,j=3,j=4 打印5个*然后跳出j i++
第二圈k=5 ,i=1 j=0 j<5-1 ,j=1,j=2,j=3 打印4个* 跳出j i++
第三圈同理
*/
int main(){
int i,j,k;
printf("put a number");
scanf("%d" , &k);
for(i=0;i<k;i++){
for(j=0;j<k-i;j++){
printf("*");
}
printf("\n");
}
}
额外有个问题这个时候打印出来的三角形肯定是多一行空格那么这行空格怎么可以不打印呢?我不会。
-----------------------------------------------------分割线-----------------------------------------------------------------
如何打印菱形我们有了以上打印正三角和倒三角 只需要先打印倒三角然后通过倒三角(将倒三角形打印成空白占位)打印一个等腰三角形
#include<stdio.h>
int main(){
int i,j,k;
printf("please input a number:");
scanf("%d" , &k );
for(i=0;i<k;i++){
for(j=0;j<k-i;j++){
printf(" ");
}//打印一个倒三角形
for(j=0;j<2*i+1;j++){//打印等腰三角形
printf("*");
}
printf("\n");
}
}
打印倒等腰三角形
#include<stdio.h>
int main(){
int i,j,k;
printf("please input a number:");
scanf("%d" , &k );
for(i=0;i<k;i++){//控制行
for(j=0;j<i+1;j++){
printf(" ");//打印空白进行占位
}
for(j=0;j<2*k-2*i-1;j++){//这里控制的是等腰三角形的打印2k-2i-1这个公式自己推一下
printf("*");
}
printf("\n");
}
}
上面的代码会打印出一个正的和倒的等腰三角形,要想打印出菱形可以再通过正三角形打印出一个倒着的等腰三角形两个拼一下可以打印出菱形需要注意的是打印菱形的时候会出现正等腰三角形的最后一行和倒等腰三角形的第一行会出现同数量的星星这时候只需要将i的行数改变即可
打印菱形
#include<stdio.h>
int main(){
int i,j,k;
printf("please input a number:");
scanf("%d" , &k );
for(i=0;i<k-1;i++){
for(j=0;j<k-i;j++){
printf(" ");
}//打印一个倒三角形
for(j=0;j<2*i+1;j++){//打印等腰三角形
printf("*");
}
printf("\n");
}
for(i=0;i<k;i++){
for(j=0;j<i+1;j++){
printf(" ");
}
for(j=0;j<2*k-2*i-1;j++){
printf("*");
}
printf("\n");
}
}