必练的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++;
    else
      other_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++;
    else
      other++;
  }
  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输入使用%lf
  
  printf("身高是%f米。\n",
    ((foot + inch/12)*0.3048));
    
    return 0;
}

在这里插入图片描述

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


#include <iostream>
#include <cmath>  // Include the <cmath> header for 'sqrt' function

int main() {
    int num;
    bool flag = true;

    std::cout << "请输入一个整数:";
    std::cin >> num;

    for (int i = 2; i <= std::sqrt(num); i++) {  // Use std::sqrt
        if (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语言的各种概念和技巧有了更深刻的理解。编程之路永无止境,但通过这些练习,你已经迈出了坚实的一步。记得,编程是一门实践的艺术,不仅要理解语法规则,更要在实际问题中找到创新的解决方案。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

kafka之java客户端实战

1. kafka的客户端 Kafka提供了两套客户端API&#xff0c;HighLevel API和LowLevel API。 HighLevel API封装了kafka的运行细节&#xff0c;使用起来比较简单&#xff0c;是企业开发过程中最常用的客户端API。 而LowLevel API则需要客户端自己管理Kafka的运行细节&#xff0c;Pa…

通过shell脚本确定当前平台

shell中的变量OSTYPE存储操作系统的名称&#xff0c;也可以使用uname命令来确认当前所在的平台。 shell中的变量HOSTTYPE存储操作系统的架构。 测试代码如下所示&#xff1a; #! /bin/bashecho "use OSTYPE:" if [[ "$OSTYPE" "linux-gnu&quo…

canvas设置渐变色文字(线性、径向)

查看专栏目录 canvas示例教程100专栏&#xff0c;提供canvas的基础知识&#xff0c;高级动画&#xff0c;相关应用扩展等信息。canvas作为html的一部分&#xff0c;是图像图标地图可视化的一个重要的基础&#xff0c;学好了canvas&#xff0c;在其他的一些应用上将会起到非常重…

ssm基于JAVA的酒店客房管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本酒店客房管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

JAVA实现循环日期加一天

一、业务背景 现在数据库新增字段需要区分平日(0)和假期(1)的数据&#xff0c;之前有一批去年的数据都没有算过&#xff0c;所以得用日期循环来根据实际的时间来修改对应的数值&#xff0c;废话不多说看具体操作方法。 二、操作方法 // 初始日期 String dateString "20…

谷粒商城项目|es的应用场景及常见问题

es是什么 es多被用于搜索聚合分析引擎 是分布式的可以高性能查询的引擎 es应用场景 为什么不用MYSQL而用es es将数据存在内存中且可以分布式的存储数据 商品上架 商品在es中的保存 1.在es中建立索引 spu sku spu sku保存在一起防止分布查询 为了防止对象数组扁平化&#xff…

NetDevOps:华三交换机通过Netmiko或者Nornir获取接口信息通过TextFSM解析报错问题

python代码&#xff1a;实现功能获取交换机接口信息并通过TextFSM进行解析。 from netmiko import Netmiko import textfsm show_intf_cmd_mapping {hp_comware: display interface, }def ssh_device_2_get_intfs(device_type, host, username, password, port):dev_info {d…

微机原理常考填空总结

hello大家好我是吃个西瓜嘤&#xff0c;这篇节只总结微机原理常考填空题都是干货展示常出现的易错点以及微机原理注意事项。 以下仅代表个人发言 #微机原理 正文开始&#xff1a; 1&#xff0c;区分JZ&#xff0c;JNZ技巧 也就是D70用JZ&#xff1b;D71用JNZ。 JZ;条件ZF1时…

LLM之RAG实战(十四)| 利用LongContextRetriver克服RAG中的中间丢失现象

人类和大型语言模型&#xff08;LLM&#xff09;都有一个共同的行为模式&#xff1a;他们往往擅长处理位于给定内容开头或结尾的信息&#xff0c;而中间的信息往往会被忽视。 来自斯坦福大学、加州大学伯克利分校和Samaya AI的研究人员在论文《Lost in the Middle: How Languag…

安装MySQL

采用ubuntu系统&#xff0c;安装MySQL5.7 安装 下载apt仓库文件 #下载apt仓库的安装包&#xff0c;Ubuntu的安装包是.deb文件 wget https://dev.mysql.com/get/mysql-apt-config_0.8.12-1_all.deb配置apt仓库 #使用dpkg命令安装仓库dpkg -i mysql-apt-config_0.8.12-1_all.…

大模型实战营Day3 作业

基础作业&#xff1a; 复现课程知识库助手搭建过程 (截图) 进阶作业&#xff1a; 选择一个垂直领域&#xff0c;收集该领域的专业资料构建专业知识库&#xff0c;并搭建专业问答助手&#xff0c;并在 OpenXLab 上成功部署&#xff08;截图&#xff0c;并提供应用地址&#xf…

Nacos和Eureka比较、统一配置管理、Nacos热更新、多环境配置共享、Nacos集群搭建步骤

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、Nacos和eureka的对比二、统一配置管理二、Nacos热更新方式一方式二 三、多环境配置共享四、Nacos集群搭建步骤&#xff08;黑马springCloud的p29&#xff0…

简单明了,汽车级LM317系列LM317D2TR4G线性电压稳压器电源设计-参数应用方案分享

低压差线性稳压器&#xff08;LDO&#xff09;&#xff0c;是指一种具有恒定电流输出电压的装置&#xff0c;主要由输入变压器、整流器、输出变压器三部分构成&#xff0c;工业原理为将输入的交流电压经过整流、滤波后得到直流输出电压&#xff0c;再经过控制元件和开关器件将稳…

暄桐写字计划 | 开始布局我们的2024

暄桐是一间传统美学教育教室&#xff0c;创办于2011年&#xff0c;林曦是创办人和授课老师&#xff0c;教授以书法为主的传统文化和技艺&#xff0c;皆在以书法为起点&#xff0c;亲近中国传统之美&#xff0c;以实践和所得&#xff0c;滋养当下生活。      暄桐林曦老师有…

【自译】【精华】MIT麻省理工学院技术双月刊(The Bimonthly MIT Technology Review)2024年1~2月【创新版块概览(一)】

导读&#xff1a; 今年是 《MIT技术评论杂志》 创刊125周年纪念年&#xff08;该杂志自1899年创刊&#xff09;&#xff0c;笔者将2024开年第1期&#xff08;1月~2月号&#xff09;的创新版块&#xff08;Innovation Issue&#xff09;中的重要内容进行梳理&#xff0c;获得近年…

紫光展锐M6780丨画质增强——更炫的视觉体验

智能显示被认为是推动数字化转型和创新的重要技术之一。研究机构数据显示&#xff0c;预计到2035年底&#xff0c;全球智能显示市场规模将达到1368.6亿美元&#xff0c;2023-2035年符合年增长率为36.4%。 随着消费者对高品质视觉体验的需求不断增加&#xff0c;智能手机、平板…

二十几种未授权访问漏洞合集

未授权访问漏洞是一个在企业内部非常常见的问题&#xff0c;这种问题通常都是由于安全配置不当、认证页面存在缺陷&#xff0c;或者压根就没有认证导致的。当某企业对外的服务端口、功能无限制开放&#xff0c;并且对用户的访问没有做任何限制的时候&#xff0c;可能会泄露出某…

JavaScript常用事件详解

一、用于form&#xff08;表单&#xff09;的事件 在网页中经常会遇到一些表单的验证&#xff0c;是通过事件进行处理的&#xff0c;比如用户输入用户名之后&#xff0c;及时显示用户是否被注册 用于form&#xff08;表单&#xff09;的事件 事件名功能 onblur 当元素失…

基于OpenCV的谷物颗粒识别

基于OpenCV的谷物颗粒识别 一、程序整体功能介绍1.1 导入库与函数定义1.2 颜色分割与灰度处理1.3 二值化与轮廓检测1.4 绘制与计数1.5 主程序与结果展示 二、算法原理与实现流程2.1算法原理&#xff08;1&#xff09;颜色分割&#xff08;2&#xff09;灰度处理与二值化&#x…

ubuntu安装node

1 下载 node 官网下载 如果需要其他版本&#xff0c;点击上图的Other Downloads 这里下载的版本是20.11.0 Linux Binaries (x64)&#xff0c;下载下来后是node-v20.11.0-linux-x64.tar.xz这样的格式&#xff0c;直接右键解压得到如下目录&#xff1a; 直接拷贝该文件夹到指定目…