C语言入门程序(一)

一入代码深似海,从此妹子是路人.

经过一段时间的学习和了解,大家对C语言有了一部分认知和理解,无论是简单的printf输出函数,for循环语句,switch选择语句,数组等等,大家都有了第一印象,那么,这时候就该将理论知识运用到实践中,所以,为大家带来一些相对之前稍难的一些题目.在这里,我们也要慢慢接触到函数这个概念.

 

(一)猜数字游戏

要求使用C语言编写一个简单的猜数字游戏.

游戏过程为:玩家输入数字,系统判定正确与否,然后做出相应回应,大则提示猜大了,小则提示猜小了,正确则退出程序.

思考过程:

1)首先需要有一个随机数

2)判断大小,让系统能够进行相应的提示

3)循环的建立和跳出条件的设定

int menu(){//菜单函数,给与玩家信息,如何开始如何退出
	printf("***************************\n");
	printf("**********数字游戏*********\n");
	printf("**1:开始游戏***0:退出游戏**\n");
	printf("***************************\n");
	printf("请输入您的选择\n");
	int choice = 0;
	scanf("%d", &choice);
	return choice;
}
void game(){//game函数,游戏主要部分
	int random_num = rand() % 100 + 1;//使用random函数生成一个1~100之间的随机数
	int input = 0;
	while (1){//简单的逻辑判断,这里不需要过多解释
		printf("请输入需要猜的数字:\n");
		scanf("%d", &input);
		if (input > random_num){
			printf("猜大了\n");
		}
		else if (input < random_num){
			printf("猜小了\n");
		}
		else{
			printf("恭喜你猜对了\n");
			break;
		}
	}
}

int main(){
	int input = 0;
	int choose = menu();
	switch (choose)
	{
	case 1:
		game();
		break;
	case 0:
		printf("退出游戏\n");
		break;
	default:
		printf("请重新输入:\n");
	}
	system("pause");
	return 0;
}

(二)在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)

思考过程:首先查找的数组是一个有序数组.要求是如果找到了,就返回下标,找不到返回-1.后面还说到了折半查找,也就是常说的二分查找.每次与数组中间的值进行比较,通过这个逐渐缩短范围.

int main(){
	int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };//定义有序数组
	int to_find = 14;//需要找的值
	int left = 0;
	int reight = sizeof (arr) / sizeof arr[0] - 1;//数组最后一个成员下标
	while (left <= reight){
		int mid = (left + reight) / 2;//找到数组中间成员下标
		if (to_find == arr[mid]){
			printf("找到了,下标是:");
			printf("%d\n", mid);
			break;
		}
		if (to_find > arr[mid]){
			left = mid + 1;
		}
		if (to_find < arr[mid]){
			reight = mid - 1;
		}
	}
	if (left>reight){
		printf("没找到,返回-1\n");
	}
	system("pause");
	return 0;
}

难点:

1)数组中间下标的确定

2)明白逻辑:如果比中间元素小,reight = mid - 1;如果比中间元素大left = mid + 1

 

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

思考过程:

1)需要设置一个密码

2)条件判断:正确,输出登陆成功,错误,重新输入

3)错误次数垒加,达到三次则退出程序

int Is_true(){//这里我定义了一个验证函数
	int secret = 0;
	int sum = 0;//垒加数,防止密码错误次数超过三次
	scanf("%d", &secret);//设置密码
	printf("请验证您的密码:\n");//提示验证
	while (1){
		int test_secret = 0;
		scanf("%d", &test_secret);
		if (test_secret == secret){
			return 1;//若密码正确,返回1
		}
		else{
			printf("密码错误,请重新输入:\n");
			sum++;
			if (sum == 3){
				return 0;//若密码错误且错误次数达到三次,返回0
			}
		}
	}
}
int main(){
	int secret = 0;
	int choice = 0;
	printf("请输入设置您的密码:\n");
	choice = Is_true();
	switch (choice)//根据验证函数返回的值输出对应的语句
	{
	case 1:
		printf("登录成功\n");
		break;
	case 0:
		printf("登录超时\n");
		break;
	}
	system("pause");
	return 0;
}

 

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

思考过程:首先需要接受一个键盘字符,然后根据不同的条件作出不同的输出.所以方法如下:

1)接收字符

2)判断:小写字符返回相应的大写字符,大写字符返回相应的小写字符,数字不输出

int main(){
		char num = getchar();//从键盘上获取一个字符
		printf("%c\n", num);//输出这个字符,验证一下
		if (num >= 'a' && num <= 'z'){//小写字符则输出对应的大写字符
			printf("%c\n", num - 32);
		}
		else if (num >= 'A'&&num <= 'Z'){//大写字符则输出对应的小写字符
			printf("%c\n", num + 32);
		}
		else{//不是上两种直接返回0,不输出
			return 0;
		}
	system("pause");
	return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值