目前主要分为三个专栏,后续还会添加:
专栏如下: C语言刷题解析 C语言系列文章 我的成长经历
感谢阅读!
初来乍到,如有错误请指出,感谢!
描述
KiKi学习了循环,BoBo老师给他出了一系列打印图案的练习,该任务是打印用“*”组成的翻转直角三角形图案。
输入描述:
多组输入,一个整数(2~20),表示翻转直角三角形直角边的长度,即“*”的数量,也表示输出行数。
输出描述:
针对每行输入,输出用“*”组成的对应长度的翻转直角三角形,每个“*”后面有一个空格。
思路 :
先打印一行 然后依次减少
橙色框框里面的一行代码我们都很容易能想出来,但主要的就是第二层for循环不太好想出来
拆解一下:
首先我先输入的是 3第一层for条件成立盾环:第二层for把i的值赋给j这里的意思就是跟随外层的for循环盾环:的i变化而化,因为i++是一直在进行++操作的
-
输入处理:程序需要能够接收多组输入,每组输入是一个整数(范围是2到20),表示翻转直角三角形直角边的长度,即每行输出的“*”的数量。
-
循环结构:我们需要使用循环来打印每一行的星号。循环的次数由输入的整数决定。
-
打印星号:在每次循环中,我们需要打印相应数量的星号,每个星号后面跟着一个空格。
-
递减星号数量:每一行的星号数量应该比上一行少一个,直到最后一行只有一个星号。
-
输出格式:确保每行的星号后面都有空格,并且星号的数量与输入的整数一致。
代码 1 :
# include <stdio.h>
int main ()
{
int n = 0;
while(scanf("%d",&n)!=EOF)
{
for(int i = 0; i < n; i++)//每一列
{
for(int j = i;j<n;j++)
{
printf("* ");
}
printf("\n");
}
}
return 0;
}
#include <stdio.h> // 包含标准输入输出库,用于进行输入输出操作。
int main() // 定义主函数,程序执行的入口点。
{
int n = 0; // 定义一个整型变量n,并初始化为0。这个变量用来存储用户输入的三角形的边长。
// 使用while循环来处理多组输入,直到输入结束(EOF代表文件结束,这里用来表示输入结束)。
while(scanf("%d",&n)!=EOF)
{
// 外层for循环,控制列数,从0开始,直到用户输入的n-1。
for(int i = 0; i < n; i++)
{
// 内层for循环,控制每行打印的星号数量。
// 循环变量j从i开始,直到n-1,这样每行打印的星号数量逐渐增加。
for(int j = i; j < n; j++)
{
printf("* "); // 打印一个星号和一个空格。
}
printf("\n"); // 内层循环结束后,打印一个换行符,准备打印下一行。
}
}
return 0; // 程序正常结束,返回0。
}
这段代码实现了一个简单的控制台程序,它可以接收用户输入的整数(代表三角形的边长),并打印出一个由星号组成的直角三角形图案。
程序使用while
循环来处理多组输入,直到用户输入EOF(通常是通过在命令行中输入Ctrl+D
(Linux/Mac)或Ctrl+Z
(Windows)来发送EOF信号)。
每组输入后,程序会打印出相应大小的三角形图案。
代码 2 :
#include<stdio.h>
int main()
{
int a;
while(scanf("%d",&a)!=EOF)
{
for(int i = a;i>0;i--)
{
for(int j = i;j>0;j--)
printf("* ");
printf("\n");
}
}
return 0;
}
#include<stdio.h> // 引入标准输入输出库stdio.h,它提供输入输出功能。
int main() // 定义主函数main,程序从这里开始执行。
{
int a; // 定义一个整型变量a,用于存储用户输入的三角形的边长。
// 使用while循环来处理多组输入,直到输入结束(EOF代表文件结束标志)。
while(scanf("%d",&a)!=EOF)
{
// 外层for循环,从用户输入的边长a开始递减,直到递减到1。
for(int i = a; i > 0; i--)
{
// 内层for循环,从当前行的星号数量i开始递减,直到递减到1。
for(int j = i; j > 0; j--)
{
printf("* "); // 打印一个星号和一个空格,形成翻转直角三角形的每一行。
}
printf("\n"); // 每行打印完成后,打印一个换行符,移动到下一行的开始位置。
}
}
return 0; // 程序正常结束,返回0表示成功。
}
扩展:
#include <stdio.h> // 包含标准输入输出库
int main() {
int n; // 定义一个整型变量n来存储用户输入的行数
// 读取用户输入的行数
scanf("%d", &n);
// 使用for循环来控制行数
for(int i = n; i > 0; i--) {
// 内层循环,用于在每一行打印星号
for(int j = 0; j < i; j++) {
printf("* "); // 打印一个星号和一个空格
}
printf("\n"); // 完成一行的打印后,换到下一行
}
return 0; // 程序正常结束
}
现在,让我们逐步分析这段代码:
-
#include <stdio.h>
:这一行是预处理指令,它告诉编译器在实际编译之前包含标准输入输出库。这个库提供了scanf
和printf
等函数,允许程序执行输入和输出操作。 -
int main() { ... }
:这是C语言程序的主函数,程序的执行从这里开始。 -
int n;
:在main
函数内部,我们声明了一个整型变量n
,用来存储用户输入的翻转直角三角形的边长(即星号的数量)。 -
scanf("%d", &n);
:这行代码使用scanf
函数从用户那里读取一个整数输入,并将其存储在变量n
中。%d
是格式字符串,指定了期望输入的类型是整数。&n
是变量n
的地址,scanf
需要这个地址来知道在哪里存储读取的数据。 -
for(int i = n; i > 0; i--) { ... }
:这是一个for
循环,它控制打印行数。循环的初始条件是int i = n
,这意味着i
的初始值是用户输入的行数。循环继续进行,只要i
大于0。每次循环结束时,i--
将i
的值减少1,这导致每行打印的星号数量逐渐减少。 -
for(int j = 0; j < i; j++) { ... }
:这是嵌套在上一个for
循环内的第二个for
循环,用于控制每行打印的星号数量。循环从j = 0
开始,只要j
小于i
就继续进行。每次循环,j
的值增加1。 -
printf("* ");
:在内层循环内部,这行代码打印一个星号和一个空格。由于内层循环每次迭代都会执行一次,所以它会打印出当前行应有的星号数量。 -
printf("\n");
:在内层循环结束后,这行代码打印一个换行符,将打印位置移动到下一行的开始处。 -
return 0;
:程序执行完所有的循环后,main
函数返回0,表示程序正常结束。