练习8-1

#include<stdio.h>
#define diff(x,y)(x-y) int main() {
int x;
int y;
printf("x=");
scanf("%d", &x);
printf("y=");
scanf("%d", &y);
printf("%d", diff(x, y)); }

练习8-2

#include <stdio.h>
#define max(x,y) ((x)>(y)?x:y) int main() {
int a, b, c, d;
int max1, max2;
printf("请输入a b c d 的值:\n");
scanf("%d",&a);
scanf("%d", &b);
scanf("%d", &c);
scanf("%d", &d);
max1 = max(max(a, b), max(c, d)); //这个表达式的意思是先求出a,b一组和c,d一组中的较大值,再比较两个较大值求最大值
printf("最大值是%d", max1);
putchar('\n');
max2 = max(max(max(a, b), c), d); //意思是依次比较a和b的较大值,再用较大值依次比较c,d,而求出最大值
printf("最大值是%d", max2); }

练习8-3

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

练习8-4

#include <stdio.h>
#define number 6 void bsort(int n, int v[]) {
int i, j;
for (i = ; i < n - ; i++) {
for (j = n - ; j > i; j--) {
if (v[j - ] < v[j]) {
int tem = v[j];
v[j] = v[j - ];
v[j - ] = tem;
}
}
}
} int main() {
int i;
int v[number]; for (i = ; i < number; i++) {
printf("v[%d]=", i);
scanf("%d", &v[i]);
}
putchar('\n'); bsort(number, v);
for (i = ; i < number; i++)
{
printf("v[%d]=%d\n", i, v[i]);
} }

练习 8-5

#include <stdio.h>
enum season{春,夏,秋,冬,Invaild}; enum season select(void) {
int tmp;
do {
printf("0...春 1...夏 2...秋 3...冬 4...结束");
scanf("%d", &tmp);
} while (tmp< 春 || tmp> Invaild);
return tmp;
} int main(void) {
enum season selected;
do {
switch (selected=select())
{
case 春:break;
case 夏:break;
case 秋:break;
case 冬:break; } } while (selected != Invaild);
return ; }

练习8-6

#include <stdio.h>

int factorial(int n) {
int i ;
int sum = ;
for (i = ; i <= n; i++) {
sum*=i;
}
return sum;
}
int main() {
int x;
printf("请输入一个数:");
scanf("%d", &x);
printf("它的阶乘是:%d", factorial(x));
}

练习8-7

#include <stdio.h>

int factorial(int n)
{
if (n > )
return n * factorial(n - );
else
return ;
} int combination(int n, int r) { if (n > )
return factorial(n) / (factorial(r) * factorial(n - r));
else
return ;
}
int main() {
int n;
int r;
printf("n=");
scanf("%d", &n);
printf("r=");
scanf("%d", &r);
printf("%d", combination(n, r));
}

练习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 ;
}

练习8-9

/*---计算标准输入中出现的行数---*/

#include <stdio.h>

int main(void)
{
int ch, i = ; while ((ch = getchar()) != EOF) {
if (ch == '\n') i++;
}
printf("%d", i); return ; }

练习8-10

#include <stdio.h>

int main(void)
{
int i, ch,j;
int cnt[] = { }; while ((ch = getchar()) != EOF) {
if (ch >= '' && ch <= '')
cnt[ch - '']++; }
puts("数字字符的出现次数");
for (i = ; i < ; i++) {
printf("'%d':", i);
for (j = ; j < cnt[i]; j++) {
putchar('*'); }putchar('\n');
}
return ;
}

明解C语言 入门篇 第八章答案的更多相关文章

  1. 明解C语言 入门篇 第二章答案

    练习2-1 #include <stdio.h> int main() { int x; int y; int percent; puts("请输入两个整数"); pr ...

  2. 明解C语言 入门篇 第一章答案

    练习1-1 #include <stdio.h> int main() { int a; a = 15; int b; b = 37; int c; c = a - b; printf(& ...

  3. 明解C语言 入门篇 第十章答案

    练习10-1 #include <stdio.h> void adjust_point(int*n) { ) *n = ; ) *n = 0; } int main() { int x; ...

  4. 明解C语言 入门篇 第九章答案

    练习9-1 /* 将字符串存储在数组中并显示(其2:初始化) */ #include <stdio.h> int main(void) { char str[] = "ABC\0 ...

  5. 明解C语言 入门篇 第五章答案

    练习5-1 /* 依次把1.2.3.4.5 赋值给数组的每个元素并显示(使用for语句) */ #include <stdio.h> int main(void) { int i; ]; ...

  6. 明解C语言 入门篇 第四章答案

    练习4-1 #include <stdio.h> int main(void) { int no; int x; do{ printf("请输入一个整数:"); sca ...

  7. 明解C语言 入门篇 第三章答案

    练习3-1 #include <stdio.h> int main() { int x; int y; puts("请输入两个整数."); printf("整 ...

  8. 明解C语言 入门篇 第十三章答案

    练习13-1 /* 打开与关闭文件 */ #include <stdio.h> int main(void) { ]; FILE* fp; printf("请输入你要打开的文件& ...

  9. 明解C语言 入门篇 第十二章答案

    练习12-1 /* 用表示学生的结构体来显示高尾的信息 */ #include <stdio.h> #define NAME_LEN 64 /* 姓名的字符数 */ /*=== 表示学生的 ...

随机推荐

  1. Java_map的key为自定义对象

    首先自定义Key对象 import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import java ...

  2. 《Web Development with Go》Middleware之使用gorilla.handlers

    可以方便的使用日志和压缩等功能. package main import ( "fmt" "log" "net/http" "os ...

  3. day99_12_3numpy的索引以及pandas的两个数据结构。

    一.索引与切片. nump的索引和python中的索引差不多,都是左开右闭区间. 如一个普通的array的索引,是由0开始的: res = np.array([1,2,3,4,5]) #### npa ...

  4. [译]Vulkan教程(21)顶点input描述

    [译]Vulkan教程(21)顶点input描述 Vertex input description 顶点input描述 Introduction 入门 In the next few chapters ...

  5. IT兄弟连 HTML5教程 HTML5表单 HTML5新增表单元素

    HTML5有一些新的表单元素:<datalist>.<keygen>.<output>.不是所有的浏览器都支持HTML5新的表单元素,但即使浏览器不支持该表单属性, ...

  6. go语言之用户输入&类型别名&类型转换

    1.用户输入 package main import "fmt" func main() { //用户输入,程序接受并输出 var v1 int //fmt.Println(&qu ...

  7. linux命令--基本权限命令

    一.权限介绍 使用ls命令查看时,发现长格式显示的第一列就是文件的权限 权限位一共有 10 位,这 10 位权限位的含义如下图所示. 第 1 位代表文件类型.Linux 不像 Windows 使用扩展 ...

  8. oracle相邻表记录交换(单双两两交换)

    在博客园的博问中看到了一个这样的提问:一个表中有id和name两个字段,id是连续非空不重复的,想要交换相邻表记录的name值(单双两两交换). 另外,如果最后的单独行没有对应的下一行匹配记录的话,就 ...

  9. Grafana+Prometheus 监控 MySQL

    转自:Grafana+Prometheus 监控 MySQL 架构图 环境 IP 环境 需装软件 192.168.0.237 mysql-5.7.20 node_exporter-0.15.2.lin ...

  10. MySql Navicat可视化工具

    下载链接 链接:https://pan.baidu.com/s/1ca5KbpCFc4UbcYkXZDu6aA 提取码:8nku 安装比较简单,选完安装路径,下一步即可 Navicat for MyS ...