0
点赞
收藏
分享

微信扫一扫

明解C语言 入门 课后习题练习答案 第八章 第十章

码农K 2022-05-01 阅读 99

目录

第八章

第十章


第八章

学习到这里,C语言的基础知识已经学习的差不多了,接下来是最重要的指针与结构体的学习,这部分了解简单,要想精通有点难度,可能接下来更新的速度会放慢。

在学习C语言的过程中,越往下学越觉得自己不会的很多,需要学习的很多,需要补的很多,经常会悔恨自己过去的时间就那样浪费了,没有学习一些需要学习的东西。

另外第八章我只做的我会的和我觉得有用的题,剩下的等学会了和等有时间了就补上。

8-1

#define _CRT_SECURE_NO_WARNINGS
#define diff(x,y) x-y
#include<stdio.h>
int main()
{
	int x = 0, y = 0;
	printf("请输入两个数:");
	scanf("%d %d", &x, &y);
	printf("他们的差值为:%d",diff(x,y));
	return 0;
}

8-2

#define _CRT_SECURE_NO_WARNINGS
#define max(x,y) (((x)>(y))?(x):(y))
#include<stdio.h>
int main()
{
	int a = 0, b = 0, c = 0, d = 0;
	printf("请输入四个值:");
	scanf("%d%d%d%d", &a, &b, &c, &d);
	//这个方法是分别对a、b进行大小比较,对c、d进行大小比较,最后将这两组中的大值在进行一次大小比较
	printf("其中最大值为:%d\n", max(max(a, b), max(c, d)));
	//这种方法是先从a、b中选出最大值,在与c比较选出最大值,再将选出的最大值与d相比,进而选出最终的最大值
	printf("其中最大值为:%d\n", max(max(max(a, b), c), d));
	return 0;
}

8-3

#define _CRT_SECURE_NO_WARNINGS
#define swap(type,a,b) (c=a,a=b,b=c)
#include<stdio.h>
int main()
{
	int x = 5, y = 10;
	int c = 0;
	swap(int, x, y);
	printf("x=%d\ny=%d", x, y);
	return 0;
}

8-4

#define _CRT_SECURE_NO_WARNINGS
#define number 5
#include<stdio.h>
void bsort(int a[], int n)
{
	int i = 0, j = 0;
	for (i = 0; i < n-1; i++)
		for (j = 0; j < n-1; j++)
		{
			if (a[j] > a[j + 1])
			{
				int temp = 0;
			     temp = a[j];
				a[j] = a[j + 1];
				a[j + 1] = temp;
			}
		}
}
int main()
{
	int height[number] = { 0 };
	int i = 0;
	printf("请输入%d个人的身高:\n", number);
	for (i = 0; i < number; i++)
	{
		printf("%d号:", i + 1);
		scanf("%d", &height[i]);
	}
	bsort(height, number);
	puts("按升序排列");
	for (i = 0; i < number; i++)
	{
		printf("%d号:%d\n", i + 1, height[i]);
	}
	return 0;
}

8-6

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
	int n = 0, t = 1;
	int i = 0, j = 0;
	printf("请输入一个整数:");
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		t *= i;

	}
	printf("其阶乘为:%d", t);
}

第十章

第十章内容有点少,所以就不新占一篇blog了(我可不是个爱水文章的人哈哈),至于第九章为啥没有呢,摁。。。,我觉得第九章有些简单,就不上传了。

10-1

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void adjust_point(int *p)
{ 
	if (*p < 0)
		*p = 0;
	else if (*p > 100)
		*p = 100;
	else
		;
}
int main()
{
	int i = 0;
	printf("Please input a number:");
	scanf("%d", &i);
	adjust_point(&i);
	printf("The operated number is :%d",i);
	return 0;
}

10-2

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
//前一天就不写了 方法都是一个方法 
void decrement_date(int * y, int * m, int * d)
{
	if ((*y % 4 == 0 && *y % 100 != 0) || *y % 100 == 0)
	{
		if (*m == 1 || *m == 3 || *m == 5 || *m == 7 || *m == 8 || *m == 10 || *m == 12)
		{
			if (*d == 31)  
			{
				if (*m == 12)
				{
					*y += 1;
					*m = 1;
				}
				else
				*m += 1;
				*d = 1;                                  
				
			}
			else
				*d += 1;
		}
		else if (*m == 4 || *m == 6 || *m == 11)
		{
			if (*d == 30)
			{
				*d = 1;
				*m += 1;
			}
			else
				*d += 1;
		}
		else
		{
			if (*d == 29)
			{
				*d = 1;
				*m += 1;
			}
			else
				*d += 1;
		}
	}
	else
	{
		if (*m == 1 || *m == 3 || *m == 5 || *m == 7 || *m == 8 || *m == 10 || *m == 12)
		{
			if (*d == 31)
			{
				if (*m == 12)
				{
					*y += 1;
					*m = 1;
				}
				else
				*m += 1;
				*d = 1;
			}
			else
				*d += 1;
		}
		else if (*m == 4 || *m == 6 || *m == 11)
		{
			if (*d == 30)
			{
				*m += 1;
				*d = 1;
			}
			else
				*d += 1;
		}
		else
		{
			if (*d == 28)
			{
				*m += 1;
				*d = 1;
			}
			else
				*d += 1;

		}
	}
}
void increment_date(int* y, int* m, int* d)
{


}
int main()
{
	int y = 0, m = 0, d = 0;
	printf("Please input year month day:");
	scanf("%d %d %d", &y, &m, &d);
	decrement_date(&y, &m, &d);
	printf("%d %d %d", y, m, d);
	/*increment_date(&y, &m, &d);
	printf("%d %d %d", y, m, d);*/
	return 0;
}

10-3

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
/*这道题处在这里肯定是想让我们使用刚才例题的方法进行
解答,所以依然应该使用刚才例题中的swap函数,由于是三
个数进行比较,所以应该调用三次*/
void swap(int *px, int *py)
{
	int t = *px;
	*px = *py;
	*py = t;
}
void sort3(int* n1, int* n2, int* n3)
{
	if (*n1 > *n2)
	{
		swap(n1, n2);
	}
	if (*n2 > *n3)
	{
		swap(n2, n3);
	}
	if (*n1 > *n2)
	{
		swap(n1, n2);
	}
}
int main()
{
	int n1 = 0, n2 = 0, n3 = 0;
	printf("Please input three numbers:");
	scanf("%d %d %d", &n1, &n2, &n3);
	sort3(&n1, &n2, &n3);
	puts("升序排列:");
	printf("%d %d %d", n1, n2, n3);
	return 0;
}

10-4

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#define num 6
void set_idx(int* v, int n)
{
	int i = 0;
	for (i = 0; i < n; i++)
	{
		v[i] = i;
	}
}
int main()
{
	int i = 0;
	int arr[num] = { 0 };
	set_idx(arr, num);
	for (i = 0; i < num; i++)
	{
		printf("arr[%d]=%d\n", i, arr[i]);
	}
	return 0;
}

10-5

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
//根据所学的知识我们可以知道,是从数组的第三个元素开始变为99,变两个。
void ary_set(int v[], int n, int val)
{
	int i = 0;
	for (i = 0; i < n; i++)
	{
		v[i] = val;
	}
}
int main()
{
	int i;
	int a[] = { 1,2,3,4,5 };
	ary_set(&a[2], 2, 99);
	for (i = 0; i < 5; i++)
	{
		printf("a[%d]=%d\n", i, a[i]);
	}
	return 0;
}
举报

相关推荐

0 条评论