线段图案C语言

本文通过解析一个C语言题目,讲述了如何使用for和while循环处理多组输入,并解释了嵌套循环和EOF在控制程序流程中的作用。作者通过实例和测试,展示了正确代码与错误代码的区别,强调了循环结构在处理多输入场景中的关键性。
摘要由CSDN通过智能技术生成

今日题目:

看到本题目时我注意到的关键词为循环,随即想到C语言中的三个循环(for;while;do while)。对此,我的代码如下:

#include <stdio.h>
int main()
{
	int a,i=0;
	scanf("%d",&a);//输入线段长度
	while(i<a)
	{
		printf("*");
		i++;
	}//输出与长度相同个数的字符
	return 0;
}

运行结果如下:

输出结果看似没有问题符合逻辑,然而该代码却并没有满足题目的需求。再次读题我注意到输入描述中的“多组输入”,结合老师所编写的正确的代码与示例我才明白自己错在哪里。

以下是正确的代码:

#include <stdio.h>
int main()
{
	int n=0;
	while(scanf("%d",&n)!=EOF)//输入的长度有效
	{
		int i=0;
		for(i=0;i<n;i++)
		{
			printf("*");
		}//输出与长度相同个数的字符
		printf("\n");//换行继续输入
	}
	return 0;
}

运行结果如下:

此代码对于“多组输入”的满足在于将输入scanf函数放到了while循环的表达式中,每次执行循环体便会先判断表达式是否成立,并且在每执行完一次之后进行换行,从而实现多次输入。而对于表达式scanf("%d",&n)!=EOF这句代码我的理解是保证输入有效,EOF为-1。对此我又进行了以下几组测试:

发现并不能输出任何字符。起初我疑惑为什么仅仅是不等于-1就能让其他不符合条件的输入无效,再读代码发现是while循环体内嵌套的for循环起到了作用。若输入满足while循环的表达式但为0或其他负数,for循环中的表达式2(i<n)便无法满足,因此不会进入到for循环从而直接输出换行了。

那么现在回过头来在看while循环的表达式,我认为其目的应该更多的是为了实现多组输入。

千里之行,始于足下。以上便是今日一道C语言题目引发的些许思考,如有知识错误的地方还请各位指正。

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值