C语言程序设计(第四版)—习题3程序设计题

目录

        1.比较大小:

         2.高速公路超速处罚:

        3.出租车计价:

         4.统计学生成绩:

        5. 三角形判断:


        1.比较大小:

输入3个整数,按从小到大的顺序输出。试编写相应程序。

输入格式:

输入在一行中给出3个整数,其间以空格分隔。

输出格式:

在一行中将3个整数从小到大输出,其间以“->”相连。

输入样例:

4 2 8

输出样例:

2->4->8
#include <stdio.h>
int main()
{
	int a,b,c;
	scanf("%d %d %d",&a,&b,&c);
	
	int temp;
	if(a > b){
		temp = a;
		a = b;
		b = temp;
	}
	if(a > c){
		temp = a;
		a = c;
		c = temp;
	}
	if(b>c){
		temp = b;
		b = c;
		c = temp;
	}
	
	printf("%d->%d->%d\n",a,b,c);
	return 0;
}

         2.高速公路超速处罚:

按照规定,在高速公路上行驶的机动车,超出本车道限速的10%则处200元罚款;若超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别 对该机动车的处理。

输入格式:

输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。

输出格式:

在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。

输入样例1:

65 60

输出样例1:

OK

输入样例2:

110 100

输出样例2:

Exceed 10%. Ticket 200

输入样例3:

200 120

输出样例3:

Exceed 67%. License Revoked
#include<stdio.h>
int main() {
	
	int v,n;
	scanf("%d %d",&v,&n);
	float x;
	x=(v-n)*1.0/n*100;
	if(x<10) {
		printf("OK\n");
	} else if(x>=10&&x<50) {
		printf("Exceed %.0lf%%. Ticket 200\n",x);
	} else {
		printf("Exceed %.0lf%%. License Revoked\n",x);
	}
	
	return 0;
}

        3.出租车计价:

某城市普通出租车收费标准如下:起步里程为3公里,起步费10元;超过起步里程后10公里内,每公里2元;超过10公里以上的部分加收50%的空缺补贴费,即每公里3元;营运过程中,因路阻及乘客要求临时停车的,按没5分钟2元计收(不足5分钟则不收费)。运价计费尾数四舍五入,保留到元。编写程序,输入行驶里程(公里)与等待时间(分钟),计算并输出乘客应支付的车费(元)。

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

  • 起步里程为3公里,起步费10元;
  • 超起步里程后10公里内,每公里2元;
  • 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
  • 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

输入格式:

输入在一行中给出输入行驶里程(单位为公里,精确到小数点后1位)与等待时间(整数,单位为分钟),其间以空格分隔。

输出格式:

在一行中输出乘客应支付的车费(单位为元),结果四舍五入,保留到元。

输入样例1:

2.6 2

输出样例1:

10

输入样例2:

5.1 4

输出样例2:

14

输入样例3:

12.5 9

输出样例3:

34
#include<stdio.h>
int main() {
	int time;//总临时停车时间 
	int x;//需要收费的5分钟个数 
	float money;//总收费 
	float mileage;//行驶里程 
	
	scanf("%f %d",&mileage,&time);
	if(time<5) {
		
		if(mileage<=3) {
			money=10.0;
		} else if(mileage>3&&mileage<=10) {
			money=10+(mileage-3)*2.0;
		} else {
			money=24+(mileage-10)*3.0;
		}
		
	} else {
		
		x=time*1.0/5;
		if(mileage<=3) {
			money=10+x*2.0;
		} else if(mileage>3&&mileage<=10) {
			money=10+(mileage-3)*2+x*2.0;
		} else {
			money=24+(mileage-10)*3+x*2.0;
		}
		
	}
	
	printf("%.0lf\n",money);
	return 0;
}

         4.统计学生成绩:

输入一个正整数n,再输入n个学生的成绩,统计五分制成绩的分布。百分制成绩到五分制的转换规则:大于或等于90分为A,小于90分且大于或等于80分为B,小于80分且大于或等于70分为C,小于70分且大于或等于60分为D,小于60分为E。试编写相应程序。

百分制成绩到五分制的转换规则:

  • 大于等于90分为A;
  • 小于90且大于等于80为B;
  • 小于80且大于等于70为C;
  • 小于70且大于等于60为D;
  • 小于60为E。

输入格式:
输入在第一行中给出一个正整数n(≤1000),即学生人数;第二行中给出n个学生的百分制成绩,其间以空格分隔。

输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。

输入样例:
 

7
77 56 93 74 60 68 70

输出样例:

​​​​​​1 0 2 3 1
#include <stdio.h>
int main()
{
	int n;
	int score;
	scanf("%d",&n);
	
	int i;
	int A = 0 ,B = 0 ,C = 0 ,D = 0 ,E = 0 ;
	for(i = 1; i <= n; i++)
	{
		scanf("%d",&score);
		if(score >= 90)
			A++;
		else if(score < 90 && score >= 80)
			B++;
		else if(score < 80 && score >= 70)
			C++;
		else if(score < 70 && score >= 60)
			D++;
		else 
			E++; 
	}
	
	printf("A : %d\nB : %d\nC : %d\nD : %d\nE : %d",A,B,C,D,E);
	
	return 0;
}

        5. 三角形判断:

输入平面上任意三个点的坐标(x1,y1)、(x2,y2)、(x3,y3),检验它们能否构成三角形。如果这3个点能构成一个三角形,输出周长和面积(保留2位小数);否则,输出“Impossible”。试编写相应的程序。

                提示:在一个三角形中,任意两边之和大于第三边。三角形面积计算公式如下:

                        

输入格式:

输入为3个正整数,分别代表三角形的3条边a、b、c。

输出格式:

如果输入的边能构成一个三角形,则在一行内,按照

area = 面积; perimeter = 周长

的格式输出,保留两位小数。否则,输出

These sides do not correspond to a valid triangle

输入样例1:

5 5 3

输出样例1:

area = 7.15; perimeter = 13.00

输入样例2:

1 4 1

输出样例2:

These sides do not correspond to a valid triangle
#include<stdio.h>
#include<math.h>
int main() {
	int a,b,c;
	float s;
	float perimeter,area;
	scanf("%d %d %d",&a,&b,&c);
	if(a+b>c&&b+c>a&&a+c>b) {
		s=(a+b+c)*1.0/2;
		area=sqrt(s*(s-a)*(s-b)*(s-c));
		perimeter=a+b+c;
		printf("area = %.2lf; perimeter = %.2lf",area,perimeter);
	} else {
		printf("These sides do not correspond to a valid triangle");
	}
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值