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

发布时间:2024年01月23日

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

前言:

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

1、询问用户输入年龄,然后根据年龄的不同进行不同的输出



#include <stdio.h>
int main() {
    int age;
    printf("请输入你的年龄:");
    scanf("%d", &age);
    if (age < 0) {
        printf("你是穿越者!\n");
    } else if (age < 18) {
        printf("你还未成年,好好学习!\n");
    } else {
        printf("你已经成年听话了吗?\n");
    }
    return 0;
}

微信截图_20240122190010

2、输入三个数字,按从小到大的顺序输出这三个数字


#include<stdio.h>
int main() {
  double a, b, c, temp;
  printf("Please input three numbers: \n");
  scanf("%lf %lf %lf", &a, &b, &c);
  if (a > b) {
    temp = a;
    a = b;
    b = temp;
  }
  if (a > c) {
    temp = a;
    a = c;
    c = temp;
  }
  if (b > c) {
    temp = b;
    b = c;
    c = temp;
  }
  printf("The numbers in ascending order are: %lf %lf %lf\n", a, b, c);
}

在这里插入图片描述

3、输入一个数字,判断它是否是质数。


#include<stdio.h>
int main()
{
  int n,i;
  printf("Please input a number: \n");
  scanf("%d",&n);
  for(i=2;i<=n/2;i++)
  {
    if(n%i==0)
    {
      printf("%d is not a prime number.\n",n);
      return 0;
    }
  }
  printf("%d is a prime number.\n",n);
}

微信截图_20240122190135

4、编写一个程序,输入5个整数,输出它们的平均数和。


#include <stdio.h>
int main()
{
  int a, b, c, d, e, sum, avg;
  printf("请输入5个整数:\n");
  scanf("%d%d%d%d%d", &a, &b, &c, &d, &e);
  sum = a + b + c + d + e;
  avg = sum / 5;
  printf("这5个数的和为%d,平均数为%d\n", sum, avg);
  return 0;
}

微信截图_20240122190210

5、编写一个程序,输入一个三位数,将其百位、十位、个位上的数字分别打印出来。


#include <stdio.h>
int main()
{
  int a, b, c, n;
  printf("请输入一个三位数:\n");
  scanf("%d", &n);
  a = n / 100;
  b = (n / 10) % 10;
  c = n % 10;
  printf("这个数的百位数为%d,十位数为%d,个位数为%d\n", a, b, c);
  return 0;
}

微信截图_20240122190232

6、编写一个程序,输入一个字符,判断它是大写字母、小写字母、数字还是其他字符。


#include <stdio.h>
int main()
{
  char ch;
  printf("请输入一个字符:\n");
  scanf("%c", &ch);
  if (ch >= 'A' && ch <= 'Z') {
    printf("你输入的是大写字母。\n");
  } else if (ch >= 'a' && ch <= 'z') {
    printf("你输入的是小写字母。\n");
  } else if (ch >= '0' && ch <= '9') {
    printf("你输入的是数字。\n");
  } else {
    printf("你输入的是其他字符。\n");
  }
  return 0;
}

微信截图_20240122190304

7、编写一个程序,输入一个正整数n,计算1到n之间所有偶数的和。

#include <stdio.h>
int main()
{
  int n, i, sum=0;
  printf("请输入一个正整数:\n");
  scanf("%d", &n);
  for (i=1; i<=n; i++) {
    if (i%2 == 0) {
      sum += i;
    }
  }
  printf("1到%d之间所有偶数的和为%d\n", n, sum);
  return 0;
}

微信截图_20240122190328

8、编写一个程序,输入两个整数,将它们互换后输出。


#include <stdio.h>
int main()
{
  int a, b, temp;
  printf("请输入两个整数:\n");
  scanf("%d%d", &a, &b);
  printf("交换前a=%d,b=%d\n", a, b);
  temp = a;
  a = b;
  b = temp;
  printf("交换后a=%d,b=%d\n", a, b);
  return 0;
}

微信截图_20240122190353

9、编写一个程序,输入一个整数,输出它的阶乘。


#include <stdio.h>
int main()
{
  int n, i, result=1;
  printf("请输入一个整数:\n");
  scanf("%d", &n);
  for (i=1; i<=n; i++) {
    result *= i;
  }
  printf("%d的阶乘为%d\n", n, result);
  return 0;
}

微信截图_20240122190415

10、编写一个程序,输入一个字符串,将其中的小写字母转换为大写字母后输出。


#include <stdio.h>
#include <ctype.h>
int main()
{
  char str[100];
  int i;
  printf("请输入一个字符串:\n");
  scanf("%s", str);
  for (i=0; str[i]!='\0'; i++) {
    if (islower(str[i])) {
      str[i] = toupper(str[i]);
    }
  }
  printf("转换后的字符串为:%s\n", str);
  return 0;
}

微信截图_20240122190438

11、编写一个程序,输入一个三位数,判断它是否是水仙花数(水仙花数是指一个三位数,其各位数字的立方和等于该数本身)。


#include <stdio.h>
#include <math.h>
int main()
{
  int n, a, b, c;
  printf("请输入一个三位数:\n");
  scanf("%d", &n);
  a = n / 100;
  b = (n / 10) % 10;
  c = n % 10;
  if (n == pow(a, 3) + pow(b, 3) + pow(c, 3)) {
    printf("%d是水仙花数\n", n);
  } else {
    printf("%d不是水仙花数\n", n);
  }
  return 0;
}

微信截图_20240122190500

12、编写一个程序,输入一个正整数n,计算并输出前n个自然数的和。


#include <stdio.h>
int main()
{
  int n, sum=0, i;
  printf("请输入一个正整数:\n");
  scanf("%d", &n);
  for (i=1; i<=n; i++) {
    sum += i;
  }
  printf("前%d个自然数的和为%d\n", n, sum);
  return 0;
}

微信截图_20240122190522

13、编写一个程序,输入一个整数,输出该数的所有因数。


#include <stdio.h>
int main()
{
  int n, i;
  printf("请输入一个正整数:\n");
  scanf("%d", &n);
  printf("%d的因数有:", n);
  for (i=1; i<=n; i++) {
    if (n%i == 0) {
      printf("%d ", i);
    }
  }
  printf("\n");
  return 0;
}

微信截图_20240122190545

14、编写一个程序,输入一个字符串,判断它是否是回文字符串(回文字符串是指从左往右和从右往左读都是同一个字符串)。

#include <stdio.h>
#include <string.h>
int main()
{
  char str[100];
  int i, flag=0;
  printf("请输入一个字符串:\n");
  scanf("%s", str);
  for (i=0; i<strlen(str)/2; i++) {
    if (str[i] != str[strlen(str)-i-1]) {
      flag = 1;
      break;
    }
  }
  if (flag == 1) {
    printf("%s不是回文字符串\n", str);
  } else {
    printf("%s是回文字符串\n", str);
  }
  return 0;
}

微信截图_20240122190613

15、编写一个程序,输入一个字符串,计算其中的单词个数。


#include <stdio.h>
#include <string.h>
int main()
{
  char str[100];
  int count=0, flag=0, i;
  printf("请输入一个字符串:\n");
  scanf("%[^\n]", str);
  for (i=0; i<strlen(str); i++) {
    if (str[i] != ' ' && flag == 0) {
      count++;
      flag = 1;
    } else if (str[i] == ' ') {
      flag = 0;
    }
  }
  printf("该字符串中共有%d个单词\n", count);
  return 0;
}

微信截图_20240122190648

16、编写一个程序,输入一个整数n,找出1到n之间所有的素数。


#include <stdio.h>
#include <math.h>
int main()
{
  int n, i, j, flag=0;
  printf("请输入一个正整数:\n");
  scanf("%d", &n);
  printf("1到%d之间的所有素数为:", n);
  for (i=2; i<=n; i++) {
    flag = 0;
    for (j=2; j<=sqrt(i); j++) {
      if (i % j == 0) {
        flag = 1;
        break;
      }
    }
    if (flag == 0) {
      printf("%d ", i);
    }
  }
  printf("\n");
  return 0;
}

微信截图_20240122190712

17、编写一个程序,输入一个字符串,将其中的大写字母转换为小写字母后输出。


#include <stdio.h>
#include <ctype.h>
int main()
{
  char str[100];
  int i;
  printf("请输入一个字符串:\n");
  scanf("%s", str);
  for (i=0; str[i]!='\0'; i++) {
    if (isupper(str[i])) {
      str[i] = tolower(str[i]);
    }
  }
  printf("转换后的字符串为:%s\n", str);
  return 0;
}

微信截图_20240122190758

18、编写一个程序,输入一个正整数n,计算并输出前n个奇数的和。


#include <stdio.h>
int main()
{
  int n, sum=0, i;
  printf("请输入一个正整数:\n");
  scanf("%d", &n);
  for (i=1; i<=n; i++) {
    sum += 2*i-1;
  }
  printf("前%d个奇数的和为%d\n", n, sum);
  return 0;
}

微信截图_20240122190817

19、编写一个程序,输入两个整数a和b,求它们的最大公约数和最小公倍数。

#include <stdio.h>
int main()
{
  int a, b, i, gcd, lcm;
  printf("请输入两个整数:\n");
  scanf("%d%d", &a, &b);
  for (i=a<b?a:b; i>=1; i--) {
    if (a%i == 0 && b%i == 0) {
      gcd = i;
      break;
    }
  }
  lcm = a*b/gcd;
  printf("%d和%d的最大公约数为%d,最小公倍数为%d\n", a, b, gcd, lcm);
  return 0;
}

微信截图_20240122190841

20、编写一个程序,输入一个字符串,将其中的空格和小数点去除后输出。


#include <stdio.h>
#include <string.h>
int main()
{
  char str[100];
  int i, j=0;
  printf("请输入一个字符串:\n");
  scanf("%[^\n]", str);
  for (i=0; i<strlen(str); i++) {
    if (str[i] != ' ' && str[i] != '.') {
      str[j] = str[i];
      j++;
    }
  }
  str[j] = '\0';
  printf("处理后的字符串为:%s\n", str);
  return 0;
}

微信截图_20240122190920

21、编写一个程序,输入一个正整数n,判断它是否是完数(完数是指一个数恰好等于它的所有因子(不包括它自己)之和)。


#include <stdio.h>
int main()
{
  int n, sum=0, i;
  printf("请输入一个正整数:\n");
  scanf("%d", &n);
  for (i=1; i<=n/2; i++) {
    if (n % i == 0) {
      sum += i;
    }
  }
  if (n == sum) {
    printf("%d是完数\n", n);
  } else {
    printf("%d不是完数\n", n);
  }
  return 0;
}

微信截图_20240122190945

补充

代码规范:

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

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

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

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

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

结尾:

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

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