谭浩强【C程序设计】课后编程题(第四章)

该程序集包含了多个C语言实现的功能,包括:1) 三数排序;2) 判断闰年;3) 距离与费用计算;4) 最大值打印;5) 平方根打印;6) 数字转换;7) 分级打印;8) 数字位数判断与输出;9) 奖励计算;10) 数组排序;11) 塔高度计算。这些功能展示了基本的逻辑判断、数学运算和数据交换等编程技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>

void dem_fun(void)
{
	float a, b, c;
	scanf_s("%f,%f,%f", &a, &b, &c);
	if (a > b)
	{
		swap_num(&a, &b);
	}
	if (a > c)
	{
		swap_num(&a, &c);
	}
	if (b > c)
	{
		swap_num(&b, &c);
	}
	printf("%5.2f,%5.2f,%5.2f\n", a, b, c);
}

void swap_num(float* a, float* b)
{
	float temp; //
	temp = *a;  //指针a指向temp
	*a = *b;    // 指针b指向指针a
	*b = temp;	
}
//Eg 4.8
void is_leapYear(void)
{
	int year, leap;
	//leap = 1 闰年
	printf("输入年份:");
	scanf_s("%d", &year);
	if (year % 4 == 0) // 能够被4整除
	{
		if (year % 100 == 0) // 能够被4整除且能被100整除
		{
			if (year % 400 == 0) // 能够被4整除且且能被100整除同时能够被400整除
			{
				leap = 1;
			}
			else           // 但不能被400整除
			{
				leap = 0;
			}
		}
		else               // 能4整除不能被100整除
		{
			leap = 1;
		}
	}
	if (leap)
	{
		printf("%d是闰年!", year);
	}
	else
	{
		printf("%d不是闰年!", year);
	}
}
//Eg 4.10
void transfee_Cal(float distance)
{
	int level;
	float dis, prices;
	level = distance / 250;
	switch (level)
	{
	default:dis = 12;
	case 0:dis = 0; break;
	case 1:dis = 2; break;
	case 2:
	case 3:dis = 5; break;
	case 4:
	case 5:
	case 6:
	case 7:dis = 8; break;
	case 8:
	case 9:
	case 10:
	case 11:dis = 10; break;
	case 12:dis = 15; break;
	}
	prices = 100 * (1 - dis / 100) * 20 * 300;
	printf("prices:%.2f", prices);
}

//4.4
void max_Print(void)
{
	int num1, num2, num3, max;
	scanf_s("%d%d%d", &num1, &num2, &num3);
	if (num1 >= num2 && num1 >= num3)
	{
		max = num1;
	}
	if (num2 >= num1 && num2 >= num3)
	{
		max = num2;
	}
	if (num3 >= num1 && num3 >= num2)
	{
		max = num3;
	}
}

//4.5
void sqrt_Printf(void)
{
	int number=10000,root;
	if (number > 1000)
		printf("输入错误!");
	root = sqrt(number);
}

//4.6
void numbers(int x)
{
	int result;
	if (x < 1)
	{
		result = x;
	}
	else  //大于等于1
	{
		if (x < 10)
		{
			result = 2 * x + 1;
		}
		else //大于等于10
		{
			result = 3 * x + 11;
		}
	}
}

// 4.8
void grade_Leve(int grd)
{
	switch (grd/10)
	{
	default:if (grd == 100)printf("level A"); else printf("error"); break;
	case 0:
	case 1:
	case 2:
	case 3:
	case 4:
	case 5:printf("level E"); break;
	case 6:printf("level D"); break;
	case 7:printf("level C"); break;
	case 8:printf("level B"); break;
	case 9:printf("level A"); break;
	}
}


//4.9
void judge_Number(void)
{
	long number;
	printf("please input a number :");
	scanf_s("%d", &number);
	// 取某一位
	// number/1000 --千位
	// number/100  --百位
	// number/10   --十位
	// number%10   --个位
	if (number <= 99999)
	{
		if (number <= 9999 && number >= 1000)
		{
			printf("Sequential output: %d %d %d %d\n", number / 1000, number % 1000 / 100, number%1000%100 / 10, number % 10);
			printf("Reverse order output: %d %d %d %d\n", number % 10, number % 1000 % 100 / 10, number % 1000 / 100, number / 1000);
			printf("number is %d", 4);
		}
		else if (number <= 999 && number >= 100)
		{
			printf("Sequential output: %d %d %d\n", number  / 100, number % 100 / 10, number % 100 % 10);
			printf("Reverse order output: %d %d %d\n", number % 100 % 10, number % 100 / 10, number / 100);
			printf("number is %d", 3);
		}
		else if (number <= 99 && number >= 10)
		{
			printf("Sequential output: %d %d\n", number  / 10, number % 10);
			printf("Reverse order output: %d %d\n", number % 10, number / 10);
			printf("number is %d", 2);
		}
		else //(number <= 9 && number >= 0)
		{
			printf("Sequential output: %d\n",number);
			printf("Reverse order output: %d\n", number);
			printf("number is %d", 1);
		}
	}
}

//4.10
void reward_Cal(double grade)
{
	double reward;
	if (grade <= 1e5)
	{
		reward = grade * 0.1;
		printf("The reward is %.2f\n", reward);
	}
	else if (1e5 < grade && grade <= 2e5)
	{
		reward = (grade - 1e5) * 0.075 + 1e5 * 0.1;
		printf("The reward is %.2f\n", reward);
	}
	else if(2e5<grade && grade<=4e5)
	{
		reward = (grade-2e5) * 0.050 + 2e5 * 0.075 + 1e5 * 0.1;
		printf("The reward is %.2f\n", reward);
	}
	else if (4e5 < grade && grade <= 6e5)
	{
		reward = (grade-4e5) * 0.030 + 4e5 * 0.050 + 2e5 * 0.075 + 1e5 * 0.1;
		printf("The reward is %.2f\n", reward);
	}
	else if (6e5 < grade && grade <= 10e5)
	{
		reward = (grade-6e5) * 0.015 + 6e5 * 0.030 + 4e5 * 0.050 + 2e5 * 0.075 + 1e5 * 0.1;
		printf("The reward is %.2f\n", reward);
	}
	else
	{
		reward = grade * 0.010;
		printf("The reward is %.2f\n", reward);
	}
}
//4.10-2

//4.11
void suence_4Nums()
{
	int i, j;
	float a[4],temp;
	scanf_s("%f%f%f%f",a,a+1,a+2,a+3);
	for (i = 0; i <3; i++)
	{
		for (j = 0; j < 3-i; j++)
		{
			if (a[j] <= a[j + 1])
			{
				temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
	}
	for (i = 0; i < 4; i++)
	{
		printf("%.2f\n", a[i]);
	}
}

//4.12
void tower_Height(void)
{
	float x;
	float y;
	int height;
	scanf_s("%f%f", &x, &y);
	printf("%f %f\n", x, y);
	if (((x+2.0)*(x+2.0)+(y-2.0)*(y-2.0)) <= 1.0 || ((x - 2.0) * (x - 2.0) + (y - 2.0) * (y - 2.0) <= 1.0) || ((x + 2.0) * (x + 2.0) + (y + 2.0) * (y + 2.0)) <= 1.0 || ((x - 2.0) * (x - 2.0) + (y + 2.0) * (y + 2.0) <= 1.0))
	{
		height = 10;
	}
	else
	{
		height = 0;
	}
	printf("The height of tower is %d m\n", height);

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vicssic

创作不易,感谢您的鼓励和支持~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值