Third weeks test

  1. 一只小猴子吃桃子的问题。每天吃掉现有桃子数量的一半再多一个,到第十天只剩下一个桃子。编写一个函数,输入第一天桃子的数量,输出总共有多少个桃子。
点击查看代码
#include <stdio.h>

int totalPeaches(int firstDay)
{
int peaches = 1;
for (int day = 2; day <= 10; day++) {
        peaches = (peaches + 1) * 2;
    }
    return peaches;
}

int main()
{
    int firstDay;
    printf("请输入第一天桃子的数量:");
    scanf("%d", &firstDay);
    int total = totalPeaches(firstDay);
    printf("总共有%d个桃子。\n", total);
    return 0;
}

运行结果image

  1. 现有2元、3元、5元共三种面额的货币,如果需要找零99元,共有多少种找零方法。
点击查看代码
#include <stdio.h>

int countChange(int amount)
{
    int count = 0;
    for (int i = 0; i <= amount / 2; i++) {
        for (int j = 0; j <= amount / 3; j++) {
            for (int k = 0; k <= amount / 5; k++) {
                if (2 * i + 3 * j + 5 * k == amount) {
                    count++;
                }
            }
        }
    }
    return count;
}

int main()
{
    int amount = 99;
    int count = countChange(amount);
    printf("共有%d种找零方法。\n", count);
    return 0;
}

运行结果image

  1. 写一个函数统计传入的列表中每个数字出现的次数并反回对应的字典。
点击查看代码
#include <stdio.h>

void countOccurrences(int arr[], int size) {
    int count[10] = {0};
    for (int i = 0; i < size; i++) {
        count[arr[i]]++;
    }
    for (int i = 0; i < 10; i++) {
        if (count[i] > 0) {
            printf("%d出现了%d次\n", i, count[i]);
        }
    }
}

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
    int size = sizeof(arr) / sizeof(arr[0]);
    countOccurrences(arr, size);
    return 0;
}

运行结果image

  1. 输入年月日,判断这个日期是这一年的第几天。
点击查看代码
#include <stdio.h>

int dayOfYear(int year, int month, int day) {
    int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
    int days = day;
    for (int i = 0; i < month - 1; i++) {
        days += daysInMonth[i];
    }
    if (month > 2 && (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)) {
        days++;
    }
    return days;
}

int main() {
    int year, month, day;
    printf("请输入年月日:");
    scanf("%d %d %d", &year, &month, &day);
    int dayOfYear = dayOfYear(year, month, day);
    printf("这一天是这一年的第%d天。\n", dayOfYear);
    return 0;
}

运行结果image

  1. 编写程序输入一个包含若干整数的列表,输出其中的奇数组成的新列表。例如,输入[1,2,3,4,5,6,7,8],输出[1,3,5,7]。
点击查看代码
#include <stdio.h>

void extractOddNumbers(int arr[], int size) {
    int oddArr[size];
    int count = 0;
    for (int i = 0; i < size; i++) {
        if (arr[i] % 2 != 0) {
            oddArr[count] = arr[i];
            count++;
        }
    }
    printf("[");
    for (int i = 0; i < count; i++) {
        printf("%d", oddArr[i]);
        if (i != count - 1) {
            printf(",");
        }
    }
    printf("]\n");
}

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8};
    int size = sizeof(arr) / sizeof(arr[0]);
    extractOddNumbers(arr, size);
    return 0;
}

运行结果image

  1. 阿凡提与国王比赛下棋,国王说要是自己输了的话,阿凡提想要什么,他就可以拿出什么来,阿凡提说那就要点米吧,棋盘一共64个小格子,在第1个格子里放1粒米,第2个格子里放2粒米,第3个格子里放4粒米,第4个格子里放8粒米,以此类推,后面每个格子里的米都是前一个格子的两倍,一直把64个格子都放满。编写程序,生成一个列表,其中元素为每个棋盘格子厘米的粒数,并输出这些数字的和,也就是一共需要多少粒米。
点击查看代码
#include <stdio.h>

long long calculateTotalRice() {
    long long total = 0;
    long long rice = 1;
    for (int i = 1; i <= 64; i++) {
        total += rice;
        rice *= 2;
    }
    return total;
}

int main() {
    long long total = calculateTotalRice();
    printf("一共需要%lld粒米。\n", total);
    return 0;
}

运行结果image

  1. 编写函数模拟猜数游戏。通过参数可以指定一个整数范围和猜测的最大次数,系统在指定范围内随机产生一个整数,然后让用户猜测该数的值,系统根据玩家的猜测进行提示,(例如:猜大了,猜小了,猜对了)玩家则可以根据系统的提示,对下一次的猜测进行适当调整,直到猜对或次数用完。
点击查看代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void guessNumber(int min, int max, int maxGuesses) {
    srand(time(0));
    int number = rand() % (max - min + 1) + min;
    int guess;
    int numGuesses = 0;
    while (numGuesses < maxGuesses) {
        printf("请输入一个猜测的数字:%d ~ %d\n", min, max);
        scanf("%d", &guess);
        numGuesses++;
        if (guess == number) {
            printf("猜对了!\n");
            return;
        } else if (guess < number) {
            printf("猜小了!\n");
        } else {
            printf("猜大了!\n");
        }
    }
    printf("次数用完,游戏结束!\n");
}

int main() {
    int min = 1;
    int max = 100;
    int maxGuesses = 10;
    guessNumber(min, max, maxGuesses);
    return 0;
}

运行结果image

  1. 模拟报数游戏。由n个人围成一圈,从0~n-1按顺序编号,从第1个人开始,从1到k报数,报到k的人退出圈子,然后圈子缩小,从下一个人继续游戏,问最后留下的是原来的第几号?
点击查看代码
#include <stdio.h>

int lastPerson(int n, int k) {
    int last = 0;
    for (int i = 2; i <= n; i++) {
        last = (last + k) % i;
    }
    return last;
}

int main() {
    int n = 10;
    int k = 3;
    int last = lastPerson(n, k);
    printf("最后留下的是原来的第%d号。\n", last);
    return 0;
}

运行结果image

  1. 生成1~100区间上的一个随机数,然后根据随机数的范围生成变量sex的值,当随机数大于51时,把sex设置为男,否则设置为女。
点击查看代码
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void setSex() 
{
    srand(time(0));
    int randomNumber = rand() % 100 + 1;
    char sex[10];
    if (randomNumber > 51) {
        strcpy(sex, "男");
    } else {
        strcpy(sex, "女");
    }
    printf("随机数:%d,性别:%s\n", randomNumber, sex);
}

int main() 
{
    setSex();
    return 0;
}

运行结果image

posted @ 2023-08-17 11:19  L&ZH  阅读(48)  评论(0)    收藏  举报