1、题目:企业发放的奖金根据利润提成。
利润低于或等于 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 ,求应发放奖金总数
#include <stdio.h>
int main()
{
double run = 0.0, sum = 0.0;
printf("请输入利润:");
scanf("%lf", &run);
if(run <= 10)
{
sum = run * 0.1;
}
else if(run <= 20)
{
sum = 10*0.1+(run-10)*0.075;
}
else if(run <= 40)
{
sum = 10*0.1 + 10*0.075 + (run-20)*0.05;
}
else if(run <= 60)
{
sum = 10*0.1 + 10*0.075 + 20*0.05 + (run-40)*0.03;
}
else if(run <= 100)
{
sum = 10*0.1 + 10*0.075 + 20*0.05 + 20*0.03 + (run-60)*0.015;
}
else
{
sum = 10*0.1 + 10*0.075 + 20*0.05 + 20*0.03 + 40*0.015 + (run-100)*0.01;
}
printf("奖金为%g万元\n",sum);
return 0;
}
2、用switch实现学生成绩管理:(提示可以看swith章节的练习3)
从外部输入一个学习成绩,范围为0 – 100,
成绩大于等于90分,则输出A,
成绩大于等于80,则输出B,
成绩大于等于60,则输出C,
小于60,则输出D
#include <stdio.h>
int main(int argc, char const *argv[])
{
float a;
printf("请输入成绩:");
while(scanf("%f", &a) != EOF)
{
switch ((int)a/10)
{
case 10:
printf("A\n");
break;
case 9:
printf("A\n");
break;
case 8:
printf("B\n");
break;
case 7:
case 6:
printf("C\n");
break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:
printf("D\n");
break;
default:
printf("输入有误,请重新输入。\n");
break;
}
}
return 0;
}
3、用while和for循环均实现一次
求1000以内所有的质数
质数:只能够1和它本身整除
(1)for循环
#include <stdio.h>
#include <math.h>
int main(int argc, char const *argv[])
{
int a = 0;//计算质数的个数
for(int i = 2; i < 1000; i++)
{
int sum =0;
for(int j = 1; j <= sqrt(i); j++)
{
if(i%j == 0)
{
sum++;
}
}
if(sum == 1)
{
a++;
printf("%d ", i);
}
}
printf("\n1000以内一共有%d个质数。\n",a);
return 0;
}
(2)while循环
#include <stdio.h>
#include <math.h>
int main(int argc, char const *argv[])
{
int i = 2, a = 0;//a计算质数个数
while(i < 1000)
{
int sum = 0, j = 1;
while(j <= sqrt(i))
{
if(i % j == 0)
{
sum++;
}
j++;
}
if(sum == 1)
{
a++;
printf("%d ", i);
}
i++;
}
printf("\n1000以内一共有%d个质数。\n",a);
return 0;
}
4、猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
提示:倒着往前退,找到公式规律
(1)for循环
#include <stdio.h>
int main(int argc, char const *argv[])
{
int sum = 1;
for(int j = 0; j < 9; j++)
{
sum = 2*(sum+1);
}
printf("第10天有桃%d个。\n", sum);
return 0;
}
(2)while循环
#include <stdio.h>
int main(int argc, char const *argv[])
{
int sum = 1, i = 0;
while(i<9)
{
sum = 2*(sum+1);
i++;
}
printf("第10天有桃%d个。\n", sum);
return 0;
}
5、打印99乘法表
1 x 1 = 1
2 x 1 = 2 2 x 2 = 4
3 x 1 = 3 3 x 2 = 6 3 x 3 = 9
……
(1)for循环
#include <stdio.h>
int main(int argc, char const *argv[])
{
for(int i = 1; i < 10; i++)
{
for(int j = 1; j <= i; j++)
{
printf("%d * %d = %-2d ", i, j, i*j);
}
printf("\n");
}
return 0;
}
(2)while循环
#include <stdio.h>
int main(int argc, char const *argv[])
{
int i = 1;
while(i < 10)
{
int j = 1;
while (j <= i)
{
printf("%d * %d = %-2d ", i, j, i*j);
j++;
}
printf("\n");
i++;
}
return 0;
}
6、for循环打印以下形状
********
********
********
********
********
********
(1)for循环
#include <stdio.h>
int main(int argc, char const *argv[])
{
for(int i = 0; i < 6; i++)
{
for(int j = 0; j < i; j++)//打印空格
{
printf(" ");
}
printf("********\n");
}
return 0;
}
(2)while循环
#include <stdio.h>
int main(int argc, char const *argv[])
{
int i = 0;
while(i < 6)
{
int j = 0;
while(j < i)
{
printf(" ");
j++;
}
printf("********\n");
i++;
}
return 0;
}