明解C语言 中级篇 第一章答案

练习1-1

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

int main() {
    srand(time(0));
    int anw = rand() % 7;
    printf("您的签运是:");
    switch (anw) {
    case 0:printf("大吉"); break;
    case 1:printf("吉"); break;
    case 2:printf("小吉"); break;
    case 3:printf("吉"); break;
    case 4:printf("末吉"); break;
    case 5:printf("凶"); break;
    case 6:printf("大凶"); break;
    }
}

练习1-2

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

int main() {
    srand(time(0));
    int anw = rand() %10;
    printf("您的签运是:");
    switch (anw) {
    case 0:
    case 1:printf("大吉"); break;
    case 2:
    case 3:printf("吉"); break;
    case 4:
    case 5:
    case 6:printf("小吉"); break;
    case 7:printf("末吉"); break;
    case 8:printf("凶"); break;
    case 9:printf("大凶"); break;
    }
}

练习1-3

/* 猜数游戏(其五:显示输入记录)*/

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

#define MAX_STAGE    12        /* 最多可以输入的次数 */

int main(void)
{
    int i;
    int stage;                /* 已输入的次数 */
    int no;                    /* 读取的值 */
    int ans;                /* 目标数字 */
    int num[MAX_STAGE];        /* 读取的值的历史记录 */

    srand(time(NULL));        /* 设定随机数的种子 */
    ans = rand() % 1998-999;    /* 生成-999~999的随机数 */

    printf("请猜一个-999~999的整数。\n\n");

    stage = 0;
    do {
        printf("还剩%d次机会。是多少呢:", MAX_STAGE - stage);
        scanf("%d", &no);
        num[stage++] = no;            /* 把读取的值存入数组 */

        if (no > ans)
            printf("\a再小一点。\n");
        else if (no < ans)
            printf("\a再大一点。\n");
    } while (no != ans && stage < MAX_STAGE);

    if (no != ans)
        printf("\a很遗憾,正确答案是%d。\n", ans);
    else {
        printf("回答正确。\n");
        printf("您用了%d次猜中了。\n", stage);
    }

    puts("\n--- 输入记录 ---");
    for (i = 0; i < stage; i++)
        printf(" %2d : %4d %+4d\n", i + 1, num[i], num[i] - ans);

    return 0;
}

练习1-4

/* 猜数游戏(其五:显示输入记录)*/

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

#define MAX_STAGE    12        /* 最多可以输入的次数 */

int main(void)
{
    int i;
    int stage;                /* 已输入的次数 */
    int no;                    /* 读取的值 */
    int ans;                /* 目标数字 */
    int num[MAX_STAGE];        /* 读取的值的历史记录 */

    srand(time(NULL));        /* 设定随机数的种子 */
    ans = 3*(rand() %333)+3;    /* 生成3~999之间3的倍数的随机数 */

    printf("请猜一个3~999的而且是3的倍数整数。\n\n");

    stage = 0;
    do {
        printf("还剩%d次机会。是多少呢:", MAX_STAGE - stage);
        scanf("%d", &no);
        while(no % 3 != 0) {      
            printf("请输入3的倍数:");
            scanf("%d", &no);
        }
    
        num[stage++] = no;            /* 把读取的值存入数组 */

        if (no > ans)
            printf("\a再小一点。\n");
        else if (no < ans)
            printf("\a再大一点。\n");
    } while (no != ans && stage < MAX_STAGE);

    if (no != ans)
        printf("\a很遗憾,正确答案是%d。\n", ans);
    else {
        printf("回答正确。\n");
        printf("您用了%d次猜中了。\n", stage);
    }

    puts("\n--- 输入记录 ---");
    for (i = 0; i < stage; i++)
        printf(" %2d : %4d %+4d\n", i + 1, num[i], num[i] - ans);

    return 0;
}
/* 猜数游戏(其五:显示输入记录)*/

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

#define MAX_STAGE    12        /* 最多可以输入的次数 */

int main(void)
{
    int i;
    int stage;                /* 已输入的次数 */
    int no;                    /* 读取的值 */
    int ans;                /* 目标数字 */
    int num[MAX_STAGE];        /* 读取的值的历史记录 */

    srand(time(NULL));        /* 设定随机数的种子 */
    ans = 3*(rand() %333)+3;    /* 生成3~999之间3的倍数的随机数 */

    printf("请猜一个3~999的而且是3的倍数整数。\n\n");

    stage = 0;
    do {
        printf("还剩%d次机会。是多少呢:", MAX_STAGE - stage);
        scanf("%d", &no);
        if (no % 3 != 0) {
            break;
        }
        num[stage++] = no;            /* 把读取的值存入数组 */

        if (no > ans)
            printf("\a再小一点。\n");
        else if (no < ans)
            printf("\a再大一点。\n");
    } while (no != ans && stage < MAX_STAGE);

    if (no != ans)
        printf("\a很遗憾,正确答案是%d。\n", ans);
    else {
        printf("回答正确。\n");
        printf("您用了%d次猜中了。\n", stage);
    }

    puts("\n--- 输入记录 ---");
    for (i = 0; i < stage; i++)
        printf(" %2d : %4d %+4d\n", i + 1, num[i], num[i] - ans);

    return 0;
}

练习1-5

/* 猜数游戏(其五:显示输入记录)*/

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


int main(void)
{
    int i;
    int stage;                /* 已输入的次数 */
    int no;
    int cnt=0;/* 读取的值 */
    int d1, d2, ans;                /* 目标数字 */
    srand(time(NULL));        /* 设定随机数的种子 */
    d1 = rand();
    d2 = rand();
    int max = (d2 > d1) ? d2 : d1;
    int min = (d2 < d1) ? d2 : d1;
    ans = (rand() % (max -min))+min;
    int x = (max - min);
    printf("请猜一个%d~%d的整数\n\n", min, max);
    while (x > 50)
    {
        x /= 2;
        cnt++; }
    cnt += 3;
    int num[128];        /* 读取的值的历史记录 */

    stage = 0;
    do {
        printf("还剩%d次机会。是多少呢:", cnt- stage);
        scanf("%d", &no);
        num[stage++] = no;            /* 把读取的值存入数组 */

        if (no > ans)
            printf("\a再小一点。\n");
        else if (no < ans)
            printf("\a再大一点。\n");
    } while (no != ans && stage < cnt);

    if (no != ans)
        printf("\a很遗憾,正确答案是%d。\n", ans);
    else {
        printf("回答正确。\n");
        printf("您用了%d次猜中了。\n", stage);
    }

    puts("\n--- 输入记录 ---");
    for (i = 0; i < stage; i++)
        printf(" %2d : %4d %+4d\n", i + 1, num[i], num[i] - ans);

    return 0;
}

练习1-6

/* 猜数游戏(其五:显示输入记录)*/

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

#define MAX_STAGE    6        /* 最多可以输入的次数 */

int main(void)
{
    int i;
    int stage;                /* 已输入的次数 */
    int no;                    /* 读取的值 */
    int ans;                /* 目标数字 */
    int num[MAX_STAGE];        /* 读取的值的历史记录 */
    int choice, d;
    srand(time(NULL));
    printf("请选择难度等级(1)1~9 (2)1~99 (3)1~999 (4)1~9999:");
    scanf("%d", &choice);
    if (choice == 1){
        ans = rand() % 8 + 1;
        d = 9;
             }
    if (choice == 2) {
        ans = rand() % 98 + 1;
        d = 99;
    }
    if (choice == 3) {
        ans = rand() % 998 + 1;
        d = 999;
    }
    if (choice == 4) {
        ans = rand() % 9998 + 1;
        d = 999;
    }
    printf("请猜一个1~%d的整数。\n\n",d);

    stage = 0;
    do {
        printf("还剩%d次机会。是多少呢:", MAX_STAGE - stage);
        scanf("%d", &no);
        num[stage++] = no;            /* 把读取的值存入数组 */

        if (no > ans)
            printf("\a再小一点。\n");
        else if (no < ans)
            printf("\a再大一点。\n");
    } while (no != ans && stage < MAX_STAGE);

    if (no != ans)
        printf("\a很遗憾,正确答案是%d。\n", ans);
    else {
        printf("回答正确。\n");
        printf("您用了%d次猜中了。\n", stage);
    }

    puts("\n--- 输入记录 ---");
    for (i = 0; i < stage; i++)
        printf(" %2d : %4d %+4d\n", i + 1, num[i], num[i] - ans);

    return 0;
}

练习1-7

/* 猜数游戏(其五:显示输入记录)*/

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

#define MAX_STAGE    10        /* 最多可以输入的次数 */

int main(void)
{
    int i;
    int stage;                /* 已输入的次数 */
    int no;                    /* 读取的值 */
    int ans;                /* 目标数字 */
    int num[MAX_STAGE];        /* 读取的值的历史记录 */

    srand(time(NULL));        /* 设定随机数的种子 */
    ans = rand() % 1000;    /* 生成0~999的随机数 */

    printf("请猜一个0~999的整数。\n\n");

    stage = 0;
    do {
        printf("还剩%d次机会。是多少呢:", MAX_STAGE - stage);
        scanf("%d", &no);
        num[stage++] = no;            /* 把读取的值存入数组 */

        if (no > ans)
            printf("\a再小一点。\n");
        else if (no < ans)
            printf("\a再大一点。\n");
    } while (no != ans && stage < MAX_STAGE);

    if (no != ans)
        printf("\a很遗憾,正确答案是%d。\n", ans);
    else {
        printf("回答正确。\n");
        printf("您用了%d次猜中了。\n", stage);
    }

    puts("\n--- 输入记录 ---");
    for (i = 0; i < stage; i++) {
        printf(" %2d : %4d  ", i + 1, num[i]);
        if(num[i] - ans==0)
            printf("%4d\n", num[i] - ans);
        else {
            printf("%+4d\n", num[i] - ans);
        }
    }
    return 0;
}

练习1-8

/* 猜数游戏(其五:显示输入记录)*/

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

#define MAX_STAGE    10        /* 最多可以输入的次数 */

int main(void)
{
    int i;
    int stage;                /* 已输入的次数 */
    int no;                    /* 读取的值 */
    int ans;                /* 目标数字 */
    int num[MAX_STAGE];        /* 读取的值的历史记录 */

    srand(time(NULL));        /* 设定随机数的种子 */
    ans = rand() % 1000;    /* 生成0~999的随机数 */

    printf("请猜一个0~999的整数。\n\n");

    stage = 0;
    i = 0;
    for(i=0;i<MAX_STAGE;i++){
        printf("还剩%d次机会。是多少呢:", MAX_STAGE - stage);
        scanf("%d", &no);
        num[stage++] = no;            /* 把读取的值存入数组 */

        if (no > ans) {
            printf("\a再小一点。\n");
        }
        if (no < ans){
                printf("\a再大一点。\n");
        }
        if(ans==no){
            break;
        }
} 

    if (no != ans)
        printf("\a很遗憾,正确答案是%d。\n", ans);
    else {
        printf("回答正确。\n");
        printf("您用了%d次猜中了。\n", stage);
    }

    puts("\n--- 输入记录 ---");
    for (i = 0; i < stage; i++) {
        printf(" %2d : %4d  ", i + 1, num[i]);
        if(num[i] - ans==0)
            printf("%4d\n", num[i] - ans);
        else {
            printf("%+4d\n", num[i] - ans);
        }
    }
    return 0;
}

相关推荐