明解C语言入门篇练习题第八章

练习8-1

#include <stdio.h>
#define diff(x,y) ((x>y)?(x-y):(y-x))
int main(void)
{
	int x, y;
	printf("x:"); scanf("%d",&x);
	printf("y:"); scanf("%d",&y);
	printf("x,y之差为%d。\n",diff(x,y));
	return 0;
}

练习8-2

#include <stdio.h>
#define max(x,y) ((x>y)?(x):(y))
int main(void)
{
	int a,b,c,d;
	printf("a:"); scanf("%d",&a);
	printf("b:"); scanf("%d",&b);
	printf("c:"); scanf("%d", &c);
	printf("d:"); scanf("%d", &d);
	printf("方法1 a,b,c,d的最大值为%d。\n",max(max(a,b),max(c,d)));
	printf("方法2 a,b,c,d的最大值为%d。\n", max(max(max(a,b),c),d));
	return 0;
}

练习8-3

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

练习8-4 待做


练习8-5

#include <stdio.h>
enum gender {male,female};
enum season {spring,summer,autumn,winter};
int main(void)
{
	int x;
	printf("select gender\n0...male\n1...female\n");
	scanf("%d",&x);
	switch (x)
	{
		case 0: printf("male selected!\n"); break;
		case 1: printf("female selected !\n"); break;
	}
	printf("select season\n0...spring\n1...summer\n2...autumn\n3...winter\n");
	scanf("%d", &x);
	switch (x)
	{
		case 0: printf("spring selected!\n"); break;
		case 1: printf("summer selected!\n"); break;
		case 2: printf("autumn selected!\n"); break;
		case 3: printf("winter selected!\n"); break;
	}
	return 0;
}

练习8-6

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

练习8-7

#include <stdio.h>
int combination(int n,int r)
{
	int y;
	if ((r > 1)&&(r < n))
	{
		y = combination(n - 1, r - 1) + combination(n - 1, r);
	}
	else if((r==n)||(r==0))
	{
		y = 1;
	}
	else if (r == 1)
	{
		y = n;
	}
	return y;
}
int main(void)
{
	int n,r;
	printf("n:");
	scanf("%d",&n);
	printf("r:");
	scanf("%d", &r);
	printf("combination(%d,%d) = %d\n",n,r,combination(n,r));
	return 0;
}

练习8-8

#include <stdio.h>
int gcd(int x,int y)
{
	int z;
	if (x != y)
	{
		if (x > y)
			x -= y;
		else
			y -= x;
		z = gcd(x, y);
	}
	else
		z = x;
	return z;
}
int main(void)
{
	int x,y;
	printf("x:");
	scanf("%d",&x);
	printf("y:");
	scanf("%d", &y);
	printf("gcd(%d,%d) = %d\n",x,y,gcd(x,y));
	return 0;
}

练习8-9

#include <stdio.h>
int main(void)
{
	int i = 0;
	int linenum = 1;
	char ch[128];
	while (ch[i] = getchar())
	{
		if (ch[i] == EOF)
			break;
		if (ch[i] == '\n')
			linenum++;
		i++;
	}
	printf("\nlinenum =%d\n",linenum);
	return 0;
}

练习8-10 待做

猜你喜欢

转载自blog.csdn.net/wofreeo/article/details/80675002