C语言统计输入数的正负以及零的个数

这篇博客探讨了如何使用C语言编写程序,以处理用户输入的任意数量数字并统计正数、负数和零的个数。通过定义数组存储输入,利用do-while循环读取数据直到用户结束输入,程序实现了灵活的数字处理。文章提出了如何在不知道输入数量时获取用户输入个数的问题,并展示了解决方案。

首先我们先分析下列问题:

我们只需进行20次循环,对输入的20个数一个个进行判断即可;

代码如下:

​
​​#include<stdio.h>

int main()
{
	int num,pos_num=0,neg_num=0,zero=0,i;//声明变量,分别用于存储输入的数,
	printf("请输入20个数字用空格隔开\n");	         //正数的个数,负数的个数,零的个数
	for(i=0;i<20;i++)		             //进行20次循环,所以一定要输入20次;			 
	{					
		scanf("%d",&num);
		if(num==0)				//判断数是否等于0,再次提醒判断相等是==
		{
			zero++;				//如果是,则零的个数加1
		}
		else if(num>=0)			//否则判断是否大于零
		{
		    pos_num++;			//是则正数个数加1
		}	
		else
		{
			neg_num++;			//都不是就是负数了
		}				
	}
	printf("正数数量为:%d\n负数数量为:%d\n零的数量为:%d",pos_num,neg_num,zero);
	
	return 0;
}

​

在实现上面题目后,我们可能会吐槽,一次要我输入那么多数,到底是想累死谁???

        我们能不能实现我们想输入多少个数就输多少个数呢?这时候我们就可以想到,我们定义一个数组,将我们输入的数全部存储起来,再通过对数组的遍历,一个一个判断呢?

        这里我提出一个问题:

1.      我随机输入n个数,我写的程序要怎么知道我输了多少个数呢?       

还请带着这个问题来看我写的以下程序,也许你就能了解到循环的好处;

代码如下:

#include<stdio.h>
#define N 1000 //明示常量N等于1000,便于后期更改,想处理多少个以内就可以改多少

int main()
{
	int i=0,count=0;			//声明一个count变量来记录我们输入了多少个数
	int num[N]={};              //声明一个有长度的空数组用于存储我们输入的所有数
	printf("请输入随机个数字用空格隔开,用回车结束\n");
	do
	{                               //数组都是从0开始存储数据的,如num[100],就是从num[0]
                                    //一直存储到num[99],一共存储100个数据;
		scanf("%d",&num[count]);    //从数组的0号位置开始存储数据
		count++;                    //每次存储后count加一,下次循环就可以在num[count+1]位置上            
                                    //存储数据了
	}
	while(getchar() != '\n' );      //如果循环到发现是键盘输入的回车,代表用户输入完了,循环结束
	
	int pos_num=0,neg_num=0,zero=0; //声明变量,分别用于存储正数的个数,
									//负数的个数,零的个数
		for(i=0;i<count;i++)		//从数组第一个开始判断,一直判断到我们存储的输入的最后一个数				 
		{					
			if(num[i]==0)				//判断数是否等于0,再次提醒判断相等是==
			{
				zero++;				    //如果是,则零的个数1
			}
			else if(num[i]>=0)			//否则如果大于零
			{
			    pos_num++;				//正数个数加1
			}	
			else
			{
				neg_num++;				//前俩个都不是就是负数了
			}							//一轮循环结束,继续判断下一个数
		}
		printf("正数数量为:%d\n负数数量为:%d\n零的数量为:%d",pos_num,neg_num,zero);
		
		return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值