###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;
}