从键盘输入一个小于1000的正数,要求输出它的平方根(如果平方根不是整数,则输出它的整数部分)。要求在输入数据后先对其进行检查是否为小于1000的正数,若不是,则要求重新输入。
#include<stdio.h>
#include<math.h>
int main()
{
int a;
scanf_s("%d", &a);//vs编译器2019中使用scanf时会遇到scanf返回值被忽略问题
while(a <= 0 || a >= 1000)
{
printf("请重新输入\n");
scanf_s("%d", &a);
}
printf("%d\n", (int)sqrt(a));
return 0;
}
企业发放的奖金根据利润提成。利润I低于或等于100000元的,奖金可提10%;利润高于100000元,低于或等于200000元(100000<I≤200000)时,低于或等于100000元的部分按10%提成,高于100000元的部分,可提成7.5%;200000<I<400000时,低于或等于200000元的部分仍按上述办法提成(下同)。高于200000元的部分按5%提成;400000<I<600000元时,高于400000元的部分按3%提成;600000<I<1000000时,高于600000元的部分按1.5%提成;I>1000000时,超过1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数
要求:(1)用if语句编程序
(2)用switch语句编程序
(1)if语句
#include<stdio.h>
int main()
{
double i;
double s=0.0;
printf("请输入当月利润:\n");
scanf_s("%lf", &i);
if (i <= 100000 && i > 0)
{
s = i * 0.1;
}
else if ( i <= 200000)
{
s = 100000 * 0.1 + (i - 100000) * 0.075;
}
else if ( i <= 400000)
{
s = 100000 * 0.1 + 100000 * 0.075+(i-200000)*0.05;
}
else if ( i <= 600000)
{
s = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05+(i-400000)*0.03;
}
else if ( i <= 1000000)
{
s = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03+(i-600000)*0.015;
}
else if ( i > 1000000)
{
s = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015+(i-1000000)*0.01;
}
printf("%.2lf", s);
return 0;
}
(2)switch语句
#include<stdio.h>
int main()
{
double i;
double s=0.0;//计算应发奖金
printf("请输入当月利润:");
scanf_s("%lf", &i);
int n = (int)i / 100000;//如果不强制转换,则从double到int可能丢失数据
if(n > 10) n = 10;
switch (n)
{
case 0:
s = i * 0.1;
break;
case 1:
s = 100000 * 0.1 + (i - 100000) * 0.075;
break;
case 2:
case 3:
s = 100000 * 0.1 + 100000 * 0.075 + (i - 200000) * 0.05;
break;
case 4:
case 5:
s = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + (i - 600000) * 0.03;
break;
case 6:
case 7:
case 8:
case 9:
s = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + (i - 600000) * 0.015;
break;
case 10:
s = 100000 * 0.1 + 100000 * 0.075 + 200000 * 0.05 + 200000 * 0.03 + 400000 * 0.015 + (i - 1000000) * 0.01;
}
printf("应发奖金数:%.2lf\n", s);//奖金数保留两位数字
return 0;
}
输出100~200之间的素数
#include<stdio.h>
int main()
{
int j;
for(int i=100;i<=200;i++)
{
for(j=2;j<i;j++)
{
if(i%j == 0)
{
break;
}
}
if(i == j)
{
printf("%d是素数\n",i);
}
}
return 0;
}