当前位置:首页>java>C语言经典编程练习题(1)

C语言经典编程练习题(1)

  • 2026-09-03 21:09:50
C语言经典编程练习题(1)

C语言经典编程练习题(1)

前言:编程不是“看”会的,是“练”会的

你是否也曾面对着一行行陌生的C语言代码感到无从下手?是否觉得变量、数据类型、分支语句这些概念明明听懂了,一写代码却错误百出?编程学习的最大陷阱,就是误以为“听懂了”等于“学会了”。

正如学骑自行车不能只看教程视频,编程能力的真正提升来自一次次动手实践。我们精心设计了这10道经典练习题,它们看似简单,却涵盖了初学者最需要掌握的四大核心:变量运用、数据类型理解、运算符掌握和逻辑分支构建。

每一道题都源于真实场景——从气象站的温度换算到校园的成绩评定,从健康管理的BMI计算到国际会议的时间转换。当你发现自己的代码能让“虚拟气象员”准确报温,能帮“数学评委”找出最高分,那种“我真的做到了”的成就感,是任何理论讲解都无法替代的。

别怕代码简单,所有复杂的程序都始于这些基础模块的搭建。现在,请暂时放下课本,打开你的编译器,跟随这10个渐进式挑战,用指尖的实践把理论知识真正“刻”进大脑里。从第一个“Hello World”到解决实际问题,你只差这一系列练习的距离。

准备好你的键盘了吗?让我们开始第一道练习——

1、温度转换器

描述:北方的冬天,天气预报常用摄氏温度(°C),而一些国际气象资料则使用华氏温度(°F)。作为一名气象数据分析员,你需要编写一个温度转换程序。输入一个摄氏温度值,程序应自动将其转换为华氏温度并显示结果。请确保结果保留两位小数,方便气象记录员准确记录。

提示:摄氏度与华氏度的转换公式为:F = C × 9/5 + 32。

输入样例:

25

输出样例:

摄氏温度:25.00°C

华氏温度:77.00°F

参考答案:

intmain(){  double C;//摄氏温度  double F;//华氏温度  scanf("%lf",&C);//输入摄氏度  //转换为华氏度  // F = C * 9/5 +32;  F=C*9/5+32;  printf("摄氏温度:%.2lf°C\n",C);  printf("华氏温度:%.2lf°F\n",F);}

2、奇偶判断

描述:在编程竞赛中,经常需要对数据进行分类处理。现在需要你编写一个程序,判断输入的整数是奇数还是偶数。这个程序将用于自动化测试系统,帮助系统根据数字的奇偶性决定不同的处理流程。

输入样例:

17

输出样例:

17是奇数

输入样例:

10

输出样例:

10是偶数

参考答案:

int main(){    int number ;     scanf("%d",&number);    //判断是否为偶数:能被2整除的数    if(number%2==0){//使用余数判断整除情况        printf("%d是偶数",number);    }else{        printf("%d是奇数",number);    }    return 0;}

3、三数最大

描述:在数学竞赛的评分系统中,三位评委给选手打分。为了确定选手的最终得分,需要取三位评委给出的最高分。需要你编写一个程序,输入三个整数(代表三位评委的评分),找出其中的最大值。请考虑评分可能相同的情况,并确保程序能够正确处理。

输入样例:

12 8 15

输出样例:

最大值是: 15

提示:可以尝试使用多个if语句进行两两比较,也可以考虑使用逻辑运算符组合条件

参考答案:

方法一:使用多if语句比较

int main(){    int score1,score2,score3;    scanf("%d%d%d",&score1,&score2,&score3);    int max = score1;//最大值    if(max < score2){//比较第一个分数和第二个分数,取出较大的一个        max = score2;    }    if(max < score3){//再和第三个分数比较,取出较大的一个        max = score3;    }    printf("最大值是:%d",max);}

方法二:使用逻辑运算符

int main(){    int score1,score2,score3;    scanf("%d%d%d",&score1,&score2,&score3);    int max; 	if(score1>=score2 && score1>=score3){        max = score1;    }else if(score3>=score2 && score1<=score3){        max = score3;    }else{        max = score2;    }    printf("最大值是:%d",max);}

4、简易计算器

描述:设计一个简单的四则运算练习程序。程序需要接收两个整数和一个运算符(+, -, *, /),然后输出运算结果。考虑到除法的特殊性,当除数为零时,程序应给出明确的错误提示,而不是崩溃。

输入样例1:

10 5 *

输出样例1:

10*5=50

输入样例2:

10 0 /

输出样例2:

错误:除数不能为0

提示:可以使用多分支if语句,也可以使用switch case语句。

参考答案:

方法一:使用多分支if

int main(){    int num1,num2;    char op;//运算符    scanf("%d%d%c",&num1,&num2,&op);    if(op=='+'){        //加法运算        printf("%d + %d = %d\n",num1,num2,num1+num2);    }else if(op=='-'){        //减法运算        printf("%d - %d = %d\n",num1,num2,num1-num2);    }else if(op=='*'){        //乘法运算        printf("%d * %d = %d\n",num1,num2,num1*num2);    }else if(op=='/'){        //除法运算        if(num2==0){            printf("错误,除数不能为0\n");        }else{            printf("%d / %d = %d\n",num1,num2,num1+num2);        }    }else{        printf("不包含该运算符\n");    }    return 0;}

方法二:使用switch case语句

int main(){    int num1,num2;    char op;//运算符    scanf("%d%d%c",&num1,&num2,&op);    switch(op){        case '+'://加法运算        	printf("%d + %d = %d\n",num1,num2,num1+num2);            break;        case '-': //减法运算        	printf("%d - %d = %d\n",num1,num2,num1-num2);            break;        case '*'://乘法运算        	printf("%d * %d = %d\n",num1,num2,num1*num2);            break;        case '/'://除法运算        	if(num2==0){            	printf("错误,除数不能为0\n");        	}else{            	printf("%d / %d = %d\n",num1,num2,num1+num2);        	}            break;        default:            printf("不包含该运算符\n");    }    return 0;}

5、成绩等级评定

问题描述:  学期末,班主任需要根据学生的期末成绩快速评定等级,以便录入成绩单。编写一个程序,输入学生的整数成绩(0-100分),输出对应的等级。等级划分标准如下:

90分及以上:A(优秀)

80-89分:B(良好)

70-79分:C(中等)

60-69分:D(及格)

60分以下:E(不及格)

输入格式:  输入一个整数,表示学生的成绩(0-100)。如果输入的成绩不在0-100范围内,应给出"输入错误"的提示。

输入样例:

85

输出样例:

等级:B

参考答案:

intmain(){    int score;    scanf("%d",&score);    if(score>100 || score<0){        printf("输入错误");    }else if(score>=90 && score<=100){        printf("等级:A");    }else if(score>=80){        printf("等级:B");    }else if(score>=70){        printf("等级:C");    }else if(score>=60){        printf("等级:D");    }else{        printf("等级:E");    }    return 0;}

6、三角形类型判断

问题描述: 现正在开发一个几何辅助工具,需要根据用户输入的三条边长,判断是否能构成三角形,并输出能构成三角形的类型。判断规则如下:

1.验证是否能构成三角形。

2.若能构成三角形,进一步判断三角形类型:

  • 等边三角形:三条边的长度相等。

  • 等腰三角形:有两条边的长度相等。

  • 直角三角形:满足勾股定理(a² + b² = c²)。

  • 普通三角形:其他情况。

输入格式: 输入三个正整数,分别表示三角形的三条边长。

输入样例:

3 4 5

输出样例:

直角三角形

参考答案:

intmain(){  int x, y, z;  scanf("%d %d %d", &x, &y, &z);  //判断是否能构成三角形:任意两边之和大于第三边  if (x + y > z && x + z > y && y + z > x) { //能构成三角形  //判断三角形的类型    if (x == y && y == z) { //等边三角形      printf("等边三角形");    } else if (x == y || y == z || x == z) { //等腰三角形      printf("等腰三角形");    } else if (x*x+y*y==z*z || x*x+z*z==y*y || y*y+z*z==x*x) {      //直角三角形      printf("直角三角形");    } else {      printf("普通三角形");    }  } else {    printf("不能构成三角形");  }  return 0;}

7、字符类型识别

问题描述:  在设置新密码时,系统需要验证输入字符的类型以确保密码强度。编写一个程序,输入一个字符,判断其属于以下哪种类型:

  • 大写字母(A-Z)

  • 小写字母(a-z)

  • 数字(0-9)

  • 其他字符(如符号、空格等)

输入格式:  输入一个字符。

输入样例:

5

输出样例:

数字

参考答案:

方法一:判断字符类型时可以使用ASCII码值

intmain(){    char c;    scanf("%c",&c);    if(c>=48&&c<=57){        //数字字符        printf("数字");    }else if(c>=65&&c<=90){        //大写字母        printf("大写字母");    }else if(c>=97&&c<=122){        //小写字母        printf("小写字母");    }else{        printf("其他字符");    }    return 0;}

方法二:字符可以直接比较大小(根据ASCII码)。

intmain(){    char c;    scanf("%c",&c);    if(c>='0'&&c<='9'){        //数字字符        printf("数字");    }else if(c>='A'&&c<='Z'){        //大写字母        printf("大写字母");    }else if(c>='a'&&c<='z'){        //小写字母        printf("小写字母");    }else{        printf("其他字符");    }    return 0;}

8、日历应用:天数判断

问题描述:  你正在开发一个日历应用,需要判断某一年的某个月有多少天。请编写一个程序,输入一个年份(整数)和一个月份(整数),计算这个月有多少天。

提示:判断是否为闰年:

  • 能被4整除但不能被100整除的年份是闰年。

  • 能被400整除的年份也是闰年。

输入格式:  输入两个整数,表示年份和月份。

输入样例 :

2020 2

输出样例 :

2020年2月有29天

参考答案:

intmain(){  int year, month, day = 0;  scanf("%d %d", &year, &month);  switch (month) {    case 1:    case 3:    case 5:    case 7:    case 8:    case 10:    case 12:      day = 31;      break;    case 4:    case 6:    case 9:    case 11:      day = 30;      break;    case 2:      //判断闰年      if(year%4==0&&year%100!=0||year%400==0){        day = 29;      }else{        day = 28;      }      break;    default:      printf("月份输入有误");  }  printf("%d年%d月有%d天",year,month,day);  return 0;}

9、BMI计算器

描述:健康管理应用需要计算用户的BMI指数并提供健康建议。编写程序,输入用户的身高(米)和体重(千克),计算BMI指数(BMI = 体重 / (身高 × 身高))。根据计算结果,判断健康状态:

  • BMI<18.5为偏瘦

  • 18.5≤BMI<24为正常

  • 24≤BMI<28为超重

  • BMI≥28为肥胖。

请确保结果保留两位小数。

输入样例:

1.75 70

输出样例:

身高:1.75米

体重:70.00千克

BMI:22.86

状态:正常

参考答案:

intmain(){    double H,W;    scanf("%lf %lf",&H,&W);    double bmi = W/(H*H);    printf("身高:%.2lf米\n体重:%.2lf千克\n",H,W);    printf("BMI:%.2lf\n",bmi);    printf("状态:");    if(bmi<18.5){        printf("偏瘦");    }else if(bmi<24){        printf("正常");    }else if(bmi<28){        printf("超重");    }else{        printf("肥胖");    }    return 0;}

10、时间格式转换

描述:国际会议日程安排系统需要将24小时制时间转换为12小时制。编写程序,输入一个4位整数表示24小时制时间(如1430表示14:30),程序应将其转换为12小时制格式,并添加AM或PM后缀。

注意特殊时间处理:00:00应转换为12:00 AM,12:00应转换为12:00 PM。同时,需要对输入的时间进行有效性验证(小时在0-23之间,分钟在0-59之间)。

输入样例1:

1430

输出样例1:

24小时制:14:30

12小时制:02:30PM

输入样例2:

0930

输出样例2:

24小时制:09:30

12小时制:09:30AM

提示:可以使用整数除法和取余运算分离小时和分钟部分,然后根据小时值判断是上午还是下午

参考答案:

int main() {  int time24, hour24, minute, hour12;  char p;//A表示上午,P表示下午  printf("请输入24小时制时间(如1430): ");  scanf("%d", &time24);  hour24 = time24 / 100;  minute = time24 % 100;  // 处理输入有效性  if (hour24 < 0 || hour24 > 23 || minute < 0 || minute > 59) {    printf("无效的时间输入\n");    printf("请确保小时在0-23之间,分钟在0-59之间\n");    return 1;  }   // 转换为12小时制  if (hour24 == 0) {    hour12 = 12;    p = 'A';  } else if (hour24 == 12) {    hour12 = 12;    p = 'P';  } else if (hour24 < 12) {    hour12 = hour24;    p = 'A';  } else {    hour12 = hour24 - 12;    p = 'P';  }  printf("24小时制: %02d:%02d\n", hour24, minute);  if (p == 'A') {    printf("12小时制: %02d:%02d AM\n", hour12, minute);   } else {    printf("12小时制: %02d:%02d PM\n", hour12, minute);  }  return 0;}

恭喜你成功通关!这10道题是你编程路上最扎实的一步。知识已在指尖,保持练习,更多精彩正待开启。

欢迎在评论区留言讨论。

最新文章

随机文章