必练的100道C语言程序设计练习题(上)

前言:

在计算机编程的世界中,C语言一直是一门备受推崇的语言。它的简洁性、高效性以及广泛应用使得学习C语言成为每一位程序员的必由之路。然而,掌握这门语言并不是一蹴而就的事情,它需要不断的练习和实践。为了帮助各位编程爱好者更好地理解和掌握C语言的精髓,我整理了一份“必练的100道C语言程序设计练习题(上)”。这不仅是一次对基础知识的回顾,更是一个深入学习的契机。通过挑战这些题目,你将更好地锻炼编程思维,提高问题解决能力,为未来的编程之旅打下坚实的基础。

1、输出打印Hello World。


#include<stdio.h>
int main()
{printf("Hello World");return 0;
}

运行结果如下图:

在这里插入图片描述

2、已知三角形边长 求面积。

#include<stdio.h>
#include<math.h>
int main()
{double a,b,c,s,area;a=2.67;b=4.43;c=5.21;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("a=%f\tb=%f\tc=%f\n",a,b,c);printf("area=%f\n",area);
}

运行结果如下图:

在这里插入图片描述

3、while语句实现求1+2+……+100


#include<stdio.h>
void main()
{int i ,sum;i=1;sum=0;while(i<=100){sum=sum+i;i++;}printf("sum=%d\n",sum);
}

在这里插入图片描述

4、输出大写A到小写a之间的所有字母和符号。


#include<stdio.h>
void main()
{int i=65;while(i<'a'){putchar(i);putchar('\n');i++;}
}

在这里插入图片描述

5、自然数“1—n”之间的奇数和和偶数和。


#include<stdio.h>
void main()
{int i=1,sum1=0,sum2=0,n;printf("请输入n的值:\n");scanf("%d",&n);do{sum1=sum1+i;i=i+2;}while(i<n);i=2;do{sum2=sum2+i;i=i+2;}while(i<n);printf("奇数和=%d\n偶数和=%d\n",sum1,sum2);
}

在这里插入图片描述

6、求1+2+3+4……+100的和


#include<stdio.h>
void main()
{int i,sum=0;for(i=1;i<=100;i++)sum=sum+i;printf("sum=%d\n",sum);
}

在这里插入图片描述

7、输出九九乘法表


#include<stdio.h>
void main()
{int i,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++){printf("%dX%d=%-3d",i,j,i*j);}printf("\n");}
}

在这里插入图片描述

8、输出圆半径在10以内自然数的圆的面积,面积大于100时停止


#include<stdio.h>
#define PI 3.14159
main()
{int r;float area;for(r=1;r<=10;r++){area=PI*r*r;if(area>100)break;printf("r=%d,area=%.2f\n",r,area);}
}

在这里插入图片描述

9、求输入的10个整数中正数的个数、和及平均数


#include<stdio.h>
main()
{int i,num,a=0,sum=0;float ave;for(i=1;i<=10;i++){scanf("%d",&num);if(num<=0) continue;a++;sum=sum+num;}ave=(float)sum/a;printf("a=%d,sum=%d,ave=%f\n",a,sum,ave);
}

在这里插入图片描述

10、自幂数是指一个n位整数,它的每个位上数字的n次幂之和等于它本身。例如,13+53+33=153,当n为4时,自幂数称为玫瑰花数,试编程输出1000~9999范围内的所有玫瑰花数。

#include<stdio.h>
void main()
{int i,n,a,b,c,d;for(i=1000;i<=9999;i++){n=i;a=n%10;b=n/10%10;c=n/100%10;d=n/1000;if(a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d==n)printf("%6d\n",n);}
}

在这里插入图片描述

11、输入一行字符,分别统计其中英文字符、数字字符和其他字符的个数


#include<stdio.h>
void main()
{char ch;int char_num=0,int_num=0,other_num=0;while((ch=getchar())!='\n'){if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')char_num++;else if(ch>='0'&&ch<='9')int_num++;elseother_num++;}printf("字母:%d个\n数字:%d个\n其它字符:%d个\n",char_num,int_num,other_num);
}

在这里插入图片描述

12、求n的阶乘


#include<stdio.h>
int main()
{int n,x=1,i;printf("输入n的阶乘");scanf("%d",&n);for(i=1;i<=n;i++){x=x*i;}printf("n!=%d\n",x);
}

在这里插入图片描述

13、编程序统计并输出200以内所有能同时被7和3整除的数及其数量。


#include<stdio.h>
int main()
{int i,n=0;for(i=1;i<=200;i++)if((i%7==0)&&(i%3==0)){printf("%d\n",i);n++;}printf("%d",n);}

在这里插入图片描述

14、定义一个数组a[10],并赋初值0~9,反序输出。


#include<stdio.h>
int main()
{int a[10],i;for(i=0;i<=9;i++)a[i]=i;for(i=9;i>=0;i--)printf("%2d",a[i]);return 0;
}

在这里插入图片描述

15、一个小组学生共10人,输入他们的成绩,计算并输出小组总成绩及平均成绩。


#include<stdio.h>
#define num 10
int main()
{int i;float a[num],sum=0,ave;for(i=0;i<=9;i++)scanf("%f",&a[i]);for(i=0;i<=9;i++)sum=sum+a[i];ave=sum/10;printf("sum=%f,ave=%f\n",sum,ave);
}

在这里插入图片描述

16、输出杨辉三角


#include<stdio.h>
void main()
{int i,j,a[10][10]={0};for(i=0;i<10;i++){a[i][i]=1;a[i][0]=1;}for(i=2;i<10;i++)for(j=1;j<i+1;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<10;i++){for(j=0;j<i+1;j++)printf("%4d",a[i][j]);printf("\n");}
}

在这里插入图片描述

17、输入一行字符,分别统计其中的数字、字母和其他字符个数


#include<stdio.h>
void main()
{char ch;int count=0,zimu=0,other=0;while(ch=getchar()!='\n'){if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z')zimu++;else if(ch>='0'&&ch<='9')count++;elseother++;}printf("数字=%d,字母=%d,其他字符=%d\n",count,zimu,other);
}

在这里插入图片描述

18、求10个整数中的最小值


#include<stdio.h>
int main()
{int i,a[10],min;for(i=0;i<10;i++)scanf("%d",&a[i]);min=a[0];for(i=1;i<10;i++)if(a[i]<min)min=a[i];printf("min=%d\n",min);
}

在这里插入图片描述

19、求3*4矩阵元素中的最大值


#include<stdio.h>
void main()
{int a[3][4]={{18,-21,15,85},{18,9,11,26},{-18,21,11,-58}};int i,j,row=0,colum=0,min;min=a[0][0];for(i=0;i<3;i++)for(j=0;j<4;j++)if(a[i][j]<min){min=a[i][j];row=i;colum=j;}printf("最小值=a[%d][%d]=%d\n",row,colum,min);
}

在这里插入图片描述

20、使用puts()和gets()函数输入输出


#include <stdio.h>int main() {char str[66];printf("请输入一个字符串:\n");fgets(str, sizeof(str), stdin);printf("你输入的字符串是: %s", str);return 0;
}

在这里插入图片描述

21、单位转换——厘米转换英寸


#include<stdio.h>int main()
{double foot;double inch;printf("请分别输入身高的英尺和英寸,""如输入\"5 7\"表示5英尺7英寸:");scanf("%lf %lf",&foot,&inch);//scanf输入使用%lfprintf("身高是%f米。\n",((foot + inch/12)*0.3048));return 0;
}

在这里插入图片描述

22、判断一个数是否是素数


#include <iostream>
#include <cmath>  // Include the <cmath> header for 'sqrt' functionint main() {int num;bool flag = true;std::cout << "请输入一个整数:";std::cin >> num;for (int i = 2; i <= std::sqrt(num); i++) {  // Use std::sqrtif (num % i == 0) {flag = false;break;}}if (num <= 1) {flag = false;}if (flag) {std::cout << num << "是一个素数!" << std::endl;} else {std::cout << num << "不是一个素数!" << std::endl;}return 0;
}

在这里插入图片描述

23、反向输出字符


#include <stdio.h>
#include <string.h>int main() {char inputString[200], tempChar;int i, j, length;// 获取用户输入printf("Enter a string: ");scanf("%s", inputString);// 计算字符串长度length = strlen(inputString);// 字符串翻转for (i = 0, j = length - 1; i < j; i++, j--) {tempChar = inputString[i];inputString[i] = inputString[j];inputString[j] = tempChar;}// 输出翻转后的字符串printf("Reversed string: %s\n", inputString);return 0;
}

在这里插入图片描述

24、用C语言输出打印一个爱心


#include <stdio.h>
int main()
{for(double y = 1.5; y > -1.5; y -= 0.1){for(double x = -1.5; x < 1.5; x += 0.05) {double a = x * x + y * y - 1;putchar(a * a * a - x * x * y * y * y <= 0.0f? '+' : ' ');}putchar('\n');}return 0;
}

在这里插入图片描述

补充

代码规范:

变量命名: 使用有意义、清晰的变量名,避免使用单个字母或缩写。例如,用userAge代替uAge。
缩进和格式: 保持一致的缩进风格,通常是使用空格或制表符。良好的代码格式提高了可读性。
注释: 编写清晰、简洁的注释,解释代码的目的、关键步骤和可能的注意事项。避免过多的注释,只注释必要的部分。
错误处理:

返回值检查: 在调用可能产生错误的函数后,检查其返回值以确保操作成功。
异常处理: 使用适当的异常处理机制,例如try…catch块,以处理运行时错误。
错误信息: 提供有意义的错误信息,使得在出现问题时更容易追踪和修复。
调试技巧:

调试器: 学会使用调试器(如GDB),能够设置断点、观察变量值,并逐步执行程序。
打印调试信息: 在关键位置插入打印语句,输出变量的值,以便追踪程序执行流程。
单元测试: 编写并执行单元测试,验证每个函数的行为是否符合预期。
性能优化:

算法优化: 选择和实现高效的算法,了解不同算法之间的时间复杂度和空间复杂度。
资源管理: 及时释放不再需要的资源,避免内存泄漏和资源浪费。
编译优化: 使用编译器提供的优化标志,针对特定平台进行编译以提高代码性能。
内存管理:

动态内存分配: 使用malloc和free等函数时,确保分配和释放内存的平衡。
避免内存泄漏: 定期检查代码,确保没有未释放的内存块。
悬挂指针: 注意指针的生命周期,避免使用已释放的内存。

结尾:

在完成这一系列的C语言程序设计练习之后,相信你已经对C语言的各种概念和技巧有了更深刻的理解。编程之路永无止境,但通过这些练习,你已经迈出了坚实的一步。记得,编程是一门实践的艺术,不仅要理解语法规则,更要在实际问题中找到创新的解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/619545.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

整合junit与热部署

整合junit <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.7.0</version></dependency> 测试类上添加SpringBootTest 如&#xff1a; 注意测试类的…

计算机组成原理 CPU的功能和基本结构和指令执行过程

文章目录 CPU的功能和基本结构CPU的功能CPU的基本结构 指令执行过程指令周期概念指令执行方案指令数据流取周期数据流析指周期数据流执行周期数据流中断周期数据流 数据通路的功能和基本结构数据通路的功能数据通路的结构单总线 CPU的功能和基本结构 #mermaid-svg-jr0QOEyC6Q92…

微服务治理:微服务断路器(微服务故障隔离模式)详解

微服务断路器是一种设计模式&#xff0c;可以保护系统免于级联故障&#xff0c;通过限制对故障服务的调用来实现。它的工作原理类似于电气断路器&#xff1a;当服务遇到问题时&#xff0c;它会切断请求流&#xff0c;使其有机会恢复&#xff0c;并防止其他服务被压垮。 工作原…

透过历史的琉璃之窗:古代玻璃制品成分解析--2022年国赛C题获奖论文思考

问题一&#xff1a;数据预处理------>剔除处理无效数据 转化完美成分数据----定和为1 中心化对数比变换------消除定和限制对后续分析的影响 类别量化分析相关性 第1小问------对超过20%的比例期望计数小于5的组别---------Pearson卡方检验法 对不满足卡方前提的组别----…

使用numpy处理图片——分离通道

大纲 读入图片分离通道堆叠法复制修改法 生成图片 在《使用numpy处理图片——滤镜》中&#xff0c;我们剥离了RGB中的一个颜色&#xff0c;达到一种滤镜的效果。 如果我们只保留一种元素&#xff0c;就可以做到PS中分离通道的效果。 读入图片 import numpy as np import PIL.…

51-10 多模态论文串讲—ALBEF 论文精读

今天我们就来过一下多模态的串讲&#xff0c;其实之前&#xff0c;我们也讲了很多工作了&#xff0c;比如说CLIP&#xff0c;还有ViLT&#xff0c;以及CLIP的那么多后续工作。多模态学习在最近几年真的是异常的火爆&#xff0c;那除了普通的这种多模态学习&#xff0c;比如说视…

自动化神器 Playwright 的 Web 自动化测试解决方案

1. 主流框架的认识 总结&#xff1a; 由于Selenium在3.x和4.x两个版本的迭代中并没有发生多大的变化&#xff0c;因此Selenium一统天下的地位可能因新框架的出现而变得不那么稳固。后续的Cypress、TestCafe、Puppeteer被誉为后Selenium时代Web UI自动化的三驾马车。但是由于这三…

逼格满满,推荐一个高效测试用例工具:XMind2TestCase !

一、背景 软件测试的核心是什么&#xff1f;毫无疑问是测试分析和测试用例设计&#xff0c;也是日常测试投入最多时间的工作内容之一。 然而&#xff0c;传统的测试用例设计过程有很多痛点&#xff1a; 1、使用Excel表格进行测试用例设计&#xff0c;虽然成本低&#xff0c;但…

NeRF算法模型简析:从理论到实践的轻度解析以及如何编辑和微调

nerf模型可编辑的&#xff1f; NeRF模型的可编辑性&#xff08;editability&#xff09;指的是能够修改预训练的NeRF模型以改变其生成的场景或对象的某些特征&#xff0c;而不是从头开始重新训练模型。这种编辑可以是改变颜色、形状、纹理或者添加、移除和修改场景中的对象。 在…

java应用CPU过高查找原因

用top查到占用cpu最高的进程pid 根据进程ID找到占用CPU高的线程 ps -mp 60355 -o THREAD,tid | sort -r 用 printf "%x \n" 将tid换为十六进制&#xff1a;xid printf "%x \n" 6036 根据16进制格式的线程ID查找线程堆栈信息 jstack 60355 |grep ebcb -A…

【linux驱动开发】在linux内核中注册一个杂项设备与字符设备以及内核传参的详细教程

文章目录 注册杂项设备驱动模块传参注册字符设备 开发环境&#xff1a; windows ubuntu18.04 迅为rk3568开发板 注册杂项设备 相较于字符设备&#xff0c;杂项设备有以下两个优点: 节省主设备号:杂项设备的主设备号固定为 10&#xff0c;在系统中注册多个 misc 设备驱动时&…

【分布式技术】监控平台zabbix自定义模板、设置邮件报警、导入模板

目录 案例&#xff1a;监控当前登录人数&#xff0c;超过3人触发报警发送邮件 第一步&#xff1a;自定义模板 1、明确想要获取监控数据的命令和脚本 ​编辑 2、在被监控主机上&#xff0c;修改zabbix agent2的配置文件或者在zabbix agent2的配置文件目录中添加以.conf结尾…

三棋先手必胜证明

目录 创作原因 游戏规则 初始状态图 证明过程 先手必胜的证明 失败的博弈树&#xff08;三个多小时的成果&#xff09; 创作原因 这个棋不是网上流行的成三棋&#xff0c;我也不知道这个棋叫什么。由于这个棋是&#xff08;横竖斜&#xff09;连成三个就获胜&#xff0c;…

GBASE南大通用数据库如何检索单行

SELECT 语句返回的行集是它的活动集。单个 SELECT 语句返回单个行。您可使用嵌入式 SELECT 语句来从数据库将单个行检索到主变量内。然而&#xff0c;当 SELECT 语句返回多行数 据时&#xff0c;程序必须使用游标来一次检索一行。在 检索多行 中讨论“多行”选择操作。 要检索单…

虹软人脸识别白屏

1.修改jdk为1.8 2.编译版本ndk修改 ndk {abiFilters armeabi-v7a, arm64-v8a} 3.local.properties增加ndk路径 ndk.dirH\:\\Android\\SDK\\ndk\\21.1.6352462 4.最重要的一步:检查依赖库是否存在前一定要先检查有么有读取本地文件权限,下面的代码即使是放到点击事件的回调…

[AutoSar]BSW_OS 01 Autosar OS入门(一)

目录 关键词平台说明一、Autosar OS 的位置二、Autosar OS 与OSEK三、TASK 关键词 嵌入式、C语言、autosar、OS、BSW 平台说明 项目ValueOSautosar OSautosar厂商vector芯片厂商TI编程语言C&#xff0c;C编译器HighTec (GCC) 一、Autosar OS 的位置 如在[AutoSar]基础部分 a…

RuoYi-Vue-Plus 5.X登录前流程及解密

一&#xff1a;问题 1. 前端传给后端的是一个加密字符串&#xff0c;后端controller层login接口怎么就直接解密了呢&#xff1f; 2. 中间经过什么步骤到达的登录接口呢&#xff1f; 二&#xff1a;个人分析 首先考虑的是拦截器、过滤器、切面AOP&#xff1b; 1. 使用全文搜…

面向对象的三大特性

个人主页&#xff1a;告别&#xff0c;今天 个人专栏&#xff1a;java趣味之旅 ​​​​​​​本专栏旨在分享学习网络编程的学习心得和复习总结&#xff0c;欢迎大家在评论区交流讨论 1. 封装 1.1 封装的概念 面向对象程序三大特性&#xff1a;封装、继承、多态。而类和对象…

计算机msvcp140.dll丢失如何解决,分享3个简单有效的方法

在计算机系统运行过程中&#xff0c;用户有时会遇到一个常见的错误提示——msvcp140.dll文件缺失&#xff0c;这一问题的发生往往会导致部分软件无法正常启动或运行。“针对计算机系统中出现的msvcp140.dll缺失问题&#xff0c;小编将详尽阐述并探讨5种有效的解决策略。每一种方…

基于springboot+html的汽车销售管理系统设计与实现

基于springboothtml的汽车销售管理系统 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 前言 随着汽车市场的快速发展&#xff0c;汽车销售企业面临着越来越大的管理…