2017-11-19 test5

###1.完成猜数字游戏。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu(){
   printf("*******************************************\n");
   printf("****   1.play ********** 0.exit   *********\n");
   printf("*******************************************\n");

}
int game(){
	int input=0;  
	int num=rand()%100+1;   //设定随机数范围为1-100
	    
	printf("************来来来,猜一波***************\n");
	while(1){
		printf("你猜吧-_-\n");    //输入值
	    scanf("%d",&input);
		if (input==num){
	 printf("你猜对了,congratulations!");    //猜对跳出循环  
	 break;
		}
		else if (input>num){
			printf("猜的大了\n");            //猜错情况
		}
		else if (input<num){
			printf("猜得小了\n");
		}
	}
return 0;
}

int main(){
	int i=0;
		srand((unsigned)time(NULL));    //由时间控制随机数
	do {
		menu();
		scanf("%d",&i);
		switch(i){
			case 1:
				game();
				break;
			case 0:
				return 0;
					
			default:
				printf("你输错啦\n");
				break;
		}
	}
	while (i);
	return 0;
	
}

###2.写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int fun(int i,int *ch1,int sz){
	//算出数组的首个元素和最后一个元素的下标.
	int low = 0;
	int high = sz-1;
	//设定一个循环,在循环内确定中间位置的元素下标,并用key值与之比较,key小于中间元素说明key在中间元素左侧,将high重新定义成mid-1;key大于中间元素说明key在中间元素右侧,将low重新定义成mid+1;如果key等于中间元素则表示找到。
		while (low <= high){
			int mid = low+(high-low)/2;
			if (ch1[mid] == i){
				return mid;
			}
			else if (ch1[mid] > i){
				high = mid - 1;
			}
			else {
				low = mid + 1;
			}
		}
		if (low > high){
		 return (-1);
		}
		return 0;
}
	
int main(){
     //创建数组,并算出数组的长度
	int ch[10]={1,2,3,4,5,6,7,8,9,10};
	int size = sizeof(ch)/sizeof (ch[0]);
	 //输入要查找的数字
	int key=0;
	printf("请输入你要查找的元素,如果查到将返回其下标\n");
	scanf("%d",&key);
	//调用函数
	fun(key,ch,size);
	//根据函数的返回值判断是否找到,返回值为非负表示找到且返回值为下标,返回值为-1表示没有找到
	if (fun(key,ch,size)>=0){
		printf("找到了,下标是%d\n",fun(key,ch,size));
	}
	else if (fun(key,ch,size)==(-1)){
		printf("没有找到\n");
	}
	return 0;
}

###3.编写代码模拟三次密码输入的场景。
最多能输入三次密码,密码正确,提示“登录成功”,密码错误,可以重新输入,最多输入三次。三次均错,则提示退出程序。

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
int land(){
	//定义一个变量i,为剩余输入密码次数,i>0时有输入密码的机会,输入正确,提示进入系统;输入错误,提示输入次数与剩余输入次数。若i=0,提示退出系统。
	int i = 3;
	char ch[10]={'h','e','l','l','o','1','2','3','\0'};
	char input[10]={0};
	while (i){
		printf("准备登录您的用户,请输入密码:\n");
		scanf("%s",input);
		if (!strcmp(ch,input)){
			return 0;
		}
		else {
			i--;
			printf("您输入的有误,剩余输入次数为%d\n",i);
		}
	}
	if (i == 0){
	return (-1);
}
	return 0;
}






int main(){
	//调用函数
	int i=land();
	//如果返回值为0,提示登录成功,进入系统;返回值为-1,提示登录失败,退出系统.
	if (i == 0){
		printf("登录成功!\n");
	}
	else if (i == (-1)){
		printf("您的输入次数已尽,系统将自动退出\n");
	exit (1);
	}
	return 0;
}

###4.编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int fun(char i){		
	
	if (i>='a'&&i<='z'){
		i=i-32;               //字符对应ASCII码值在‘a’到‘z’间,减去32,对应大写的ASCII码值
		printf("%c",i);
	}
	else if (i>='A'&&i<='Z'){
		i=i+32;
		printf("%c",i);
	}

	return 0;
}
int main(){
	//定义一个接收字符的变量
	char ch=0;
	//当ch不为文件结尾符时执行循环,调用函数
	while((ch=getchar()) != EOF)
    fun (ch);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值