1>猜数游戏
思路:需要一个随机种子在每次游戏时产生一个随机数,然后和用户输入的数字进行比较.
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
//菜单:选择进入还是退出游戏
void menu(){
printf("1:play\n");
printf("0:exit\n");
}
//游戏
void game(){
int num = 0;
int guessnum = rand() % 100 + 1;
while (1){
printf("请输入一个1-100整数:");
scanf("%d", &num);
if (num > guessnum){
printf("您输入的数高了\n");
}
else if (num < guessnum){
printf("您输入的数低了\n");
}
else if (num == guessnum){
printf("您猜对了\n");
break;
}
}
}
int main(void){
//time 当前的时间戳
//随机种子
//返回从1970.01.01到现在的系统时间,经过的时间。参数为null,表示不保存返回值
srand((unsigned int)time(NULL));
int input = 0;
do{
menu();
printf("请选择0或1:\n");
scanf("%d", &input);
switch (input){
case 0:
printf("退出游戏\n");
break;
case 1:
game();
break;
default:
printf("您的输入有误,请重新输入:\n");
}
} while (input);
system("pause");
return 0;
}
2>写代码可以在整形有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
思路:只能对有序数组进行二分查找,每次可以缩小一半范围.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//二分查找 arr[]为所给的有序数组,key为要查找的元素,size为arr[]的长度
//若找到要查找的元素,返回其下标.若没找到,返回-1
int binary_search(int arr[],int key,int size){
if (size < 1){
return -1;
}
int left = 0;
int right = size - 1;
while (left <= right){
int mid = (left + right) / 2;
if (key < arr[mid]){
right = mid - 1;
}
else if (key > arr[mid]){
left = mid + 1;
}
else{
return mid;
}
}
return -1;
}
int main(void){
printf("请输入你想查找的元素: \n");
int key = 0;
int size = 0;
scanf("%d", &key);
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
size = sizeof(arr) / sizeof(arr[0]);
int result=binary_search(arr, key, size);
printf("%d\n", result);
system("pause");
return 0;
}
3>编写代码模拟三次密码输入的场景.
最多能输入三次密码,密码正确,提示“登录成功”.密码错误,可以重新输入,最多输三次.三次均错,则提示退出程序
思路:使用strcmp()进行字符串比较.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){
int i = 0;
for (i = 0; i < 3; ++i){
char password[20] = { 0 };
printf("请输入密码:");
scanf("%s", password);
if (strcmp(password, "123abc") == 0){
break;
}
}
if (i == 3){
printf("您的机会已用完,禁止登录。\n");
}
else{
printf("登录成功\n");
}
system("pause");
return 0;
}
4>编写一个程序,可以一直接收键盘字符,如果是小写字符就输出对应的大写字符,如果接收的是大写字符,就输出对应的小写字符,如果是数字不输出.
思路:使用ch = getchar()从键盘读入数据,转换大小写字符使用ascii码.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void){
char ch=0;
while ((ch = getchar()) != EOF){
if (ch>='a'&&ch<='z'){
printf("%c\n", ch - 32);
}
else if (ch >= 'A'&&ch <= 'Z'){
printf("%c\n", ch + 32);
}
else if (ch >= '0'&&ch <= '9')
{
;
}
}
system("pause");
return 0;
}