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

news2024/9/23 13:23:43

前言:

在计算机编程的世界中,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语言的各种概念和技巧有了更深刻的理解。编程之路永无止境,但通过这些练习,你已经迈出了坚实的一步。记得,编程是一门实践的艺术,不仅要理解语法规则,更要在实际问题中找到创新的解决方案。

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

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

相关文章

进程和线程的比较

目录 一、前言 二、Linux查看进程、线程 2.1 Linux最大进程数 2.2 Linux最大线程数 2.3 Linux下CPU利用率高的排查 三、线程的实现 四、上下文切换 五、总结 一、前言 进程是程序执行相关资源&#xff08;CPU、内存、磁盘等&#xff09;分配的最小单元&#xff0c;是一…

Halcon边缘滤波器edges_image 算子

Halcon边缘滤波器edges_image 算子 基于Sobel滤波器的边缘滤波方法是比较经典的边缘检测方法。除此之外&#xff0c;Halcon也提供了一些新式的边缘滤波器&#xff0c;如edges_image算子。它使用递归实现的滤波器&#xff08;如Deriche、Lanser和Shen&#xff09;检测边缘&…

【无标题】关于异常处理容易犯的错

一般项目是方法打上 try…catch…捕获所有异常记录日志&#xff0c;有些会使用 AOP 来进行类似的“统一异常处理”。 其实&#xff0c;这种处理异常的方式非常不可取。那么今天&#xff0c;我就和你分享下不可取的原因、与异常处理相关的坑和最佳实践。 捕获和处理异常容易犯…

Java研学-分页查询

一 分页概述 1 介绍 将大量数据分段显示&#xff0c;避免一次性加载造成的内存溢出风险 2 真假分页 ① 真分页   一次性查询出所有数据存到内存&#xff0c;翻页从内存中获取数据&#xff0c;性能高但易造成内存溢出 ② 假分页   每次翻页从数据库中查询数据&#xff0c…

day16 二叉树的最大深度 n叉树的最大深度 二叉树的最小深度 完全二叉树的节点数

题目1&#xff1a;104 二叉树的最大深度 题目链接&#xff1a;104 二叉树的最大深度 题意 二叉树的根节点是root&#xff0c;返回其最大深度&#xff08;从根节点到最远叶子节点的最长路径上的节点数&#xff09; 递归 根节点的的高度就是二叉树的最大深度 所以使用后序遍…

【Node.js学习 day4——模块化】

模块化介绍 什么是模块化与模块&#xff1f; 将一个复杂的程序文件依据一定规则&#xff08;规范&#xff09;拆分成多个文件的过程称之为模块化 其中拆分的每个文件就是一个模块&#xff0c;模块的内部数据是私有的&#xff0c;不过模块可以暴露内部数据以便其他模块使用。什…

010集:with as 代码块读写关闭文件—python基础入门实例

接009集&#xff1a; 读写文本文件的相关方法如下。 read &#xff08; size-1 &#xff09;&#xff1a;从文件中读取字符串&#xff0c; size 限制读取的字符数&#xff0c; si ze-1 指对读取的字符数没有限制。 readline &#xff08; size-1 &#xff09;&#xff1a;在…

常见的加密算法

加密算法 AES 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥&#xff0c;具体的加密流程如下图&#xff1a; RSA RSA 加密算法是一种典型的非对称加密算法&am…

JavaScript数据类型、判断、检测

JavaScript数据类型 number、string、boolean、null、undefined、symbol、bigint Object【Array、RegExp、Date、Math、Function】 存储方式 1. 基础类型存储在栈内存中&#xff0c;被引用或者拷贝时&#xff0c;会创建一个完全相同的变量。 2. 引用类型存放在堆内存中&…

[redis] redis高可用之持久化

一、Redis 高可用的相关知识 1.1 什么是高可用 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 但是在Redis语境中&#xff0c;高可用的含义似乎要宽泛一些&#xff0c;…

wpf使用Popup封装数据筛选框

(关注博主后,在“粉丝专栏”,可免费阅读此文) 类似于DevExpress控件的功能 这是DevExpress的winform筛选样式,如下: 这是DevExpress的wpf筛选样式,如下: 这是Excel的筛选样式,如下: 先看效果 本案例使用wpf原生控件封装,功能基本上都满足,只是颜色样式没有写…

轻松掌握构建工具:Webpack、Gulp、Grunt 和 Rollup 的使用技巧(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

蓝桥杯省赛无忧 STL 课件15 queue

01 queue队列 02 priority_queue优先队列 接下来介绍几种优先队列修改比较函数的方法 03 deque双端队列 04 例题讲解 https://www.lanqiao.cn/problems/1113/learning/?page1&first_category_id1&problem_id1113输入 5 IN xiaoming N IN Adel V IN laozhao N OUT …

VMware workstation搭建与安装AlmaLinux-9.2虚拟机

VMware workstation搭建与安装AlmaLinux-9.2虚拟机 适用于需要在VMware workstation平台安装AlmaLinux-9.2&#xff08;最小化安装、无图形化界面&#xff09;虚拟机。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径VMware-workstation 1…

一些硬件知识(三)

uint8_t, uint32_t, 和 uint16_t 是 C 和 C 语言中的数据类型&#xff0c;它们分别表示无符号的 8 位、32 位和 16 位整数。这些数据类型定义在标准库 <stdint.h>&#xff08;在 C 语言中&#xff09;或 <cstdint>&#xff08;在 C 中&#xff09;。 uint8_t&…

记录 | ubuntu软链接查看、删除、创建

软连接查看 ls -il 软连接删除 rm -rf ** 软连接创建 ln -s 源文件 目标文件 实例&#xff0c;软连接报错&#xff1a; 若要建立libtiny_reid.so*间软连接&#xff1a; 先删除 rm -rf libtiny_reid.so libtiny_reid.so.3 libtiny_reid.so.3.1 再建立 ln -s libtiny_re…

Nocalhost 为 KubeSphere 提供更强大的云原生开发环境

1 应用商店安装 Nocalhost Server 已集成在 KubeSphere 应用商店&#xff0c;直接访问&#xff1a; 设置应用「名称」&#xff0c;确认应用「版本」和部署「位置」&#xff0c;点击「下一步」&#xff1a; 在「应用设置」标签页&#xff0c;可手动编辑清单文件或直接点击「安装…

从DETR到Mask2former(2): 损失函数loss function

DETR的损失函数包括几个部分&#xff0c;如果只看论文或者代码&#xff0c;比较难理解&#xff0c;最好是可以打断点调试&#xff0c;对照着论文看。但是现在DETR模型都已经被集成进各种框架中&#xff0c;很难进入内部打断掉调试。与此同时&#xff0c;数据的label的前处理也比…

分享一个好用的免费在线扣图网址

具体效果 附地址 https://cutout.aiwave.cc/

MySQL 日志之二进制日志-binlog

1、简介 MySQL 的二进制日志记录了对 MySQL 所有的更改操作&#xff0c;不包括 select 和 show 等操作。二进制日志文件主要有&#xff1a;数据恢复、主从复制、审计&#xff08;判断是否有注入攻击&#xff09;等作用。 2、二进制日志参数配置 2.1、文件参数配置 linux 中 My…