本文主要是介绍湖南中医药大学OJ—1150到1159,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
- 1150: 习题4-6 分段函数求值
- 1151: 习题4-8-1 百分制成绩转换为等级
- 1152: 习题4-8-2 百分制成绩转换为等级
- 1153: 习题4-9-1 判断正整数位数
- 1154: 习题4-9-2 求正整数各位上的数字
- 1155: 习题4-9-3 逆序输出正整数各位上数字
- 1156: 习题4-10-1 奖金计算
- 1157: 习题4-10-2 奖金计算
- 1158: 习题4-11 4个整数从小到大输出
- 1159: 习题4-12 求建筑物高度
1150: 习题4-6 分段函数求值
题目描述
有一个函数y=f(x)的表达式如下:
当x<1时,y=x
当1<=x<10时,y=2x-1
当x>=10时,y=3x-11
输入x的值,输出y相应的值。
末尾换行。
输入:
一个实数
输出:
y=计算的结果,保留2位小数,注意末尾换行。
样例输入 Copy
5.1
样例输出 Copy
y=9.20
根据规则编写判断条件
#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{float x,y;scanf("%f",&x);if(x<1) y=x;else if(1<=x&&x<10)y=2*x-1;else if(x>=10)y=3*x-11;printf("y=%.2f\n",y);//printf("%d\n",y);return 0;
}
1151: 习题4-8-1 百分制成绩转换为等级
题目描述
从键盘输入一百分制成绩,要求输出其所对应的等级’A’, ‘B’, ‘C’, ‘D’。85分以上(含)为’A’,7084分之间为’B’,6069分之间为’C’,60分以下为’D’。
请用if语句实现。
输入
百分制成绩,保证成绩在0~100之间。
输出
百分制成绩所对应的等级,末尾输出换行。
样例输入 Copy
73
样例输出 Copy
B
#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{int x;scanf("%d",&x);if(x>=85)printf("A\n");if(x>=70&&x<85)printf("B\n");if(x>=60&&x<70)printf("C\n");if(x<60)printf("D\n");//printf("%d\n",y);return 0;
}
1152: 习题4-8-2 百分制成绩转换为等级
题目描述
从键盘输入一百分制成绩,要求输出其所对应的等级’A’, ‘B’, ‘C’, ‘D’。85分以上(含)为’A’,7084分之间为’B’,6069分之间为’C’,60分以下为’D’。
请用switch语句实现。
输入
一百分制成绩
输出
百分制成绩所对应的等级,末尾换行。
样例输入 Copy
73
样例输出 Copy
B
下面的程序是错误示范:
没有考虑到84分的条件应该是B等级
#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{int x,y;scanf("%d",&x);y=x/10;switch(y){case 10:case 9:case 8:printf("A\n");break;case 7:printf("B\n");break;case 6:printf("C\n");break;default:printf("D\n");}//printf("%d\n",y);return 0;
}
正确操作
#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{int x,y;scanf("%d",&x);y=x/10;if(x%10<5&&x>80)//仅针对于85这个分数做处理y -= 1;switch(y){case 10:case 9:case 8:printf("A\n");break;//85以上case 7:printf("B\n");break;//84-70case 6:printf("C\n");break;//79-60default:printf("D\n");//60以下}//printf("%d\n",y);return 0;
}
1153: 习题4-9-1 判断正整数位数
题目描述
给定一个不多于5位的正整数,判断它是几位数,并将该数字输出。输出结束后换行。
注意:输入的数字要确保是一个不多于5位的正整数。
输入:
一个不多于5位的正整数。
输出:
输入正整数的位数,注意末尾的换行。
样例输入 Copy
1234
样例输出 Copy
4
一个数对10取余就是取得这个数的最后一位数字
一个数除10就是取得去掉这个数的最后一位后,剩下的数字
#include<stdio.h>
#include<string.h>
#include<math.h>
#define PI 3.14
int main()
{int x,y,a=0;scanf("%d",&x);while(x>0){x/=10;a++;}printf("%d\n",a); //printf("%d\n",y);return 0;
}
1154: 习题4-9-2 求正整数各位上的数字
题目描述
输入一个不多于5位的正整数,按高位到低位的顺序输出各位上的数字,末尾换行。
注意:确保输入的正整数的位数不多于5。
输入:
一个不多于5位的正整数
输出:
从高位到低位依次输出各位上的数字,中间以空格分隔的。
注意末尾的换行。
样例输入 Copy
2143
样例输出 Copy
2 1 4 3
就是对上面那道题中提到的对10取余和除10操作的练习
#include<stdio.h>
int main()
{ int a,g,s,b,q,w; scanf("%d",&a); w=a/10000; q=a/1000%10; b=a/100%10; s=a/10%10; g=a%10; if(w!=0) printf("%d %d %d %d %d\n",w,q,b,s,g) ; else if(q!=0) printf("%d %d %d %d\n",q,b,s,g) ; else if(b!=0) printf("%d %d %d\n",b,s,g) ; else if(s!=0) printf("%d %d\n",s,g) ; else printf("%d\n",g) ;
}
1155: 习题4-9-3 逆序输出正整数各位上数字
题目描述
输入一个不多于5位的正整数,按逆序输出各位上的数字,末尾换行。
注意:确保输入的正整数的位数不多于5。
输入:
一个不多于5位的正整数。
输出:
逆序输出各位上的数字,中间以空格分隔。
注意末尾的换行。
样例输入 Copy
2143
样例输出 Copy
3 4 1 2
#include<stdio.h>
int main()
{ int a,g,s,b,q,w; scanf("%d",&a); w=a/10000; q=a/1000%10; b=a/100%10; s=a/10%10; g=a%10; if(w!=0) printf("%d %d %d %d %d\n",g,s,b,q,w) ;else if(q!=0) printf("%d %d %d %d\n",g,s,b,q) ; else if(b!=0) printf("%d %d %d\n",g,s,b) ; else if(s!=0) printf("%d %d\n",g,s) ;else printf("%d\n",g) ;}
1156: 习题4-10-1 奖金计算
题目描述
某企业发放的奖金根据利润提成。利润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,求应发奖金数,奖金精确到分。
要求用if语句实现。
输入:
企业利润,小数,双精度double类型
输出:
应发奖金数,保留2位小数,末尾换行。
样例输入 Copy
1050
样例输出 Copy
105.00
耐心走完题目,其实不难,主要是繁杂
#include <stdio.h>int main()
{double a,b,c,d,i;scanf("%lf",&i);if(i<=100000)a=i*0.1;else if(i>100000&&i<=200000)a=(i-100000)*0.075+100000*0.1;else if(i>200000&&i<=400000)a=(i-200000)*0.05+200000*0.1;else if(i>400000&&i<=600000)a=(i-400000)*0.03+400000*0.1;else if(i>600000&&i<=1000000)a=(i-600000)*0.015+600000*0.1;else if(i>1000000)a=(i-1000000)*0.01+1000000*0.1;printf("%.2lf\n",a); return 0;
}
1157: 习题4-10-2 奖金计算
题目描述
某企业发放的奖金根据利润提成。利润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,求应发奖金数,奖金精确到分。
要求用switch语句实现。
输入:
企业当月利润,小数,双精度double类型
输出:
应发奖金,精确到小数点后2位,末尾换行。
样例输入 Copy
1050
样例输出 Copy
105.00
#include <stdio.h>int main()
{double a,c,d,i;int b;scanf("%lf",&i);b=i/100000;switch(b){case 0: a=i*0.1;break;case 1: a=(i-100000)*0.075+100000*0.1;break;case 2: case 3: a=(i-200000)*0.05+200000*0.1;break;case 4: case 5:a=(i-400000)*0.03+400000*0.1;break;case 6:case 7:case 8:case 9:a=(i-600000)*0.015+600000*0.1;break;default:a=(i-1000000)*0.01+1000000*0.1;break;}printf("%.2lf\n",a);return 0;
}
1158: 习题4-11 4个整数从小到大输出
题目描述
从键盘输入4个整数,要求按照由小到大的顺序输出,末尾换行。
输入
以空格分隔的四个整数。
输出
从小到大输出这4个整数,中间以空格分隔,末尾换行。
样例输入 Copy
10 7 -2 9
样例输出 Copy
-2 7 9 10
循环的嵌套
#include <stdio.h>int main()
{int a[4],i,j,t;for(i=0;i<4;i++)scanf("%d",&a[i]);for(j=0;j<4;j++){for(i=0;i<3;i++){if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}}}for(i=0;i<4;i++){printf("%d ",a[i]);}printf("\n");return 0;
}
1159: 习题4-12 求建筑物高度
题目描述
有4个圆塔,圆心分别为(2, 2)、(-2, 2)、(-2, -2)、(2, -2),圆半径为1,如下图所示。这4个塔的高度为10米(m),塔以外无建筑物。
现输入任一点的坐标,求该点的建筑物高度(塔外的高度为零)。
输入
输入以圆括号括起来的两个数字,两个数字之间以逗号(,)分隔,格式如:(x,y)
如下为正确输入:
(1.5,1.9)
浮点型变量,请定义为float类型。
输出
该建筑物的高度,末尾换行。
样例输入 Copy
(1.8,1.9)
样例输出 Copy
10
简单函数pow和sqrt的使用
include <stdio.h>
#include <math.h>
int main()
{float x,y,a,b,c;int h;scanf("(%f,%f)",&x,&y);a=sqrt(x*x);b=sqrt(y*y);c=pow((a-2),2)+pow((b-2),2);if(sqrt(c)<=1)h=10;printf("%d",h); printf("\n"); return 0;
}
这篇关于湖南中医药大学OJ—1150到1159的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!