341-十道经典程序设计题目

1. 输入3个数按由小到大的顺序输出

复制代码
#include <stdio.h>

int main() {
    int a, b, c, temp;
    
    printf("请输入三个整数:");
    scanf("%d%d%d", &a, &b, &c);
    
    // 使用冒泡排序思想排序
    if (a > b) { temp = a; a = b; b = temp; }
    if (a > c) { temp = a; a = c; c = temp; }
    if (b > c) { temp = b; b = c; c = temp; }
    
    printf("从小到大排序:%d %d %d\n", a, b, c);
    return 0;
}

2. 数组赋值并逆序输出

复制代码
#include <stdio.h>

int main() {
    int arr[10];
    
    // 赋值
    for (int i = 0; i < 10; i++) {
        arr[i] = i;
    }
    
    // 逆序输出
    printf("逆序输出:");
    for (int i = 9; i >= 0; i--) {
        printf("%d ", arr[i]);
    }
    printf("\n");
    
    return 0;
}

3. 用数组求Fibonacci数列的前20项

复制代码
#include <stdio.h>

int main() {
    int fib[20] = {1, 1};  // 前两项初始化为1,1
    
    // 计算Fibonacci数列
    for (int i = 2; i < 20; i++) {
        fib[i] = fib[i-1] + fib[i-2];
    }
    
    // 输出结果
    printf("Fibonacci数列前20项:\n");
    for (int i = 0; i < 20; i++) {
        printf("%6d", fib[i]);
        if ((i + 1) % 5 == 0) printf("\n");
    }
    
    return 0;
}

4. 用函数求两个数的较大值

复制代码
#include <stdio.h>

// 求最大值函数
int max(int a, int b) {
    return (a > b) ? a : b;
}

int main() {
    int a, b;
    
    printf("请输入两个整数:");
    scanf("%d%d", &a, &b);
    
    printf("较大的数是:%d\n", max(a, b));
    
    return 0;
}

5. 用递归法求n!

复制代码
#include <stdio.h>

// 递归函数计算阶乘
long long factorial(int n) {
    if (n == 0 || n == 1) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}

int main() {
    int n;
    
    printf("请输入一个整数:");
    scanf("%d", &n);
    
    if (n < 0) {
        printf("输入错误!负数没有阶乘。\n");
    } else {
        printf("%d! = %lld\n", n, factorial(n));
    }
    
    return 0;
}

6. 输出100到1000之间能被15整除的数

复制代码
#include <stdio.h>

int main() {
    int count = 0;
    
    printf("100到1000之间能被15整除的整数:\n");
    for (int i = 100; i <= 1000; i++) {
        if (i % 15 == 0) {
            printf("%5d", i);
            count++;
            
            // 每输出10个数换行
            if (count % 10 == 0) {
                printf("\n");
            }
        }
    }
    
    if (count % 10 != 0) printf("\n");
    printf("共计%d个数\n", count);
    
    return 0;
}

7. 求10个学生成绩的平均值

复制代码
#include <stdio.h>

// 求平均成绩函数
float average(float score[], int n) {
    float sum = 0;
    for (int i = 0; i < n; i++) {
        sum += score[i];
    }
    return sum / n;
}

int main() {
    float score[10];
    
    printf("请输入10个学生的成绩:\n");
    for (int i = 0; i < 10; i++) {
        printf("成绩%d: ", i + 1);
        scanf("%f", &score[i]);
    }
    
    float avg = average(score, 10);
    printf("平均成绩为:%.2f\n", avg);
    
    return 0;
}

8. 数组操作和平均值计算

复制代码
#include <stdio.h>

// 函数声明
void fun1(int s[]);
void fun2(int s[], float w[]);

// 函数定义
void fun1(int s[]) {
    for (int i = 0; i < 30; i++) {
        s[i] = 2 * (i + 1);  // 从2开始的偶数
    }
}

void fun2(int s[], float w[]) {
    for (int i = 0; i < 6; i++) {
        int sum = 0;
        // 每5个元素求平均值
        for (int j = 0; j < 5; j++) {
            sum += s[i * 5 + j];
        }
        w[i] = (float)sum / 5;
    }
}

int main() {
    int s[30];
    float w[6];
    
    // 调用函数
    fun1(s);
    fun2(s, w);
    
    // 输出s数组
    printf("数组s的元素:\n");
    for (int i = 0; i < 30; i++) {
        printf("%4d", s[i]);
        if ((i + 1) % 10 == 0) printf("\n");
    }
    
    // 输出w数组
    printf("\n数组w的元素(平均值):\n");
    for (int i = 0; i < 6; i++) {
        printf("w[%d] = %.2f\n", i, w[i]);
    }
    
    return 0;
}

9. 分数序列求和

复制代码
#include <stdio.h>

double sum(int n) {
    double numerator = 2.0, denominator = 1.0;  // 第一项:2/1
    double total = 0.0;
    
    for (int i = 1; i <= n; i++) {
        total += numerator / denominator;
        
        // 计算下一项
        double temp = numerator;
        numerator = numerator + denominator;  // 下一项的分子是前一项分子分母之和
        denominator = temp;                   // 下一项的分母是前一项的分子
    }
    
    return total;
}

int main() {
    int n = 5;
    double result = sum(n);
    
    printf("分数序列前%d项的和为:%.6f\n", n, result);
    
    return 0;
}

10. 求奇数的阶乘和

复制代码
#include <stdio.h>

// 计算阶乘的函数
long long factorial(int n) {
    long long result = 1;
    for (int i = 1; i <= n; i++) {
        result *= i;
    }
    return result;
}

int main() {
    int n;
    long long total = 0;
    
    printf("请输入一个奇数n:");
    scanf("%d", &n);
    
    if (n % 2 == 0) {
        printf("输入的不是奇数!\n");
        return 1;
    }
    
    // 计算1! + 3! + 5! + ... + n!
    for (int i = 1; i <= n; i += 2) {
        long long fact = factorial(i);
        total += fact;
        printf("%d! = %lld\n", i, fact);
    }
    
    printf("\n总和 = %lld\n", total);
    
    return 0;
}
相关推荐
wregjru2 小时前
【C++】2.6 红黑树及其实现(附代码)
开发语言·c++
natide2 小时前
表示/嵌入差异-7-间隔/边际对齐(Alignment Margin)
人工智能·深度学习·算法·机器学习·自然语言处理·知识图谱
zgl_200537792 小时前
ZGLanguage 解析SQL数据血缘 之 提取select语句中的源表名
大数据·数据库·c++·数据仓库·sql·数据库开发·etl
毅炼2 小时前
hot100打卡——day08
java·数据结构·算法·leetcode·深度优先
Sereinc.Y2 小时前
【移动机器人运动规划(ROS)】03_ROS话题-服务-动作
c++·动态规划·ros·slam
l1t3 小时前
DeepSeek总结的算法 X 与舞蹈链文章
前端·javascript·算法
gihigo19983 小时前
水声信号处理中DEMON谱分析的原理、实现与改进
算法·信号处理
歌_顿3 小时前
微调方法学习总结(万字长文!)
算法
@小码农3 小时前
202512 电子学会 Scratch图形化编程等级考试四级真题(附答案)
java·开发语言·算法