4.有3个整数a,b,c,由键盘输入,输出其中最大的数。
代码:
1 #include<stdio.h>
2 int main()
3 {
4 int a,b,c,max;
5 printf("请输入任意三个整数,用空格隔开:\n");
6 scanf("%d %d %d",&a,&b,&c);
7 if(a<b)
8 {
9 max=b;
10 if(b<c)
11 max=c;
12 }
13 else
14 {
15 if(a>c)
16 max=a;
17 else
18 max=c;
19 }
20 printf("最大的数字是%d\n",max);
21 return 0;
22 }
~
结果:
5.从键盘输人一个小于 1000 的正数,要求输出它的平方根(如平方根不是整数,则输出其整数部分)。要求在输入数据后先对其进行检查是否为小于 1000 的正数。若不是,则要求重新输入。
C语言sqrt函数:求平方根 (biancheng.net)
代码:
1 #include<stdio.h>
2 #include<math.h>
3 int main()
4 {
5 printf("请输入一个数字,要求小于1000:\n");
6 int a;
7 scanf("%d",&a);
8 if(a<1000)
9 {
10 float b=sqrt(a);
11 printf("平方根为:%.2f\n",b);
12 }
13 else
14 {
15 printf("这个数字不符合要求,请重新输入。");
16 }
17 return 0;
18 }
结果:
6.有一个函数
代码:
1 #include<stdio.h>
2 int main()
3 {
4 printf("请输入一个x的值:");
5 float x,y;
6 scanf("%f",&x);
7 if(x<1)
8 {
9 y=x;
10 }
11 else if(x>=1&&x<10)
12 {
13 y=2*x-1;
14 }
15 else
16 {
17 y=3*x-11;
18 }
19 printf("y=%.2f\n",y);
20 return 0;
结果:
8.给出一百分制成绩,要求输出等级
代码:
1 #include<stdio.h>
2 int main()
3 {
4 printf("请输入成绩:\n");
5 float x;
6 scanf("%f",&x);
7 if(x>=90)
8 {
9 printf("A\n");
10 }
11 else if(x>=80&&x<90)
12 {
13 printf("B\n");
14 }
15 else if(x>=70&&x<80)
16 {
17 printf("C\n");
18 }
19 else if(x>=60&&x<70)
20 {
21 printf("D\n");
22 }
23 else if(x<60)
24 {
25 printf("E\n");
26 }
27 return 0;
28 }
结果:
9.给一个不多于5位的正整数,要求
求出它是几位数;
分别输出每一位数字;
按逆序输出各位数字,例如原数为321,应输出123
代码:
1 #include<stdio.h>
2 int main()
3 {
4 printf("请输入一个不多于5位数的正整数:\n");
5 int x,a,b,c,d,e;
6 scanf("%d",&x);
7 if(x>=10000)
8 {
9 printf("这是5位数\n");
10 }
11 else if(x<10000&&x>=1000)
12 {
13 printf("这是4位数\n");
14 }
15 else if(x<1000&&x>=100)
16 {
17 printf("这是3位数\n");
18 }
19 else if(x<100&&x>=10)
20 {
21 printf("这是2位数\n");
22 }
23 else if(x<10&&x>0)
24 {
25 printf("这是1位数\n");
26 }
27 else
28 {
29 printf("您输入的数字不符合要求。\n");
30 }
31 a=x/10000;
32 b=x%10000/1000;
33 c=x%1000/100;
34 d=x%100/10;
35 e=x%10;
36 if(a>0)
37 {
38 printf("它的万位数字是%d\n",a);
39 }
40 if(b>0)
41 {
42 printf("它的千位数字是%d\n",b);
43 }
44 if(c>0)
45 {
46 printf("它的百位数字是%d\n",c);
47 }
48 if(d>0)
49 {
50 printf("它的十位数字是%d\n",d);
51 }
52 if(e>0)
53 {
54 printf("它的个位数字是%d\n",e);
55 }
56 printf("这个数字倒过来是:");
57 if(e>0)
58 {
59 printf("%d",e);
60 }
61 if(d>0)
62 {
63 printf("%d",d);
64 }
65 if(c>0)
66 {
67 printf("%d",c);
68 }
69 if(b>0)
70 {
71 printf("%d",b);
72 }
73 if(a>0)
74 {
75 printf("%d",a);
76 }
77 printf("\n");
78 return 0;
79 }
80
81
结果:
一些心得:这个题目非常困难,主要算法想不到,自己一开始是用除整十整百来做的,运行结果不对,会像这样。
然后瞄了一眼答案,知道可以先取余再除以整十整百
然后没有什么问题了,但是倒过来显示数字出现了问题,像这样
百位没有的会出现一个零,因为我是这样输出的
printf(“倒过来输出是%d,%d,%d,%d,%d”,e.d,c,b,a);
又修改了一下,跟第二小问是相反的步骤,然后做出来了,真的特别不容易。
第一次写这么长的代码。
10.企业发放的奖金根据利润提成。利润I低于或等于 100000 元的,奖金可提10%;利润高于100000元,低于200000元(100000I<200000)时,低于100000 元的部分按10%提成,高于100000元的部分,可提成7.5%;200000<I<400000时,低于200000元的部分仍按上述办法提成(下同)。高于200000元的部分按5%提成;400000I<600000元时高于400000元的部分按 3%提成;600000<I<1000000时,高于 600000元的部分按 15%提成;I>1000000时,超过 1000000元的部分按1%提成。从键盘输入当月利润I,求应发奖金总数。
要求:
(1)用if语句编程序;
(2)用switch语句编程序
代码:
1 #include<stdio.h>
2 int main()
3 {
4 int i,j;
5 printf("请输入当月利润:");
6 scanf("%d",&i);
7 if(i<=100000)
8 j=0.1*i;
9 else if(i>100000&&i<=200000)
10 j=0.1*100000+0.075*(i-100000);
11 else if(i>200000&&i<=400000)
12 j=0.1*200000+0.05*(i-200000);
13 else if(i>400000&&i<=600000)
14 j=0.1*400000+0.03*(i-400000);
15 else if(i>600000&&i<=1000000)
16 j=0.1*600000+0.015*(i-600000);
17 else if(i>1000000)
18 j=0.1*1000000+0.01*(i-1000000);
19 printf("应发奖金总数为:%d",j);
20 printf("\n");
21 return 0;
22
23 }
结果:
各个阶段都测试了,都又对应的结果,一开始超过一百万的显示为0,后来发现我把算式的j写成了i,让i变成了一个定值。
还有题目一开始没有理解到位,多设置了一个变量m。其实只有两个变量。
这个题目有点绕,它说的利润计算方式同上没有说明白,在网上也看到了两个版本的答案,第二个版本就是我一开始自己写的那种,特别特别绕,导致我最后一段j都写成i了。
11.输人4个整数要求按由小到大的顺序输出。
1 #include<stdio.h>
2 int main()
3 {
4 printf("请输入四个数字,用空格隔开:");
5 int a,b,c,d,t;
6 scanf("%d %d %d %d",&a,&b,&c,&d);
7 if( a>b)
8 { t=a;
9 a=b;
10 b=t;}
11 if (a>c)
12 { t=a;
13 a=c;
14 c=t;}
15 if (a>d)
16 { t=a;
17 a=d;
18 d=t;}
19 if (b>c)
20 { t=b;
21 b=c;
22 c=t;}
23 if (b>d)
24 { t=b;
25 b=d;
26 d=t;
27 }
28 if (c>d)
29 {
30 t=c;
31 c=d;
32 d=t;
33 }
34 printf("从小到达输出为:%d %d %d %d\n",a,b,c,d);
35 return 0;
36 }
结果:
一些问题:一开始按自己理解写的,问题是这样
原因是把赋值过程中每段的最后一行,单纯的对换两个比较的值,而不是用t赋值,改过来就好了。
ps:后面复习的时候,发现if后面如果全不加大括号,结果就都是错的,注意规范。
11.5月21号,看懂题目意思了,过来更新
1 #include<stdio.h>
2 int main()
3 {
4 printf("请输入任意一个坐标x,y\n");
5 int x,y,h;
6 scanf("%d",&x);
7 scanf("%d",&y);
8 int a,b,c,d;
9 a=(x-2)*(x-2)*2;
10 b=(x+2)*(x+2)+(x-2)*(x-2);
11 c=(x+2)*(x+2)*2;
12 d=b;
13 if(a<=1||b<=1||c<=1)
14 h=10;
15 else
16 h=0;
17 printf("高度为%d米",h);
18 return 0;
19 }
结果: