IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C语言程序设计(第二版) 主编:余贞侠 何钰娟 课后习题 代码题答案 -> 正文阅读

[数据结构与算法]C语言程序设计(第二版) 主编:余贞侠 何钰娟 课后习题 代码题答案

C语言程序设计(第二版) 主编:余贞侠 何钰娟 (课后习题 代码题答案)

ps.由于没有官方答案,博主将自己写的代码分享出来,若有错误之处请多多谅解,转载注明出处!

版权声明:本文为CSDN博主「RanLZ」的原创文章,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/RangeLZ/article/details/121644174

在这里插入图片描述

第二章

15.编程实现:从键盘输入一个华氏温度 F F F,要求输出摄氏温度 C C C,计算公式为 C = 5 ( F ? 32 ) / 9 C=5(F-32)/9 C=5F?32)/9.

#include <stdio.h>
int main(){
	double F, C;
	scanf("%lf", &F);
	C = 5 * (F - 32) / 9;
	printf("%.3lf ℉ == %.3lf ℃", F, C); 
	return 0;
} 

16.从键盘输入 x , v , z x,v,z x,v,z 的值,编写程序输出以下表达式的值: x + z x+z x+z % 3 3 3 ? ( i n t ) ( x + y ) *(int)(x+y) ?(int)(x+y) % 2 / 4 2/4 2/4

#include <stdio.h>
int main(){
	double x, y;
	int z;
	scanf("%lf %lf %d", &x, &y, &z);
	printf("%g", x + z % 3 * (int)(x + y) % 2 / 4);
	return 0;
} 

第三章

(1)从键盘读入矩形的长和宽的值,编程计算矩形的周长和面积,并将结果显示到屏幕上。

#include <stdio.h>
int main(){
	double l, w;
	scanf("%lf%lf", &l, &w);
	printf("c = %lg, s = %lg", (l + w) * 2, l * w);
	return 0; 
} 

(2)从键盘读入一个英文大写字母,将其转换成小写字母,并且将转换前后的字母及其 A S C I I ASCII ASCII 码都显示到屏幕上。

#include <stdio.h>
int main(){
	char c;
	scanf("%c", &c);
	printf("%c(ASCII:%d) -> %c(ASCII:%d)", c, c, c -'A' + 'a', c -'A' + 'a');
	return 0; 
} 

(3)编写一程序实现以下功能:从键盘读入5个数 n u m 1 、 n u m 2 、 n u m 3 、 n u m 4 、 n u m 5 num1、num2、num3、num4、num5 num1num2num3num4num5 输出: ( n u m l ÷ n u m 2 的 商 ) × n u m 3 + n u m 4 ? n u m 5 (numl÷num2的商)×num3+num4-num5 (numl÷num2)×num3+num4?num5,不需考虑 n u m 2 num2 num2 0 0 0 和计算结果溢出的情况。要求输出的结果中,整数部分宽度为6(不足6时以0补足)、小数部分宽度为8。编程可用素材:printf(“请输入5个数:”),printf("\n计算结果为:")。

#include <stdio.h>
int main(){
	double num1, num2, num3, num4, num5;
	scanf("%lf%lf%lf%lf%lf", &num1, &num2, &num3, &num4, &num5);
	double res = (num1 / num2) * num3 + num4 -num5;
	printf("%015.8lf", res);
	return 0; 
} 

(4)编写一程序实现以下功能:从键盘读入4个数据(依次为1个整数、2个字符、1个实数),然后按示例格式倒序输出这4个数据。编程可用素材:printf(“请输入4个数据(依次为1整数、2字符、1实数):”),printf("\n这4个数据倒序为:")。
例如:输入123 a b 254.67输出:4-254.673-b 2-a 1-123

#include <stdio.h>
int main(){
	int a;
	char b, c;
	double d;
	scanf("%d %c %c %lf", &a, &b, &c, &d);
	printf("4-%lg 3-%c 2-%c 1-%d", d, c, b, a);
	return 0; 
} 

(5)编写一程序实现以下功能:从键盘输入一日期,年月日之间以“-”分隔,并以同样的形式但以“/”作为分隔符。编程可用素材:printf( “\n please input a date:”),printf("\n the date is: ")。

#include <stdio.h>
int main(){
	int y, m, d;
	printf("\n Please input a date:");
	scanf("%d-%d-%d", &y, &m, &d);
	printf("\n the date is: %d / %d / %d", y, m, d);
	return 0; 
} 

(6)编写一程序实现以下功能;从键盘上输入一个3位整数,逆序输出这个3位数并且计算各个位上的数字之和。

#include <stdio.h>
int main(){
	int x, res = 0;
	scanf("%3d", &x);
	do{
		printf("%d", x % 10);
		res += x % 10;
		// 两行等价于
		// res +=  printf("%d", x % 10);
	}while(x /= 10);
	printf("\nres = %d", res);
	return 0; 
} 

(7)已知直角三角形的两条直角边,求第三条边。

#include <stdio.h>
#include <math.h> 
int main(){
	double a, b, c;
	scanf("%lf%lf", &a, &b);
	c = sqrt(a * a + b * b);
	printf("%lg", c);
	return 0; 
} 

(8)分别用getchar()和scanf()函数读入2个不同的字符,用 putchar()和printf()函数将这两个字符输出,比较这几个函数对字符操作的不同。

#include <stdio.h>
int main(){
	char a, b;
	a = getchar();
	scanf("%c", &b);
	putchar(a);
	printf("%c", b);
	return 0; 
} 

(9)计算如下图所示的圆环的面积。小圆和大圆的半径从键盘读入,输出要有文字说明,精确到小数点后3位,请编程实现。

#include <stdio.h>
int main(){
	double a, b, res;
	scanf("%lf%lf", &a, &b);
	if(a < b){
		res = a;
		a = b;
		b = res;
	}
	res = 3.141 * a * a - 3.141 * b * b;
	printf("%.3lf", res);
	return 0; 
} 

第四章

1、从键盘输入4个整数,输出其中的最大数和次大数。

#include <stdio.h>
void quicksort(int q[], int l, int r){
	if(l >= r) return;
	int x = q[(l + r) / 2], i = l - 1, j = r + 1;
	while(i < j){
		do i++; while(q[i] < x);
		do j--; while(q[j] > x);
		if(i < j){
			int temp = q[i];
			q[i] = q[j], q[j] = temp;
		}
	}
	quicksort(q, l, j);
	quicksort(q, j+ 1, r);
}
int main(){
	int q[4];
	scanf("%d%d%d%d",  &q[0], &q[1], &q[2], &q[3]);
	quicksort(q, 0, 3);
	printf("最大 = %d, 次大 = %d", q[3], q[2]); 
	return 0; 
} 

2.有一个函数:
Y = x ( x<1)
Y = 3x+5, (1<=x<30)
Y = 7x-3 (x>=30)
编写程序输入x的值,计算并输出y的值。

#include <stdio.h>
int main(){
	double x, y;
	scanf("%lf", &x);
	if(x < 1) y = x;
	else if(x < 30) y = 3 * x + 5;
	else y = 7 * x -3;
	printf("%lg", y);
	return 0; 
} 

3.从键盘输入一个整数,如果是正数,输出该数自身;如果是负数,输出它的绝对值。

#include <stdio.h>
int main(){
	int a;
	scanf("%d", &a);
	if(a < 0) a = -a;
	printf("%d", a);
	return 0; 
} 

4、从键盘输入a,b,c三个数,判断能否构成三角形。若能构成三角形,计算并输出三角形的面积。

#include <stdio.h>
#include <math.h>
int main(){
	int a, b, c;
	double p, s;
	scanf("%d%d%d", &a, &b, &c); 
	if(a + b < c || a + c < b || b + c < a){
		printf("No");
		return 0;
	}
	p = (a + b + c) / 2.0;
	s = sqrt(p * (p - a) * (p - b) * (p - c));
	printf("yes, S = %lg", s);	
	return 0; 
} 

5.从键盘输入一个字符,如果是小写字母,则转换为其对应的大写字母;如果是大写字母,则原样输出:如果是教字,则输出其十进制ASCII值;如果是其他字符,则统一输出@。

#include <stdio.h>
int main(){
	char c;
	scanf("%c", &c);
	if(c >= 'A' && c <= 'Z') printf("%c", c);
	else if(c >= 'a' && c <= 'z') printf("%c", c - 'a' + 'A');
	else if(c >= '0' && c <= '9') printf("%d", c);
	else printf("@");
	return 0;
}

6.身体质量指数(BMI)是常用的衡量人体肥胖程度和是否健康的重要标准。BMI判断标准如下:

BMI分类
小于18.5体重过低
18.5(含)~24.0正常范围
24.0(含)~28.0超重
大于等于28.0肥胖

BMI的计算公式:体重(kg)/身高(m)的平方。编程实现从键盘输入一个人的体重和身高,计算并输入其所在分类。

#include <stdio.h>
int main(){
	double w, h, BMI;
	scanf("%lf%lf", &w, &h);
	BMI = ( w / (h * h));
	if(BMI < 18.5) printf("体重过低");
	else if(BMI < 24.0) printf("正常范围");
	else if(BMI < 28.0) printf("超重");
	else printf("肥胖");
	return 0;
}

7.从键盘输入4个整数,要求按从大到小的顺序输出。

#include <stdio.h>
void quicksort(int q[], int l, int r){
	if(l >= r) return;
	int x = q[(l + r) >> 1], i = l - 1, j = r + 1;
	while(i < j){
		do i++; while(q[i] < x);
		do j--; while(q[j] > x);
		if(i < j){
			int temp = q[i];
			q[i] = q[j], q[j] = temp;
		}
	}
	quicksort(q, l, j);
	quicksort(q, j+ 1, r);
}
int main(){
	int q[4], i = 4;
	while(i--) scanf("%d", &q[3 - i]);
	quicksort(q, 0, 3);
	for(i = 0; i < 4; i++) printf("%d ", q[i]);
	return 0;
}

第五章

1.计算并输出l!+2!+…+n!(其中n<16)。

#include <stdio.h>
int main(){
	int n, i, res = 0, temp = 1;
	scanf("%d", &n);
	for(i = 1; i <= n; i++){
		temp *= i;
		res += temp;
	}
	printf("%d", res);
	return 0;
} 

2.输出1000以内的所有完数。“完数”是指一个数的因子之和等于自身3.输入两个正整数m和n,计算并输出其最大公约数。

#include <stdio.h>
#include <math.h>
int main(){
	int n, i, j;
	for(i = 2; i <= 1000; i++){
		n = 1;
		for(j = 2; j <= (int)sqrt(i); j++)
			if(i % j == 0) n += j + i / j;
		if(n == i) printf("%d ", i);
	}
	return 0;
}

3.输入两个正整数m和n,计算并输出其最大公约数。

#include <stdio.h>
int main(){
	int m, n, i;
	scanf("%d%d", &m, &n);
	for(i = m < n ? m : n; i >=1; i--)
		if(m % i == 0 && n % i == 0) break;
	printf("最大公约数是:%d", i);
	return 0;
}

4.一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,再反弹。求它在第8次落地时共经过多少米,第8次反弹多高。

#include <stdio.h>
int main(){
	double h = 100;
	int i = 8;
	while(i--) h /= 2;
	printf("%lg", h);
	return 0;
}

5.输入一行字符,分别统计其中英文字母、数字和其他字符的个数。

#include <stdio.h>
int main(){
	int fNum = 0, eNum = 0, oNum = 0, i;
	char ch[100];
	scanf("%s", ch);
	for(i = 0; ch[i] != '\0'; i++){
		if(ch[i] >= '0' && ch[i] <= '9') fNum++;
		else if(ch[i] >= 'a' && ch[i] <= 'z') eNum++;
		else if(ch[i] >= 'A' && ch[i] <= 'Z') eNum++;
		else oNum++;
	}
	printf("数字有:%d 个,英文有:%d 个, 其他字符有:%d 个", fNum, eNum, oNum);
	return 0;
} 

6.从键盘输入任意个整数,以-888结束(不计入),计算并输出其中的最大数和最小数。

#include <stdio.h>
int main(){
	int num[100], i = 0, max = -9999999, min = 99999999;
	do{
		scanf("%d", &num[i]);
		if(num[i] == -888) break;
		max = max > num[i] ? max : num[i];
		min = min < num[i] ? min : num[i]; 
	}while(++i);
	printf("Max = %d, Min = %d", max, min);
	return 0;
}

7.要将100元钱换成1元、5元和10元的零钱,每种零钱的张数大于0,且为5(的倍数,编程输出所有可能的换法。

#include <stdio.h>
int main(){
	int oNum, fNum, tNum, count = 0;
	for(oNum = 5; oNum <= 100; oNum += 5)
		for(fNum = 5; fNum <= 20; fNum += 5)
			for(tNum = 5; tNum <= 10; tNum += 5)
				if(oNum + fNum * 5 + tNum * 10 == 100)
					printf("1块钱 %d 张,5块钱 %d 张,10块钱 %d 张\n", oNum, fNum, tNum);
	return 0; 
}

8.百钱百鸡问题。用100钱买100只鸡,公鸡一只五钱,母鸡一只三钱,小鸡三只一钱,编程输出所有可能的买法(要求每种鸡至少要买1只)。

#include <stdio.h>
int main(){
	int bNum, gNum, cNum;
	for(bNum = 1; bNum <= 20; bNum++)
		for(gNum = 1; gNum <= 33; gNum++)
			for(cNum = 1; cNum <= 300; cNum++)
				if(bNum + gNum + cNum == 100 && bNum * 5 +  gNum * 3 + cNum / 3.0 == 100.0)
					printf("公鸡 %d 只,母鸡 %d 只,小鸡 %d 只\n", bNum, gNum, cNum);
	return 0;
}

第六章

1.计算面积:输入rl,r2,求出圆形垫片的面积。

#include <stdio.h>
#include <math.h>
const double PI = 3.1415926; 
double fun(double r1, double r2){
	return fabs(PI * (r1 * r1 - r2 * r2));
} 
int main(){
	double r1, r2, res;
	scanf("%lf%lf", &r1, &r2);
	res = fun(r1, r2);
	printf("%lg", res);
	return 0;
}

2.找到10000以内所有完数,其中判断完数的功能用函数实现。

#include <stdio.h>
#include <math.h>
int wan(int i){
	int n = 1, j;
	for(j = 2; j <= (int)sqrt(i); j++)
		if(i % j == 0) n += j + i / j;
	return n == i && i != 1;
} 
int main(){
	int i;
	for(i = 1; i <= 10000; i++)
		if(wan(i)) printf("%d ", i);
	return 0;
}

3,输入两个正整数m和n,求其最大公约数和最小公倍数。

#include <stdio.h>
int gcd(int a, int b) {
    int i;
    for(i = a < b ? a : b; i >= 0; i--)
    	if(a % i == 0 && b % i == 0)
    		return i;
    return 0;
}

int lcm(int a, int b) {
    int i = a > b ? a : b;
    do{
    	if(i % a == 0 && i % b == 0) return i;
    }while(++i);
    return 0;
}

int main(){
	int a, b;
	scanf("%d%d", &a, &b);
	printf("gcd = %d, lcm = %d", gcd(a, b), lcm(a, b));
	return 0;
}

4.一个5位数,判断它是不是回文数。例如,12321是回文数,个位与万位相同,十位与千位相同。

#include <stdio.h>
int hws(char num[8]){
	int i, j;
	for(i = 0, j = 4 ; i <= j; i++, j--)
		if(num[i] != num[j]) return 0;
	return 1;
}
int main(){
	char num[8];
	gets(num);
	if(hws(num)) printf("Yes");
	else printf("No");
	return 0;
}

5.从键盘输入任意一个正整数,输出该数的逆序数。

#include <stdio.h>
void fun(int n){
	if(!n) return;
	printf("%d", n % 10);
	fun(n / 10);
	return;
}
int main(){
	int n;
	scanf("%d", &n);
	fun(n);
	return 0;
}

【未完待续】

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-12-01 17:57:48  更:2021-12-01 17:58:19 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 14:36:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码