一段C语言程序,怎样实现反复输入功能?

2025-03-28 08:14:06
推荐回答(6个)
回答1:

/* 你的程序在我这儿可以编译,但无法实现,试试这个*/
#include "stdio.h"
#define MIN 0.001
void main()
{
float data;
int n=0,a=0,b=0,c=0,d=0,e=0;
printf("请输入数据,并按q键结束!\n");
while (scanf("%f",&data)==1)
{
if (data<4.4 || data>=5.4)
{
printf("输入的数据:%.2f数据超出范围,请重新输入数据,并按q键结束!\a\n",data);
continue;
}
if (data>=4.4-MIN && data<4.6-MIN) a++;
if (data>=4.6-MIN && data<4.8-MIN) b++;
if (data>=4.8-MIN && data<5.0-MIN) c++;
if (data>=5.0-MIN && data<5.2-MIN) d++;
if (data>=5.2-MIN && data<5.4-MIN) e++;
n++;
}
printf("数据的总量:%2d\n",n);
printf("在[4.4,4.6)区间内,数量: %2d\t百分率:%5.2f%%\n",a,(float)a/n*100.0);
printf("在[4.6,4.8)区间内,数量: %2d\t百分率:%5.2f%%\n",b,(float)b/n*100.0);
printf("在[4.8,5.0)区间内,数量: %2d\t百分率:%5.2f%%\n",c,(float)c/n*100.0);
printf("在[5.0,5.2)区间内,数量: %2d\t百分率:%5.2f%%\n",d,(float)d/n*100.0);
printf("在[5.2,5.4)区间内,数量: %2d\t百分率:%5.2f%%\n",e,(float)e/n*100.0);
}
/* 输入完一系列数据后需按完q(或任意字母键)后,再按回车即可看到结果 */

回答2:

改了不少地方,可以重新输入了,并重新开始时初始化都为零,应该满足你的要求。
#include
#include
main()
{
float dt;
start:
int a=0,b=0,c=0,d=0,e=0,t=1,tmax;
printf("请输入数据的数量:");
scanf("%d",&tmax);
while(1){
printf("\n请输入数据%d:",t);
scanf("%f",&dt);
if (dt>=4.4 && dt<4.6) a+=1,t+=1;
if (dt>=4.6 && dt<4.8) b+=1,t+=1;
if (dt>=4.8 && dt<5.0) c+=1,t+=1;
if (dt>=5.0 && dt<5.2) d+=1,t+=1;
if (dt>=5.2 && dt<5.4) e+=1,t+=1;
while (t>tmax){
printf("\n4.4~4.6: %d\n",a);
printf("4.6~4.8: %d\n",b);
printf("4.8~5.0: %d\n",c);
printf("5.0~5.2: %d\n",d);
printf("5.2~5.4: %d\n",e);
system("pause");
goto start;}
}
}

dev-c++上通过,用goto纯属跳着方便
楼上你说话能不能客气点。。。。
说句不好听的,你装什么成熟啊。

回答3:

#include
main()
{
int i,j,data,temp,scope[5]={0};
printf("input the number:");
scanf("%d",&i);
printf("input your data:");
for(j=0;j{
scanf("%d",&data);
temp=(data*10-44)/2;
switch(temp)
{
case 1:scope[0]++;
case 2:scope[1]++;
case 3:scope[2]++;
case 4:scope[3]++;
case 5:scope[4]++;
}
}
printf("4.4~4.6: %d\n",scope[0]);
printf("4.6~4.8: %d\n",scope[1]);
printf("4.8~5.0: %d\n",scope[2]);
printf("5.0~5.2: %d\n",scope[3]);
printf("5.2~5.4: %d\n",scope[4]);

}

解释:scope数组存的是在区间数的个数,temp就是把勇和输入的数分区了

还有楼上的程序你自己运行了吗?还有c语言程序里面尽量避免出现goto语句!这是习惯!好在别的语言都不支持 goto语句,省得又毁了一批人!

楼上的懒得理你,随便把.
搂主把能把错误的提示告诉我吗?你用什么编译环境?

楼主现在应该没问题了,你再试试

回答4:

你的dt是int怎么和小数比呢?很久没接触C了.不过我想的话就是你输入的dt是5.3可能也会变成5.这样就得不出结果了.

回答5:

在学习C语言的初级阶段,老师总是说避免GOTO语句.但是,当你用了几年只后,高等导师就会告诉你,其实GOTO可以实现很多方便的功能.

帮你修改了一点点.
#include

int main()
{
int dt,t=1,tmax;
int a=0,b=0,c=0,d=0,e=0;
printf("请输入数据的数量:");
scanf("%d",&tmax);
while(tmax--)
{
printf("\n请输入数据%d:",t);
scanf("%d",&dt);
if (dt>=4.4 && dt<4.6) a+=1;
if (dt>=4.6 && dt<4.8) b+=1;
if (dt>=4.8 && dt<5.0) c+=1;
if (dt>=5.0 && dt<5.2) d+=1;
if (dt>=5.2 && dt<5.4) e+=1;
}

printf("\n4.4~4.6: %d\n",a);
printf("4.6~4.8: %d\n",b);
printf("4.8~5.0: %d\n",c);
printf("5.0~5.2: %d\n",d);
printf("5.2~5.4: %d\n",e);
return 0;
}
循环这样比较简洁.

回答6:

用for循环吧……