明解C语言中级篇练习代码------第七章

这篇博客主要介绍了在使用code:blocks进行C语言中级篇第七章练习时遇到的问题,即头文件中包含getch/putch函数,但未引入"conio.h"或自定义的"getputch.h"。博主列举了从练习7-1到7-8的所有练习,并提到在尝试加入"getputch"头文件后遇到了编译错误,特别是在Windows系统上。博主寻求帮助,希望了解导致错误的原因。
摘要由CSDN通过智能技术生成

code:blocks的头文件好像包含了getch/putch函数,所以需要加"c下面的练习代码都没有加"conio.h" 或书中的自定义头文件"getputch.h"。

练习7-1

//"寻找幸运数字“的程序中用了scanf函数来处理玩家从键盘输入的信息。使用”getputch.h"库改写程序,以便通过getch函数来处理玩家从键盘输入的信息。

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

#define MAX_STAGE	10
#define swap(type, x, y)	do { type t = x; x = y; y = t; } while (0)

int main(void)
{
   
	int i, j, stage;
	int dgt[9] = {
   1, 2, 3, 4, 5, 6, 7, 8, 9};
	int a[8];
	double jikan;
	clock_t start, end;

	srand(time(NULL));

	printf("请输入缺少的数字。\n");

	start = clock();
	for (stage = 0; stage < MAX_STAGE; stage++) {
   
		int x = rand() % 9;
		int no;

		i = j = 0;
		while (i < 9) {
   
			if (i != x)
				a[j++] = dgt[i];
			i++;
		}

		for (i = 7; i > 0; i--) {
   
			int j = rand() % (i + 1);
			if (i != j)
				swap(int, a[i], a[j]);
		}

		for (i = 0; i < 8; i++)
			printf("%d ", a[i]);
		printf(":");

		do {
   
			no = getch();               //注意getch函数读取的是字符型,所以要-'0'才能显示出对应数字
			printf("%d ",no-'0');
		} while (no != dgt[x]+'0');

		printf("\n");
	}
	end = clock();

	jikan = (double)(end - start) / CLOCKS_PER_SEC;

	printf("用时%.1f秒。\n", jikan);

	if (jikan > 25.0)
		printf("反应太慢了。\n");
	else if (jikan > 20.0)
		printf("反应有点慢呀。\n");
	else if (jikan > 17.0)
		printf("反应还行吧。\n");
	else
		printf("反应真快啊。\n");

	return 0;
}

练习7-2

//改写程序,把在上一练习中生成的“寻找幸运数字”中用于出题的数字由1~9更改为0~9

#include <time.h>
#include <stdio.h>
#include <stdlib.h>

#define MAX_STAGE	10
#define swap(type, x, y)	do { type t = x; x = y; y = t; } while (0)

int main(void)
{
   
	int i, j, stage;
	int dgt[10] = {
   0, 1, 2, 3, 4, 5, 6, 7, 8, 9};       // 数组加数组0同时元素个数增加
	int a[9];                                           //改
	double jikan;
	clock_t start, end;

	srand(time(NULL));

	printf("请输入缺少的数字。\n");

	start = clock();
	for (stage = 0; stage < MAX_STAGE; stage++) {
   
		int x = rand() % 10;                          //改
		int no;

		i = j = 0; 
		while (i < 10) {
                                 //改
			if (i != x)
				a[j++] = dgt[i];
			i++;
		}

		for (i = 8; i > 0; i--) {
                        //改
			int j = rand() % (i + 1);
			if (i != j)
				swap(int, a[i], a[j]);
		}

		for (i = 0; i < 9; i++)                       //改
			printf("%d ", a[i]);
		printf(":");

		do {
   
			no = getch();           
			printf("%d ",no-'0');
		} while (no != dgt[x]+'0');

		printf("\n");
	}
	end = clock();

	jikan = (double)(end - start) / CLOCKS_PER_SEC;

	printf("用时%.1f秒。\n", jikan);

	if (jikan > 25.0)
		printf("反应太慢了。\n");
	else if (jikan > 20.0)
		printf("反应有点慢呀。\n");
	else if (jikan > 17.0)
		printf("反应还行吧。\n");
	else
		printf("反应真快啊。\n");

	return 0;
}

练习7-3

//改写程序,把List 7-11的“寻找重复数字”中用于出题的数字由1~9更改成0~9。

#include <ctype.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>

#define MAX_STAGE	10
#define swap(type, x, y)	do { type t = x; x = y; y = t; } while (0)

int main(void)
{
   
	int i, j, x, stage;
	int dgt[10] = {
   0, 1, 2, 3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值