分支结构
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 ,求应发放奖金总数
代码:
float m,n;
printf("请输入当月利润(单位:万元):");
scanf("%f",&m);
if(m <= 10)
n = 0.1 * m;
else if(m <= 20)
n = 1 + 0.075 * (m - 10);
else if(m <= 40)
n = 1.75 + 0.05 * (m - 20);
else if(m <= 60)
n = 2.75 + 0.03 * (m - 40);
else if(m <= 100)
n = 3.35 + 0.015 * (m - 60);
else
n = 3.95 + 0.01 * (m - 100);
printf("应发放奖金总数为:%f(万元)\n",n);
运行结果:
2.题目:用switch case来实现四则运算。如输入 4+5 输出9。
代码:
char op;
double num1,num2,result;
printf("请输入运算符(+,-,*,/):");
scanf("%c",&op);
getchar();
printf("请输入要计算的两个数:");
scanf("%lf %lf",&num1,&num2);
switch(op)
{
case '+':
result = num1 + num2;
printf("%0.2lf + %0.2lf = %0.2lf\n",num1,num2,result);
break;
case '-':
result = num1 - num2;
printf("%0.2lf - %0.2lf = %0.2lf\n",num1,num2,result);
break;
case '*':
result = num1 * num2;
printf("%0.2lf * %0.2lf = %0.2lf\n",num1,num2,result);
break;
case '/':
result = num1 / num2;
printf("%0.2lf / %0.2lf = %0.2lf\n",num1,num2,result);
break;
default:
printf("请输入正确的运算符!\n");
}
运行结果:
循环结构
1.题目:打印以下图形
* //i=0 循环1次
*** //i=1 循环3次
***** i=2 循环5次
******* i=3 循环7次 (2*i)+1
代码:
int i,j;
for(i=0;i<4;i++)
{
for(j=0;j<=(2*i)+1;j++)
{
printf("*");
}
printf("\n");
}
运行结果:
2.题目:打印以下图形
空格个数 *号
* i=0 3 1
*** i=1 2 3
***** i=2 1 5
******* i=3 0 7
3-i (2*i)+1
代码:
int i,j;
for(i=0;i<4;i++)
{
for(j=1;j<=3-i;j++)
{
printf(" ");
}
for(j=1;j<=(2*i)+1;j++)
{
printf("*");
}
printf("\n");
}
运行结果:
3.题目:有 1 、 2 、 3 、 4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
ps:三层循环:个位,十位,百位 ,判断个位!=十位 个位!=百位 十位!=百位
代码:
int i,j,k,num=0;
printf("互不相同且无重复数字的三位数有:");
for(i=1;i<5;i++)
{
for(j=1;j<5;j++)
{
for(k=1;k<5;k++)
{
if (i != j && j != k && i != k) {
printf("%d\t", i*100+j*10+k);
num++;
}
}
}
printf("\n");
}
printf("共有%d个满足条件的三位数\n", num);
运行结果:
4.题目:有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13... 求出这个数列的前 20 项之和。
答案:结果:32.6603
ps:当前项的分子是下一项的分母, 下一项的分子是当前项的分子+分母
代码:
int i;
double a = 2, b = 1, temp, sum = 0;
for (i = 0; i < 20; i++) {
sum += a / b;
temp = a;
a = a + b;
b = temp;
}
printf("前20项之和为:%0.4f\n", sum);
运行结果:
5.题目:猴子吃桃问题:
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下 的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少。
提示:倒着往前退,找到公式规律
代码:
int day,tao = 1;
for (day = 9; day > 0; day--) {
tao = (tao + 1) * 2;
}
printf("第一天共摘了%d个桃子\n", tao);
运行结果: