请各位高手帮小妹看下编程哪里出错了??自学碰壁很头疼!!拜托了~~~
小妹是C初学者,望各位高手多多帮忙!!题一:
由键盘输入一个字符,若为大写字母则输出“A”,若为小写字母则输出“a”,若为数字符号则输出“0”,若为其他字符则输出“#”。
这是我的编程:
#include<stdio.h>
main()
{
int n;
printf("请输入一个字符:");
scanf("%d",&n);
if(n>=65&&n<=90)
printf("A\n");
else
if(n>=97&&n<=122)
printf("a\n");
else
if(n>=48&&n<=57)
printf("0\n");
else
printf("#\n");
}
这是个可运行的程序,但不论输入的是字符还是数字、字母,出来的结果都是“#”,哪里出错了???
题二:
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于
100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
要求用if 和 switch两种语句编写程序。
我写的if程序:
#include<stdio.h>
main()
{
long int I,s;
printf("当月利润:");
scanf("%d",&I);
if(I<=100000)
s=0.1*100000;
else
if(100000<I<=200000);
s=0.1*100000+0.75*(I-100000);
else
if(200000<I<=400000)
s=0.1*200000+0.05*(I-200000);
else
if(400000<I<=600000)
s=0.1*400000+0.03*(I-400000);
else
if(600000<I<=1000000)
s=0.1*600000+0.015*(I-600000);
else
s=0.1*1000000+0.001*(I-1000000);
printf("s=%d\n",s);
}
这道题运行不了,错误提示是这样的:
--------------------Configuration: 16 - Win32 Debug--------------------
Compiling...
16.c
c:\users\dell\desktop\练习\16.c(8) : warning C4244: '=' : conversion from 'const double ' to 'long ', possible loss of data
c:\users\dell\desktop\练习\16.c(11) : warning C4244: '=' : conversion from 'double ' to 'long ', possible loss of data
c:\users\dell\desktop\练习\16.c(12) : error C2181: illegal else without matching if
c:\users\dell\desktop\练习\16.c(14) : warning C4244: '=' : conversion from 'double ' to 'long ', possible loss of data
c:\users\dell\desktop\练习\16.c(17) : warning C4244: '=' : conversion from 'double ' to 'long ', possible loss of data
c:\users\dell\desktop\练习\16.c(20) : warning C4244: '=' : conversion from 'double ' to 'long ', possible loss of data
c:\users\dell\desktop\练习\16.c(22) : warning C4244: '=' : conversion from 'double ' to 'long ', possible loss of data
执行 cl.exe 时出错.
16.obj - 1 error(s), 0 warning(s)
我写的switch程序:
#include<stdio.h>
main()
{
int I,s;
printf("当月利润:");
scanf("%d",&I);
switch(I)
{
case 0:s=0.1*I;break;
case 1:s=0.1*100000+0.075*(I-100000);break;
case 2:
case 3:s=0.1*200000+0.05*(I-200000);break;
case 4:
case 5:s=0.1*400000+0.03*(I-400000);break;
case 6:s=0.1*600000+0.015*(I-600000);break;
case 7:
case 8:
case 9:s=0.1*600000+0.015*(I-600000);break;
default:s=0.1*1000000+0.001*(I-1000000);break;
}
printf("s=%d\n",s);
}
这个可以运行,但算出的结果和实际答案不符。
关于switch,我有个不理解的地方,题目中给出的范围,如200000<=I<400000,应该写到case2还是case4后面??
我是自学C,糊涂的地方望大家指导,谢谢各位大侠了!!!