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

我们只需进行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;
}


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

被折叠的 条评论
为什么被折叠?



