明解C语言中级篇练习题第一章

练习1-1

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

int main(void)
{
	int qian;
	srand(time(NULL));//seed
	qian = rand()%7;//generate 0~6 random value
	switch(qian)
	{
		case 0: puts("大吉");break;
		case 1: puts("中吉");break;
		case 2: puts("小吉");break;
		case 3: puts("吉");break;
		case 4: puts("末吉");break;
		case 5: puts("凶");break;
		case 6: puts("大凶");break;
	}
	return 0;
}
练习1-2
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	int qian;
	int i = 0;
	srand(time(NULL));//seed
	qian = rand()%7;//generate 0~6 random value
	while((qian>=4)&&(i<2))//calculate again
	{
		qian = rand()%7;
		i++;
	}
	switch(qian)
	{
		case 0: puts("大吉");break;
		case 1: puts("中吉");break;
		case 2: puts("小吉");break;
		case 3: puts("吉");break;
		case 4: puts("末吉");break;
		case 5: puts("凶");break;
		case 6: puts("大凶");break;
	}
	return 0;
}
练习1-3
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	int obj;
	int opp = 1;
	int guess;
	//int i = 0;
	srand(time(NULL));//seed
	obj = rand()%1999-999;//generate -999~999 random value
	do
	{
		printf("input the number you guess(-999~999):");
		scanf("%d",&guess);
		opp++;
		if(guess>obj)
			printf("a smaller value needed!\n");
		else
			if(guess<obj)
				printf("a larger value needed!\n");
	}while((guess!=obj)&&opp!=10);
	if(guess==obj)
		printf("Congratulations!\n");
	else
		printf("Game Over!\n");
	return 0;
}
练习1-4
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
	int obj;
	int mode;
	int guess;
	srand(time(NULL));
	obj = (rand()%333 + 1)*3;
	printf("input game mode(0/1)\n");
	scanf("%d",&mode);
	if(mode==0)
	{
		printf("input the number you guess:");
		scanf("%d",&guess);
		if(guess%3!=0)
			printf("game over!");
		else
			if(guess!=obj)
				printf("game over!");
			else
				printf("bingo!");
	}
	else
	{
		int i=0;
		printf("input the number you guess:");
		scanf("%d",&guess);
		while((i<10)&&(guess!=obj))
		{
			printf("input the number you guess:");
			scanf("%d",&guess);
		    i++;
		}
		if(guess!=obj)
			printf("game over!");
		else
			printf("bingo!");
	}
	return 0;
}
练习1-5
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int main(void)
{
	int a;
	int b;
	int tmp;
	int guess;
	int obj;
	int iopp = 1;
	int opp;
	srand(time(NULL));
	a = rand();
	b = rand();
	if(a>b)
	{
		tmp = b;
		b = a;
		a = tmp;
	}
	obj = rand()%(b-a) + a;
	printf("guess between %d and %d\n",a,b);
	do
	{
		opp = pow(2.0,iopp);
		iopp++;
	}while(opp < (b - a));
	
	do
	{
		printf("opptunity left %d\n",iopp);
		printf("input the number you guess:");
		scanf("%d",&guess);
		if(guess > obj)
			printf("smaller number needed!\n");
		else
			if(guess < obj)
				printf("larger number needed!\n");
			else
				printf("bingo!");
		iopp--;
	}while((iopp!=0)&&(guess!=obj));
}
练习1-6
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>

int main(void)
{
	int level;
	int a;
	int b;
	int tmp;
	int guess;
	int obj;
	int iopp = 1;
	int opp;
	printf("select level\n1...1~9\n2...1~99\n3...1~999\n4...1~9999\n");
	scanf("%d",&level);
	switch(level)
	{
		case 1: a = 1;b = 9;break;
		case 2: a = 1;b = 99;break;
		case 3: a = 1;b = 999;break;
		case 4: a = 1;b = 9999;break;
	}
	srand(time(NULL));
	obj = rand()%(b - a + 1) + a;
	printf("guess between %d and %d\n",a,b);
	do
	{
		opp = pow(2.0,iopp);
		iopp++;
	}while(opp < (b - a));
	
	do
	{
		printf("opptunity left %d\n",iopp);
		printf("input the number you guess:");
		scanf("%d",&guess);
		if(guess > obj)
			printf("smaller number needed!\n");
		else
			if(guess < obj)
				printf("larger number needed!\n");
			else
				printf("bingo!");
		iopp--;
	}while((iopp!=0)&&(guess!=obj));
	printf("game over!");
}
练习1-7
/* 猜数游戏(其五:显示输入记录)*/

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

#define MAX_STAGE	10		/* 最多可以输入的次数 */

int main(void)
{
	int i;
	int stage;				/* 已输入的次数 */
	int no;					/* 读取的值 */
	int ans;				/* 目标数字 */
	int num[MAX_STAGE];		/* 读取的值的历史记录 */

	srand(time(NULL));		/* 设定随机数的种子 */
	ans = rand() % 1000;	/* 生成0~999的随机数 */

	printf("请猜一个0~999的整数。\n\n");

	stage = 0;
	do {
		printf("还剩%d次机会。是多少呢:", MAX_STAGE - stage);
		scanf("%d", &no);
		num[stage++] = no;			/* 把读取的值存入数组 */

		if (no > ans)
			printf("\a再小一点。\n");
		else if (no < ans)
			printf("\a再大一点。\n");
	} while (no != ans && stage < MAX_STAGE);

	if (no != ans)
		printf("\a很遗憾,正确答案是%d。\n", ans);
	else {
		printf("回答正确。\n");
		printf("您用了%d次猜中了。\n", stage);
	}

	puts("\n--- 输入记录 ---");
	for (i = 0; i < stage; i++)
		printf(" %2d : %4d %4d\n", i + 1, num[i], num[i] - ans);

	return 0;
}
练习1-8
/* 猜数游戏(其五:显示输入记录)*/

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

#define MAX_STAGE	10		/* 最多可以输入的次数 */

int main(void)
{
	int i;
	int stage;				/* 已输入的次数 */
	int no;					/* 读取的值 */
	int ans;				/* 目标数字 */
	int num[MAX_STAGE];		/* 读取的值的历史记录 */

	srand(time(NULL));		/* 设定随机数的种子 */
	ans = rand() % 1000;	/* 生成0~999的随机数 */

	printf("请猜一个0~999的整数。\n\n");

	stage = 0;
	for(stage = 0;stage<MAX_STAGE;stage++)
	{
		printf("还剩%d次机会。是多少呢:", MAX_STAGE - stage);
		scanf("%d", &no);
		num[stage] = no;			/* 把读取的值存入数组 */

		if (no > ans)
			printf("\a再小一点。\n");
		else if (no < ans)
			printf("\a再大一点。\n");
		else 
			break;
	} 
	if (no != ans)
		printf("\a很遗憾,正确答案是%d。\n", ans);
	else {
		printf("回答正确。\n");
		printf("您用了%d次猜中了。\n", stage);
	}

	puts("\n--- 输入记录 ---");
	for (i = 0; i < stage; i++)
		printf(" %2d : %4d %4d\n", i + 1, num[i], num[i] - ans);

	return 0;
}

猜你喜欢

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