C语言小知识!

来源:百度知道 编辑:UC知道 时间:2024/06/17 21:35:20
#include<stdio.h>
void main()
{

float m1,m2,m3,m4,m5,m6;
int n,p;
m1=n*0.1;
m2=m1+(n-100000)*0.075;
m3=m2+(n-200000)*0.05;
m4=m3+(n-400000)*0.03;
m5=m4+(n-600000)*0.015;
m6=m5+(n-1000000)*0.01;
scanf("请输入当月利润:\n",&n);
switch(p)
{
case 1:n<=100000;
p=n*0.1; break;
case 2:100000<n<=200000;
p=m1+(n-100000.00)*0.075;break;
case 3:200000<n<=400000;
p=m2+(n-200000)*0.05;break;
case 4:400000<n<=600000;break;
p=m3+(n-400000)*0.03;break;
case 5:600000<n<=1000000;
p=m4+(n-600000)*0.015;break;
case 6:n>1000000;
p=m5+(n-1000000)*0.01;break;
default:printf("应发放奖金总数为:\n",p);
}
}
我运行出现好多警告,请大家指点,多谢!

因为是这样的,好多警告,主要的内容分为两个,一个是是100000的数字太大了,已经超过了一个整型数的范围了,所以语句基本是一定成立的!再有就是100000<n<200000,这句话的写法也是不正确的,不能用数学的方法来写,这样的话是先判断左侧的100000<n是否为真,它的值或者为0或者为1,所以表达式和你要想的是不一样的,如果想这样判断这样写:(100000<n)&&(n<200000)
如果想判断这么大的,定义为long类型

n没有赋值,烦是用到n的算式都会出现警告!
可以将scanf("请输入当月利润:\n",&n); 移到m1=n*0.1;前面去
这里n定义为int类型,int类型数据的范围是-32768~32767,100000已经超出了int 的范围.应该改成long类型
还有scanf("请输入当月利润:\n",&n);这句是错的!""里面应该的是读入数据类型,比如说%d或%c,而不是你要输出的内容
可改为:
printf("请输入当月利润:\n");
scanf("%d",&n);