明解C语言(中级篇)第一章

1、练习1-1

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

int main(void)
{
	int ans;
	int retry;
	srand(time(NULL));
	do{
		ans = rand()%7;
		switch(ans){
			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; 
		}
		printf("再运行一次?继续按1;退出按0\n");
		scanf("%d",&retry);
	}while(retry==1); 
    return 0;
}

2、练习1-2

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

int main(void)
{
	int ans;
	int retry;
	srand(time(NULL));
	do{
		ans = rand()%7;
		int i=0;
		while(i<7){
			if(ans<=3||i>5){
				switch(ans){
					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; 
				}
				if(ans<=3){
					break;
				}
				i++;
			}
			else{
				i++;	
			}			
		}
		printf("再运行一次?继续按1;退出按0\n");
		scanf("%d",&retry);
	}while(retry==1); 
    return 0;
}

3、练习1-3\

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

int main(void)
{
	int ans;
	int i=1;
	int retry;
	srand(time(NULL));
	do{
		ans = rand()%1999-999;
		printf("请猜测-999~999之间的一个数字?\n");
		scanf("%d",&retry);
		if(retry==ans){
			printf("恭喜你猜对了!!!\n");
			break;
		} 
		else{
			printf("请继续努力!!!\n");
			printf("还有%d次机会!!!\n",5-i);	
			i++;
		}
	}while(retry!=ans&&i<=5); 
    return 0;
}

4、练习1-4

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

wanfa1(){
	int ans;
	int i=1;
	int retry;
	srand(time(NULL));
	ans = rand()%900+3;
	while(1){
		if(ans%3==0){
			printf("目标数字为%d\n",ans);
			break;	
		}
		else{
			ans--;
		}
	}	
	do{
		printf("请猜一个3的倍数:");
		scanf("%d",&retry);
		if(retry%3!=0){
			printf("您输入错误!!!\n");
			break;
		} 
	}while(retry!=ans); 
} 
wanfa2(){
	int ans;
	int i=1;
	int retry;
	srand(time(NULL));
	ans = rand()%900+3;
	while(1){
		if(ans%3==0){
			printf("目标数字为%d\n",ans);
			break;	
		}
		else{
			ans--;
		}
	}
	do{
		printf("请猜一个3的倍数:");
		scanf("%d",&retry);
		if(retry!=ans){
			printf("请继续努力!!!\n");
			printf("还有%d次机会!!!\n",5-i);	
			i++;
		}
		else{
			printf("恭喜你猜对了。\n");
		}
	}while(retry!=ans&&i<=5); 	
}
int main(void)
{
	int a;
	printf("请选择玩法:1;2。\n");
	scanf("%d",&a);
	switch(a){
		case 1:
			wanfa1();
			break;
		case 2:
			wanfa2();
			break;
	}
    return 0;
}

5、练习1-5

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

int main(void)
{
	int ans,ans1,ans2;
	int i;
	int retry;
	srand(time(NULL));
	ans1 = rand();
	ans2 = rand();
	if(ans1<=ans2){
		ans=rand()%(ans2-ans1)+ans1;
		i=rand()%(ans2-ans1)+ans1;
		printf("目标数字为:%d\n",ans);	
		printf("请猜测%d~%d之间的一个数字?\n",ans1,ans2);					
	}
	else{
		ans=rand()%(ans1-ans2)+ans2;
		i=rand()%(ans1-ans2)+ans2;
		printf("目标数字为:%d\n",ans);
		printf("请猜测%d~%d之间的一个数字?\n",ans2,ans1);						
	}
	do{
		scanf("%d",&retry);
		if(retry==ans){
			printf("恭喜你猜对了!!!\n");
			break;
		} 
		else{
			printf("请继续努力!!!\n");
			printf("还有%d次机会!!!\n",i);	
			i--;
		}
	}while(retry!=ans&&i>0); 
    return 0;
}

6、练习1-6

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

nandu1(){
	int ans;
	int retry;
	srand(time(NULL));
	ans = rand()%10+1;
	do{
		printf("请猜1~9之间的数:");
		scanf("%d",&retry);
		if(retry!=ans){
			printf("请重新输入!!!\n");
		} 
		else{
			printf("猜对了!!!\n");			
		} 
	}while(retry!=ans); 
} 
nandu2(){
	int ans;
	int retry;
	srand(time(NULL));
	ans = rand()%90+10;
	do{
		printf("请猜10~99之间的数:");
		scanf("%d",&retry);
		if(retry!=ans){
			printf("请重新输入!!!\n");
		}
		else{
			printf("猜对了!!!\n");			
		} 
	}while(retry!=ans); 
} 
nandu3(){
	int ans;
	int retry;
	srand(time(NULL));
	ans = rand()%900+100;
	do{
		printf("请猜100~999之间的数:");
		scanf("%d",&retry);
		if(retry!=ans){
			printf("请重新输入!!!\n");
		}
		else{
			printf("猜对了!!!\n");			
		}  
	}while(retry!=ans); 
} 
nandu4(){
	int ans;
	int retry;
	srand(time(NULL));
	ans = rand()%9000+1000;
	do{
		printf("请猜1000~9999之间的数:");
		scanf("%d",&retry);
		if(retry!=ans){
			printf("请重新输入!!!\n");
		} 
		else{
			printf("猜对了!!!\n");			
		} 
	}while(retry!=ans); 
} 
int main(void)
{
	int a;
	printf("请选择难度:1,2,3,4\n");
	scanf("%d",&a);
	switch(a){
		case 1:
			nandu1();
			break;
		case 2:
			nandu2();
			break;
		case 3:
			nandu3();
			break;
		case 4:
			nandu4();
			break;				
	}
    return 0;
}

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

8、练习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;
	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;
}
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值