求帮忙编一个c语言程序!

输入I 值,输入范围在50-500之间,输入错误给出提示!然后按照下面情况计算不同情况下的C值。
结果保留3位小数
I1,C1
50-100 C1=0.05+(I1-50)/500
100-150 C1=0.15+0.325*(I1-100)/50
150-200 C1=0.475+0.325*(I1-150)/50
200-300 C1=0.8+(I1-200)/125
300-400 C1=1.6+(I1-300)/200
400-500 C1=2.1+0.52*(I1-400)/100

求帮忙 啊!我自己写的老出错,不知道是软件问题还是语句问题!
因为要根据这个处理相当大量的数据,请问除了编写程序还有没有更好的办法?

#include <stdio.h>
int main(){
int I;
double C;
while(scanf("%d",&I)==1){
if(50<=I&&I<100)
C=0.05+(I-50)/500.0;
else if(100<=I&&I<150)
C=0.15+0.325*(I-100)/50.0;
else if(150<=I&&I<200)
C=0.475+0.325*(I-150)/50.0;
else if(200<=I&&I<300)
C=0.8+(I-200)/125.0;
else if(300<=I&&I<400)
C=1.6+(I-300)/200.0;
else if(400<=I&&I<500)
C=2.1+0.52*(I-400)/100.0;
else{
printf("Input Error!\n");
continue;
}
printf("I:%d C:%.3lf\n",I,C);
}
return 0;
}

试试看,有什么不懂得就问我吧追问

如果输入的I值为小数需要怎么定义I 啊?怎么修改啊?

追答

int I;
while(scanf("%d",&I)==1){
这两条语句 改成
double I;
while(scanf("%lf",&I)==1){

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-30
当输入不在范围内时候会报错,要求你重新输入。代码很好理解,望对你有所帮助。
#include <stdio.h>
#include <math.h>
main(){
int i;
double c;
do{
printf("请输入c的值\n");
scanf("%d",&i);
if(i<50||i>500){
printf("您输入的数字不在50-500之内,请重新输入\n");
}
}while(i<50||i>500);
if(i>=50&&i<=100){
c=0.05+(i-50)/500;
}
else if(i>100&&i<=150){
c=0.15+0.325*(i-100)/50;
}
else if(i>150&&i<=200){
c=0.475+0.325*(i-150)/50;
}
else if(i>200&&i<=300){
c=0.8+(i-200)/125;
}
else if(i>300&&i<=400){
c=1.6+(i-300)/200;
}
else{
c=2.1+0.52*(i-400)/100;
}
printf("i=%d,c=%.3f\n",i,c);
}
第2个回答  2013-04-30
#include "stdio.h"
2 int main()
3 {
4 int i;
5 double c1;
6 printf("Input i:\n");
7 scanf("%d", &i);
8 if(i<50||i>500){
9 printf("Input error!\n");
10 return 1;
11 }
12 else{
13 if(i>=50&&i<100)
14 c1 = 0.05+(i-50)/500;
15 if(i>=100&&i<150)
16 c1 = 0.15+0.325*(i-100)/50;
中间的略~~~

17 if(i>=400&&i<500)
18 c1 = 2.1+0.52*(i-400)/100;
19 }
20 printf("%f\n", c1);
21 return 0;
22 }
第3个回答  2013-04-30
#include<stdio.h>
int main()
{
double I1,C1;
int n;
printf("请输入I1:");
scanf("%lf",&I1);
if(50<=I1&&I1<200)
{
n=(int)I1/50;
switch(n)
{
case 1:C1=0.05+(I1-50)/500;break;
case 2:C1=0.15+0.325*(I1-100)/50;break;
case 3:C1=0.475+0.325*(I1-150)/50;break;
default:break;
}
}
else if(200<=I1&&I1<500)
{
n=(int)I1/150;
switch(n)
{
case 1:C1=0.8+(I1-200)/125;break;
case 2:C1=1.6+(I1-300)/200;break;
case 3:C1=2.1+0.52*(I1-400)/100;break;
default:break;
}
}
else
printf("输入数据不再范围内\n");
printf("C1=%.3lf\n",C1);
return 0;
}
请楼主看看我的程序结构是不是最明了 简单的。。。
相似回答