目前主要分为三个专栏,后续还会添加:
专栏如下: C语言刷题解析 C语言系列文章 我的成长经历
感谢阅读!
初来乍到,如有错误请指出,感谢!
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的带空格直角三角形图案。
输入描述:
多组输入,一个整数(2~20),表示直角三角形直角边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“*”组成的对应长度的直角三角形,每个“*”后面有一个空格。
思路 :
仔细观察题目答案的输出可以发现
每一次打印都是两个空格加上一个空格一个星号
先打印一行的内容 j=0;j<n-1-i;j++ 这是控制打印两个空格的代码
i是0的时候等于没减 i是1的时候减去1 i是2的时候减去2 i是3的时候减去3
(减去空格的个数)
j=0;j<=i;j++ 这是控制星号的代码
i是从0进入来的 当i等于1的时候 打印一次 * i等于2的时候打印两次 *
以此类推。
-
初始化变量:首先,你需要定义一个变量来存储用户输入的整数,这个整数表示三角形的行数。
-
读取用户输入:使用
scanf
函数读取用户输入的整数,并存储在之前定义的变量中。 -
输入验证:验证用户输入的整数是否在题目要求的范围内(2到20)。如果不在这个范围内,可以打印一条错误消息并退出程序。
-
外层循环:设置一个
for
循环,循环的迭代次数等于用户输入的整数。这个循环将控制三角形的行数。 -
打印空格:在每行的开始,你需要打印一定数量的空格,以便星号能够正确对齐形成三角形。空格的数量随着行数的增加而减少。可以使用另一个
for
循环来打印空格,循环的次数为n - i
,其中n
是三角形的行数,i
是当前的行数。 -
内层循环:在外层循环内部,设置另一个
for
循环来打印星号。这个循环的迭代次数等于当前行数i
。在每次迭代中,打印一个星号和一个空格。 -
换行:在内层循环结束后,使用
printf("\n");
打印一个换行符,以便开始新的一行。 -
循环结束:外层循环继续执行,直到打印完所有行。
-
程序结束:当外层循环完成所有迭代后,三角形图案打印完毕,程序可以正常结束。
代码 1 :
/*思路 : 仔细观察题目答案的输出可以发现
每一次打印都是两个空格加上一个空格一个星号
先打印一行的内容 j=0;j<n-1-i;j++ 这是控制打印两个空格的代码
i是0的时候等于没减 i是1的时候减去1 i是2的时候减去2 i是3的时候减去3
(减去空格的个数)
j=0;j<=i;j++ 这是控制星号的代码
i是从0进入来的 当i等于1的时候 打印一次 * i等于2的时候打印两次 *
以此类推*/
# include <stdio.h>
int main()
{
int n = 0;
while(scanf("%d",&n)!=EOF)
{
//控制行数
int i = 0;
for(i = 0; i<n;i++)
{
//控制每行的两个空格 + 一个空格和一颗*
int j = 0;
for(j = 0; j<n-1-i;j++)
{
printf(" ");
}
for(j = 0; j<=i; j++)
{
printf("* ");
}
printf("\n");
}
}
return 0;
}
#include <stdio.h> // 包含标准输入输出库
int main() // 主函数的开始
{
int n = 0; // 定义一个整型变量n,用于存储用户输入的行数
// 使用while循环来处理多组输入直到文件结束符EOF
while(scanf("%d",&n)!=EOF)
{
// 控制行数的循环开始
int i = 0; // 定义一个整型变量i,用于控制外层循环,从0开始,直到n-1
for(i = 0; i<n;i++) // 外层循环,i从0到n-1
{
// 控制每行空格数量的循环开始
int j = 0; // 定义一个整型变量j,用于控制内层循环
// 打印每行前面的空格,空格数量为n-1-i,随着i的增加,空格数量减少
for(j = 0; j<n-1-i;j++) // 内层循环1,打印空格
{
printf(" "); // 打印两个空格
}
// 控制每行星号数量的循环开始
// 打印星号,星号数量为i+1,随着i的增加,星号数量增加
for(j = 0; j<=i; j++) // 内层循环2,打印星号和空格
{
printf("* "); // 打印一个星号和一个空格
}
printf("\n"); // 每行结束后打印换行符,以便开始新一行的打印
}
}
return 0; // 主函数结束,返回0表示程序正常结束
}
这段代码首先包含了stdio.h
头文件,这是进行输入输出操作所必需的。main
函数是程序的入口点。程序使用while
循环来处理多组输入,直到遇到EOF。
在每次循环中,首先定义并初始化了变量i
,它将控制外层for
循环的迭代次数,即三角形的行数。
然后,程序有两个嵌套的for
循环:第一个内层循环用于打印每行开始的空格,第二个内层循环用于打印星号和每个星号后的空格。
每完成一行的打印后,程序使用printf("\n")
来换行,准备打印下一行。
当输入结束时,while
循环结束,程序返回0,表示正常退出。
代码 2 :
#include<stdio.h>
#include<stdlib.h>
int main()
{
int n;
while (scanf("%d",&n)!=EOF){
for (int i=n;i>0;i--){
for (int j=1;j<=n;j++)
j>=i?printf("* "):printf(" ");
printf("\n");
}
}
return 0;
}
#include<stdio.h> // 包含标准输入输出库
#include<stdlib.h> // 包含标准库,这里用于EOF的宏定义
int main() // 主函数的开始
{
int n; // 定义一个整型变量n,用于存储用户输入的行数
// 使用while循环来处理多组输入直到文件结束符EOF
while (scanf("%d",&n)!=EOF)
{
// 外层循环,从n开始递减到1
for (int i = n; i > 0; i--)
{
// 内层循环,从1到n
for (int j = 1; j <= n; j++)
{
// 使用三元运算符进行条件判断
// 如果j大于等于i,则打印"* "
// 否则打印" "
j >= i ? printf("* ") : printf(" ");
}
printf("\n"); // 每行结束后打印换行符,以便开始新一行的打印
}
}
return 0; // 主函数结束,返回0表示程序正常结束
}
代码开始部分包含了两个头文件:stdio.h
用于输入输出操作,stdlib.h
用于EOF的宏定义。main
函数是程序的入口点。
程序使用while
循环来处理多组输入,直到遇到EOF。在每次循环中,首先读取用户输入的整数n
,这个整数表示三角形的行数。
外层循环使用一个倒序的for
循环,从n
开始递减到1。内层循环是一个从1到n
的顺序for
循环。在内层循环中,使用三元运算符(条件运算符)? :
来进行条件判断:如果当前的循环变量j
大于等于外层循环变量i
,则打印一个星号和一个空格"* "
,否则打印两个空格" "
。
每完成一行的打印后,使用printf("\n")
来换行,准备打印下一行。当输入结束时,while
循环结束,程序返回0,表示正常退出。