Work_5

1.完成猜数字游戏。

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

void Menu(){
    int input;
    printf("***************************\n");
    printf("\t0:结束游戏\n");
    printf("\t1:开始游戏\n");
    printf("***************************\n");
    while (1){
        printf("请输入你的选择:");
        scanf("%d", &input);
        if (input == 1){
            Game();
        }
        else if (input == 0){
            break;
        }
        else {
            printf("你的输入有误!\n");
        }
    }

}

void Game(){
    int aim = 0;
    int guess = rand() % 100 + 1;
    printf("请输入你猜的数字:\n");
    while (1){
        scanf("%d", &aim);
        if (aim == guess){
            printf("你猜对了!\n");
            break;
        }
        else if (aim < guess){
            printf("你猜小了!\n");
        }
        else {
            printf("你猜大了!\n");
        }
    }
}

int main(){
    menu();
    system("pause");
    return 0;
}

2.写代码可以在整型有序数组中查找想要的数.(折半查找)

1)普通方法

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int Find(int arr[], int size, int to_find){
    int i = 0;
    for (i < 0; i < size; i++){
        if (to_find == arr[i]){
            return i;
        }
    }
    return -1;
}

int main(){
    int arr[] = { 1, 2, 3, 4 };
    int size = 0;
    size = sizeof(arr) / sizeof(arr[0]);
    int to_find;
    printf("请输入你要查找的数字:");
    scanf("%d", &to_find);
    int i = Find(arr, size, to_find);
    if (i == -1){
        printf("没找到!\n");
    }
    else{
        printf("找到了!\n");
        printf("数字下标为:%d", i);
    }
    printf("\n");
    system("pause");
    return 0;
}

2)折半查找

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int Binaryfind(int arr[], int size, int to_find){
    int low = 0;
    int high = size - 1;
    int mid = 0;
    //[low,high]是一个待查区间
    while (low <= high){
        mid = (low + high) / 2;
        if (to_find < arr[mid]){
            high = mid - 1;
        }
        else if (to_find > arr[mid] ){
            low = mid + 1;
        }
        else {
            return mid;
        }
    }
    return -1;
}

int main(){
    int to_find;
    printf("请输入你要查找的数字:");
    scanf("%d", &to_find);
    int arr[] = { 1, 2, 3, 4, 5, 6, 7, };
    int size = sizeof(arr) / sizeof(arr[0]);
    int i = Binaryfind(arr, size, to_find);
    if (i == -1){
        printf("找不到!\n");
    }
    else {
        printf("找到了!\n");
        printf("这个数字的下标是:%d", i);
    }
    printf("\n");
    system("pause");
    return 0;
}

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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int Confirm_password(int password[], int input[]){
    if (strcmp(password, input) == 0){
        return 1;
    }
    return 0;
}

int main(){
    char password[100] = "abc123";
    int count = 0;
    char input[100];
    while (count < 3){
        printf("请输入密码:");
        scanf("%s", input);
        int i = Confirm_password(password, input);
        if (i == 1){
            printf("密码正确!\n");
            break;
        }
        else {
            printf("密码错误!\n");
            count++;
        }
    }
    if (count == 3){
        printf("三次输入错误,已退出程序!");
    }
    printf("\n");
    system("pause");
    return 0;
}

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

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int main(){    
        printf("请输入:");
    char input;
    while ((input = getchar()) != EOF){
        if (input >= 'a' && input <= 'z'){
            putchar(input - 32);
            putchar('\n');
        }
        if (input >= 'A' && input <= 'Z'){
            putchar(input + 32);
            putchar('\n');
        }
    }    
    system("pause");
    return 0;
}

EOF :文件结束标记

1)Linux: ctrl + D

2)Window: ctrl + Z 

 

5.阶乘相加

例:1!+ 2!+ 3!+ ...+ 10!

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>

int Factorial(int input){
    int sum = 1;
    for (int i = 2; i <= input; i++){
        sum = sum * i;
    }
    return sum;
}

int main(){
    int input;
    printf("要求几个数的阶乘之和:");
    scanf("%d", &input);
    int sum = 0;
    for (int i = 1; i <= input; i++){
        sum = sum + Factorial(i);
    }
    printf("%d", sum);
    printf("\n");
    system("pause");
    return 0;
}

 

posted @ 2018-12-09 21:49  lkimprove  阅读(123)  评论(0编辑  收藏  举报