#define _CRT_SECURE_NO_WARNINGS 1
练习8-1
#include<stdio.h>
#define diff(x,y) ((x)>(y))?((x)-(y)):((y)-(x))
int main()
{
int a;
int b;
scanf("%d %d", &a, &b);
printf("%d", diff(a, b));
return 0;
}
练习8-2
#include<stdio.h>
#define max(x,y) ((x)>(y))?(x):(y) //注意
int main()
{
int a, b, c, d = 0;
scanf("%d %d %d %d", &a, &b, &c, &d);
printf("%d\n", max(max(a, b), max(c, d)));
printf("%d\n", max(max(max(a, b), c), d));
return 0;
}
练习8-3
#include<stdio.h>
#define swap(int,x,y) {int tmp=x;x=y;y=tmp;} //注意
int main()
{
int a;
int b;
scanf("%d %d", &a, &b);
swap(int, a, b);
printf("%d %d", a, b);
return 0;
}
练习8-4
#include<stdio.h>
#define NUMBER 5
void Bubble_sort(int arr[], int n)
{
int i = 0;
int j = 0;
for (i = 0; i < n-1; i++) //重要
{
for (j = 0; j < n-1-i; j++)
{
if (arr[j] > arr[j+1])
{
int tmp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = tmp;
}
}
}
}
int main()
{
int arr[NUMBER] = { 0 };
int i = 0;
for (i = 0; i < NUMBER; i++)
{
scanf("%d", &arr[i]);
}
Bubble_sort(arr, NUMBER);
for (i = 0; i < NUMBER; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
练习8-5
#include<stdio.h>
enum season { Invalid, Spring, Summer, Autumn, Winter };
void spring()
{
puts("春天");
}
void summer()
{
puts("夏天");
}
void autumn()
{
puts("秋天");
}
void winter()
{
puts("冬天");
}
int main()
{
int k = 0;
do
{
printf("0--结束 1--春天 2--夏天 3--秋天 4--冬天\n");
printf("请选择:");
scanf("%d", &k);
} while (k < Invalid || k > Winter); //注意
enum season selected; //注意
switch (k)
{
case Spring:
spring();
break;
case Summer:
summer();
break;
case Autumn:
autumn();
break;
case Winter:
winter();
break;
default:
break;
}
return 0;
}
练习8-6
#include <stdio.h>
int factorial(int n)
{
int i;
int sum = 1;
for (i = 1; i <= n; i++)
{
sum *= i;
}
return sum;
}
int main()
{
int x;
printf("请输入一个数:");
scanf("%d", &x);
printf("它的阶乘是:%d", factorial(x));
return 0;
}
练习8-7
#include<stdio.h>
int combination(int n, int r)
{
if (r == 0 || r == n)
{
return 1;
}
else if (r == 1)
{
return n;
}
else
return combination(n - 1, r - 1) + combination(n - 1, r);
}
int main()
{
int n = 0;
int r = 0;
scanf("%d %d", &n, &r);
printf("%d", combination(n, r));
return 0;
}
练习8-8
#include<stdio.h>
int gcd(int a, int b)
{
if (a < b)
{
int tmp = a;
a = b;
b = tmp;
}
while (a % b != 0) //重要
{
int c = a%b;
a = b;
b = c;
}
return b;
}
int main()
{
int a = 0;
int b = 0;
scanf("%d %d", &a, &b);
printf("%d", gcd(a, b));
return 0;
}
练习8-9
#include<stdio.h>
int main()
{
int cnt = 0;
int ch; //注意
while ((ch = getchar()) != EOF)
{
if (ch == '\n')
{
cnt++;
}
}
printf("%d", cnt);
return 0;
}
练习8-10
#include <stdio.h>
int main()
{
int ch, i, j;
int cnt[10] = { 0 };
while ((ch = getchar()) != EOF)
{
if (ch >= '0' && ch <= '9')
cnt[ch - '0']++; //重要
}
puts("数字字符的出现次数:");
for (i = 0; i < 10; i++)
{
printf("'%d':", i);
for (j = 0; j < cnt[i]; j++)
{
putchar('*');
}
putchar('\n');
}
return 0;
}