当前位置: 首页 > news >正文

C 语言经典编程题实战:从基础算法到趣味问题全解析

        在 C 语言学习过程中,通过实战编程题巩固知识点是非常有效的方式。本文整理了一系列经典 C 语言编程题,涵盖基础计算、逻辑判断、图形打印等多个维度,并附上完整代码与解析,适合初学者参考学习

上机题

1.

计算n以内所有正奇数的和 ? n值通过键盘输入

代码:

/*************************************************************************> File Name:    demo04.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 15时19分09秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int num = 0;int i = 1;int n;printf("请输入数字:");scanf("%d",&n);while(i < n){if(i % 2 != 0 )num += i;          i++;}printf(" %d 以内所有正奇数和为: %d\n",n,num);return 0;
}

运行结果:

2.

计算 1 + 1/(2 * 3) + 1/(3 * 4) + …+ 1/(n * (n + 1)) = ?直到最后一相值小于0.00001为 止

代码:

/*************************************************************************> File Name:    demo05.c> Author:       qianxi> Description:  > Created Time: 2025年07月16日 星期三 18时15分43秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{float i = 2;float sum=0;float n=0;for(;1 / (i * (i + 1)) > 0.00001; i++){n = 1 / (i * (i + 1));sum += n;}printf("这个式子的答案是:%f\n",sum+1);return 0;
}

运行结果:

3.

计算1+1/2 - 1/3 + 1/4 - 1/5 …+1/n= ? n通过键盘输入(int k = -1)

代码:

/*************************************************************************> File Name:    demo06.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 19时02分32秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int i = 1;float sum1,sum2;int x;float sum = 0;printf("请输入正整数:");/*if(scanf("%d",&x) != 1 || x <= 0){printf("请输入一个正整数。\n");return 1;}
*/scanf("%d",&x);while(i <= x){if(i % 2 == 0){sum1 +=1.0 / i;}else {sum2 += 1.0 / i;}i++;}sum = sum1-sum2+2;printf("这个式子的值为:%.6f\n",sum);return 0;
}

运行结果:

4.

计算n的阶乘 ? n! = 123…*n n值通过键盘输入

代码:

/*************************************************************************> File Name:    demo07.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 21时40分18秒************************************************************************/#include <stdio.h>
#include <math.h>int main(int argc,char *argv[])
{unsigned long n;size_t r = 1;printf("请输入一个整数:");scanf("%lu",&n);for(int i = 1; i <= fabs(n); i++) r *=i;printf("1~%lu的阶乘为%lu\n",(size_t)fabs(n),r);return 0;
}

运行结果:

5.

输出半径为1~10的圆面积,面积大于100时停止

代码:

/*************************************************************************> File Name:    demo10.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 23时53分40秒************************************************************************/#include <stdio.h>
#define PI 3.1415926int main(int argc,char *argv[])
{double area;for (int r = 1; r <= 10;r++){area = PI * r * r;if (area > 100){break;}printf("半径为%d的圆的面积为:%lf\n",r,area);}return 0;
}

运行结果:

6

求输入的十个整数中正数的个数及其平均值

代码:

/*************************************************************************> File Name:    demo08.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 22时34分46秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int a;int b = 0;double sum = 0;printf("请输入十个数字:");for(int i = 1; i <= 10;i++){scanf("%d",&a);if(a > 0){b++;sum +=a;}}printf("10个数中的正整数个数为%d个,平均值为%.2lf\n",b,sum/b);return 0;
}

运行结果:

7

打印出100以内能整除7之外的的自然数

代码:

/*************************************************************************> File Name:    demo09.c> Author:      千夕> Description:  > Created Time: 2025年07月16日 星期三 23时19分29秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{printf("100以内不能整除7的数为:");for(int i = 1; i <= 100; i++){if(i % 7 != 0){printf("%d ",i);}}printf("\n");return 0;
}

运行结果:

8

打印乘法表

代码:

/*************************************************************************> File Name:    demo11.c> Author:       千夕> Description:  > Created Time: 2025年07月16日 星期三 23时59分57秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{printf("=======九九乘法表=======\n");for(int i = 1;i <=9 ;i++){for( int j = 1; j <= i;j++){printf("%d×%d=%d\t",j,i,j*i);}printf("\n");}printf("\n");return 0;
}

运行结果:

9

我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值 钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?

代码:

/*************************************************************************> File Name:    test5.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 19时46分44秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{printf("百钱买百鸡问题\n");printf("-----------------\n");for(int x = 0;x <= 100; x++){for(int y = 0; y <= 100 - x;y++){for(int z = 0;z <= 100 - x - y;z++){if(x + y + z == 100 && 5 * x + 3 * y + z / 3 == 100)printf("%d\t%d\t%d\n",x,y,z);}}}return 0;
}

运行结果:

10

从键盘上输入多个无符号整型数据,直到 0 结束 ,输出所输入数据中的最大值。

代码:

/*************************************************************************> File Name:    test2.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 09时59分09秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{unsigned num,max = 0;while(1){scanf("%u",&num);if(num == 0){break;}else if(num > max){max = num;}}printf("最大值是:%u\n",max);return 0;
}

运行结果:

思考题

1

判断一个数是不是回文数。(回文数是指正序(从左向右)和倒序(从右向左)读都是 一样的整数。如:12321

代码:

/*************************************************************************> File Name:    test6.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 20时02分53秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int num,originalNum,n = 0,x;printf("请输入数字:");scanf("%d",&num);originalNum = num;for (;num != 0;){x = num % 10;n = n * 10 + x;num /= 10;}num = originalNum;if(originalNum == n)printf("这串数字是回文数\n");else printf("这串数字不是回文数\n");return 0;
}

运行结果:

2

通过键盘录入一个整数,判断这个整数是否是水仙花数。

代码:

/*************************************************************************> File Name:    test4.c> Author:      千夕> Description:  > Created Time: 2025年07月17日 星期四 19时22分30秒************************************************************************/#include <stdio.h>
#include <math.h>
int main(int argc,char *argv[])
{int num, originalNum,n=0,sum=0;printf("请输入整数:");scanf("%d",&num);originalNum = num;while(num != 0){num /= 10;n++;}num = originalNum;while(num != 0){int digit = num % 10;sum += pow(digit,n);num /= 10;}if (sum == originalNum)printf("%d是水仙花数\n",originalNum);elseprintf("%d不是水仙花数\n",originalNum);return 0;
}

运行结果:

扩展题

使用 * 在控制台分别打印上直角三角形、下直角三角形,上等腰三角形、下等腰三角 形、菱形、平行四边形。

①上直角三角形代码:

/*************************************************************************> File Name:    demo7.c> Author:      千夕> Description:  > Created Time: 2025年07月17日 星期四 20时55分11秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int i,j;for(i = 0;i <=5;i++){for(j = 0;j <= i;j++){printf("*");}printf("\n");}return 0;
}

运行结果:

②下直角三角形代码:

/*************************************************************************> File Name:    demo8.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 21时17分35秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int x,y;for (x=5;x >= 0;x--){for (y = 0; y <= x ;y++)printf("*");printf("\n");}return 0;
}

运行结果:

③上等腰三角形代码:

/*************************************************************************> File Name:    demo09.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 22时06分10秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int i,j,space;for(i = 1;i<=5;i++){for(space = 1;space <= 5 - i; space++){printf(" ");}for(j = 1;j<=2*i -1;j++){printf("*");}printf("\n");}return 0;
}

运行结果:

④下等腰三角形代码:

/*************************************************************************> File Name:    demo10.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 22时31分07秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int i,j,space;for(i = 5;i >=1 ; i--){for(space = 1;space <= 5-i;space++){printf(" ");}for(j = 1;j <= 2*i-1;j++){printf("*");}printf("\n");}return 0;
}

运行结果:

⑤菱形代码:

/*************************************************************************> File Name:    demo11.c> Author:       千夕> Description:  > Created Time: 2025年07月17日 星期四 22时52分29秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{   int i,j,space;for(i = 1;i<= 5;i++){for(space = 1;space<=5-i;space++){printf(" ");}for(j = 1;j<=2*i-1;j++){printf("*");}printf("\n");}for(i = 4 ;i>=1;i--){for(space = 1;space<=5-i;space++){printf(" ");}for(j = 1;j<=2*i-1;j++){printf("*");}printf("\n");}return 0;
}

运行结果:

⑥平行四边形代码:

/*************************************************************************> File Name:    demo12.c> Author:      千夕> Description:  > Created Time: 2025年07月17日 星期四 23时05分45秒************************************************************************/#include <stdio.h>int main(int argc,char *argv[])
{int i,j,space;for(i=1;i<=5;i++){for(space = 1;space<=5-i;space++)printf(" ");for(j=1; j<=5;j++){printf("*");}printf("\n");}return 0;
}

运行结果:

总结

        本文涵盖的编程题涉及 C 语言基础语法(循环、条件判断、数组等)和算法逻辑,通过这些实例可以加深对 C 语言的理解与应用。实际编程中,需注意变量初始化、边界条件处理及数据类型选择,避免出现逻辑错误或溢出问题。初学者可在此基础上尝试优化代码,如增加输入校验、扩展功能等,提升编程能力。

http://www.lryc.cn/news/594313.html

相关文章:

  • Qemu-NUC980(一):SOC框架代码添加
  • LeetCode 3202.找出有效子序列的最大长度 II:取模性质(动态规划)
  • 智能制造——48页毕马威:汽车营销与研发数字化研究【附全文阅读】
  • 【图像处理基石】什么是畸变校正?
  • 2025牛客暑期多校训练营2(部分补题)
  • 【LeetCode 热题 100】124. 二叉树中的最大路径和——DFS
  • 网络安全隔离技术解析:从网闸到光闸的进化之路
  • 【机器学习深度学习】魔塔社区模型后缀全解析:Base、Chat、Instruct、Bit、Distill背后的技术密码
  • leetcode丑数II计算第n个丑数
  • Java行为型模式---解释器模式
  • 大语言模型:人像摄影的“达芬奇转世”?——从算法解析到光影重塑的智能摄影革命
  • 核电子数字多道分析(DMCA)系统中,脉冲展宽的核心目的
  • 力扣:动态规划java
  • 基于单片机的火灾报警系统设计
  • 每日算法刷题Day50:7.20:leetcode 栈8道题,用时2h30min
  • 处理Electron Builder 创建新进程错误 spawn ENOMEM
  • C++ primer知识点总结
  • D. Traffic Lights 【Codeforces Round 1038, Div. 1 + Div. 2】
  • docker制作前端镜像
  • securecrt连接服务器报错 Key exchange failed 怎么办
  • Direct3D 11学习(一)
  • 股票账户数据及其数据获取
  • Python dataclass 高阶用法与技巧
  • ADC和DMA简述
  • Java中List<int[]>()和List<int[]>[]的区别
  • k8s:离线添加集群节点
  • MySQL—表设计和聚合函数以及正则表达式
  • 【性能测试】性能压测3个阶段+高频面试题回答(详细)
  • 第三章自定义检视面板_创建自定义编辑器类_编辑器操作的撤销与恢复(本章进度3/9)
  • Android 项目中如何在执行 assemble 或 Run 前自动执行 clean 操作?