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

发布时间:2024年01月13日

前言:

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

文章来源:https://blog.csdn.net/m0_66106755/article/details/135574827
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。