C语言基础题(一)

一、百钱买百鸡

描述:鸡翁一,值钱五;鸡母一,值钱三;三鸡雏,值钱一;百钱买百鸡,问鸡翁,鸡母,鸡雏各几何?
 

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

void func();
int main() {
    printf("start coding..\n");
    func();
    exit(0);
}
void func() {
    int cocks;//公鸡
    int hens; //母鸡
    int chicks = NUM - cocks - hens;//鸡雏

    for (cocks = 1; cocks < NUM; cocks++) {
        for (hens = 1; hens < NUM - cocks; hens++) {
            chicks = NUM - cocks - hens;
            if (cocks * 5 + hens * 3 + chicks / 3 == NUM) {

                printf("cocks = %d  ", cocks);
                printf("hens = %d  ", hens);
                printf("chicks = %d\n", chicks);
            }
        }
    }
}

二、打印钻石图形

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

void diamonds();
int main() {
    printf("start coding..\n");
    diamonds();
    exit(0);
}
void diamonds() {
    int row = 15, half, i, j;
    //打印钻石上半部分
    half = row / 2 + 1;

    for (i = 1; i <= half; i++) {
        //打印空格
        for (j = 1; j <= half - i; j++) {
            printf(" ");
        }
        //打印星号
        for (j = 1; j <= 2 * i -1; j ++) {
            printf("*");
        }
        printf("\n");
    }
    //打印钻石下半部分
    for (i = 1; i < half; i++) {
        //打印空格
        for (j = 1; j <= i; j ++) {
            printf(" ");
        }
        //打印星号
        //for (j = 1; j <= 2 * (half -i - 1) + 1; j++) {
        for (j = 1; j <= (2 * half - 2 * i - 1); j++) {
            printf("*");
        }
        printf("\n");
    }
}

三、斐波那契数列

描述:如式子,fibonacci: 1  1  2  3  5  8  13  21  ...

方法一:

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

int fib(int);
int main() {
    printf("start coding..\n");
    int n;
    int ret;
    int i = 0;

    printf("please input numbers for int: \n");
    ret = scanf("%d",&n);
    if (ret != 1) {
        fprintf(stderr, "input error!");
        exit(0);
    }

    printf("%d\n", n);

    for (i = 1; i <= n; i++)
        printf("%d ", fib(i));

    printf("\n");

    exit(0);
}
int fib(int n) {
    if (n == 1 || n == 2) return 1;
    return fib(n - 1) + fib(n - 2);
}

方法二:

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

void fibonacci(void);
int main() {
    printf("start coding..\n");

    fibonacci(); exit(0);
}

void fibonacci(void) {
    int i;
    int fib[10] = {1, 1};

    for (i = 2; i < 10; i++) {
        fib[i] = fib[i-1] + fib[i-2];
    }
    for (i = 0; i < 10; i++) {
        printf("%d ", fib[i]);
    }
    printf("\n");
    //return ;
}

四、投资问题

描述:投资问题:A以每年10%的单利息投资了100美元,B以每年5%的复合利息投资了100美元。编写一个程序,计算需要多少年B的投资总额才会超过A的投资总额,并且显示出来到那个时刻为止,两个人各自的资产总额是多少?

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

void invest();
int main() {
    printf("start coding..\n");
    invest();
    exit(0);
}
void invest() {

    int n = 1;//期数
    float iA = 0.10f;//A利率
    float iB = 0.05f;//B利率
    float p = 100.0f;//A本金
    float lA;//A利息
    float lB;//B利息
    float amtA;//A总金额
    lA = p * iA * n;
    amtA = p + lA;
    lB = p * pow((1 + iB), n);
    printf("for before, lB = %f\n", lB);
    printf("for before, amtA = %f\n", amtA);
    for (; lB < amtA; ++n) {
        lA = p * iA * n;
        amtA = p + lA;
        lB = p * pow((1 + iB), n);
    }
    printf("投资%d年,B的资产超过A的资产\n", n);
    printf("A的资产总额:%f\n", amtA);
    printf("B的资产总额:%f\n", lB);
}

五、九九乘法表

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

void multiplication_table();
int main() {
    printf("start coding..\n");

    multiplication_table();

    exit(0);
}
void multiplication_table() {

    int i = 1, j = 1;

    for (i = 1; i <= 9; i++) {

        for (j = 1; j <= i; j++) {

            printf("%d x %d = %d\t", j, i, i * j);

        }
        printf("\n");
    }
}

六、求水仙花数

描述:个位的立方+十位的立方+百位的立方=这个三位数本身

#include <stdli.h>
#include <stdlib.h>

void func();
int main() {
    printf("start coding..\n");
    func();
    exit(0);
}
void func() {
    int low_num = 100;
    int high_num = 999;

    for (low_num = 100; low_num <= high_num; low_num++) {

        int g = low_num % 10;
        int s = (low_num / 10) % 10;
        int b = low_num / 100;
        if (low_num == g * g * g + s * s * s + b * b * b) {

            printf("narcissus = %d\n", low_num);

        }
    }
}

七、求质数

描述:只能被1和本身整除的数称为质数

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

void func();
int main() {
    func();
    exit(0);
}
void func() {
    int i = 0;
    int sqr = 0;
    int j, count;

    for (i = 3; i <= 1000; i+=2) {
        //sqr = sqrt(i) + 1;
        //printf("我开平方等于:%d\n", sqr);
        for (j = 2; j * j <= i/*j <= sqr*/; j++) {
            count++;
            if (i % j == 0) {
                break;
            }
        }
        if (j * j > i) {
            printf("%d ", i);
        }
    }
    printf("\n");
    printf("loop number is %d\n", count);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值