西电C语言作业(2):基本程序控制结构

一、车牌限行(分支结构)

题目:

问题描述:
受雾霾天气影响,某市决定当雾霾指数超过设定值时对车辆进行限行,假设车牌号全为数字,且长度不超过6位,限行规则如下:
(1)限行时间段只包括周一至周五,周六周日不限行;
(2)如果雾霾指数低于200,不限行;
(3)如果雾霾指数大于等于200且低于400,每天限行两个尾号的汽车,周一限行1和6,周二限行2和7,周三限行3和8,周四限行4和9,周五限行5和0;
(4)如果雾霾指数大于等于400,每天限行五个尾号的汽车,周一、周三和周五限行1,3,5,7,9,周二和周四限行0,2,4,6,8。

现在给出星期几、雾霾指数和车牌号,判断该车牌号是否限行。

输入说明:输入分为三个整数,第一个整数表示星期几(1~7,1表示周一,2表示周二,依次类推,7表示周日),
第二个整数表示雾霾指数(0~600),第三个整数表示车牌号,整数之间用空格分隔。

输出说明:输出为两个部分,第一部分为车牌最后一位数字,第二部分为限行情况,限行输出yes,不限行输出no。

解答:
#include<stdio.h>
int main()
{
    int n, t, x;
    scanf("%d%d%d", &x, &t, &n);  //x为星期几; t为污染度;  x为车牌;
    n = n % 10;                //取最后一位车牌号
    printf("%d ", n);         //输出车牌号  
    if (x == 6 || x == 7)	printf("no");
    else{
        if (t < 200){
        	printf("no");
        }
        else if (t >= 200 && t < 400){
            if (n == x || n == x + 5 || n == x - 5){
            	printf("yes");
            }
            else 	printf("no");    
        }
        else{
            if (n % 2 == x % 2)         
                printf("yes");  
            else
                printf("no");
        }
    }
    return 0;
}

二、阶梯电价(分支结构)

题目:

问题描述: 电价分三个档次,[0,110]度电,每度电0.5元;(110,210]度电,超出110部分每度电0.55元,超过210度电,超出210部分每度电0.70元,给出一个家庭一月用电量,请计算出应缴的电费(四舍五入,保留小数点后两位小数)。

输入说明:输入数据为一个正实数,表示一月用电量

输出说明:输出应缴电费,保留2位小数。

解答:
#include <stdio.h>
int main(void)
{
	float quantity;
	float price;
	float a = 0.5;

	scanf_s("%f", &quantity);
	if (quantity <= 110) {
		price = quantity * a;
	}
	else if (quantity <= 210) {
		price = 110 * a + (quantity - 110) * 0.55;
	}
	else {
		price = 110 * a + 100 * 0.55 + (quantity - 210) * 0.70;
	}
	printf("%.2f",price);
	return 0;
}

三、计算某月天数(分支结构)

题目:

问题描述:每年的1,3,5,7,8,10,12月有31天,4,6,9,11月有30天,闰年2月29天,其他年份2月28天,给定年份和月份求该月的天数

输入说明:输入由两个正整数a和b构成,a表示年份,b表示月份,a和b之间用空格分隔

输出说明:根据年份和月份计算该月天数并输出

解答:
#include <stdio.h>
int main(void)
{
	int a = 0;
	int b = 0;
	int c;
	scanf_s("%d %d", &a, &b);
	switch (b)
	{
	case 1:printf("31");break;
	case 3 :printf("31");break;
	case 5 :printf("31");break;
	case 7 :printf("31");break;
	case 8 :printf("31");break;
	case 10 :printf("31");break;
	case 12 :printf("31");break;
	case 4 :printf("30");break;
	case 6 :printf("30");break;
	case 9 :printf("30");break;
	case 11 :printf("30");break;
	default
		if(a % 400 == 0 || (a % 4 == 0 && a % 100 != 0)) {
			printf("29");
		}
		else {
			printf("28");
		}
	}
	return 0;
}

四、PM2.5

题目:

问题描述:
给出一组PM2.5数据,按以下分级标准统计各级天气的天数,并计算出PM2.5平均值。
PM2.5分级标准为:

  1. 一级优(0<=PM2.5<=50)
  2. 二级良(51<=PM2.5<=100为)
  3. 三级轻度污染(101<=PM2.5<=150)
  4. 四级中度污染(151<=PM2.5<=200)
  5. 五级重度污染(201<=PM2.5<=300)
  6. 六级严重污染(PM2.5>300)

输入说明:输入分为两行,第一行是一个整数n表示天数(1<n<=100);第二行为n个非负整数Pi(0<=Pi<=1000),表示每天的PM2.5值,整数之间用空格分隔。

输出说明:输出两行数据,第一行为PM2.5平均值,结果保留2位小数;第二行依次输出一级优,二级良,三级轻度污染,四级中度污染,五级重度污染,六级严重污染的天数。

解答:
#include <stdio.h>
int main(void)
{
	int n = 0, P[100], sum = 0;
	scanf_s("%d", n);
	for (int i = 0;i < n;i++){
		scanf_s("%d", &P[i]);
		sum += P[i];//输入且求和
	}
	float average;
	average = (float)sum / n;
	printf("%.2f\n", average);
	int L[6] = { 0,0,0,0,0,0 };
	for (int i = 0;i < n;i++)
	{
		if (P[i] >= 0 && P[i] <= 50) {
			L[0]++;
		}
		else if (P[i] >= 51 && P[i] <= 100) {
			L[1]++;
		}
		else if (P[i] >= 101 && P[i <= 150]) {
			L[2]++;
		}
		else if (P[i] >= 151 && P[i] <= 200) {
			L[3]++;
		}
		else if (P[i] >= 201 && P[i] <= 300) {
			L[4]++;
		}
		else if (P[i] >= 300) {
			L[5]++;
		}
		printf("%d %d %d %d %d %d", L[1], L[2], L[3], L[4], L[5]);
		return 0;
	}
}

五、完全平方数

题目:

**问题描述:**若一个整数n能表示成某个整数m的平方的形式,则称这个数为完全平方数。写一个程序判断输入的整数是不是完全平方数。

输入说明:输入数据为一个整数n,0<=n<10000000。

输出说明:如果n是完全平方数,则输出构成这个完全平方数的整数m,否则输出no。

解答:
#include<stdio.h>
#include<math.h>

int main(void)
{
	float m = 0;
	int n = 0;
	int t;
	scanf_s("%d", &n);
	m = sqrt(n);
	t = floor(m);
	if (m - t == 0){
		printf("%d", m);
	}
	else if (m != floor(m)) {
		printf("no");
	}
	return 0;
}

六、寻找最大整数

题目:

问题描述:从键盘输入四个整数,找出其中的最大值并将其输出。

输入说明:输入4个整数,用空格分隔。

输出说明:输出值最大的一个整数。

解答:
#include <stdio.h>
int main(void)
{
	int a, b, c, d;
	int m, n;
	scanf_s("%d %d %d %d", &a, &b, &c, &d);
	if (a > b) {
		m = a;
	}
	else {
		m = b;
	}
	if (c > d) {
		n = c;
	}
	else {
		n = d;
	}
	if (m > n) {
		printf("%d", m);
	}
	else {
		printf("%d", n);
	}
	return 0;
}
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值