| 序号 | 题目内容 |
|---|---|
| 1 | 自增自减运算符综合计算(a、b、c 变量运算) |
| 2 | for 循环 + if 判断(输出 i=5) |
| 3 | 嵌套 switch 语句执行结果分析 |
| 4 | strcmp 函数比较 "abc" 和 "cde" |
| 5 | 打印 1-100 中 3 的倍数 |
| 6 | 三个整数从大到小输出 |
| 7 | 判断输入的三边能否构成三角形及三角形类型 |
| 8 | 计算 1/1-1/2+1/3-1/4+…+1/99-1/100 的值 |
| 9 | 统计 1-100 的整数中数字 9 出现的个数 |
| 10 | 打印 1000-2000 年之间的闰年 |
| 11 | 找出 10 个整数中的最大值 |
一、基础运算与自增自减
题目 1:自增自减运算符综合计算
#include <stdio.h>
int main()
{
int a, b, c;
a = 5;
c = ++a; // 前置自增:a先变成6,再赋值给c → a=6, c=6
// 逗号表达式:从左到右执行,赋值优先级高于逗号
b = ++c, c++, ++a, a++; // ++c→c=7,赋值给b;后续c++→8,++a→7,a++→先用7后变8
b += a++ + c; // b = 7 + (8 + 8) = 23;a++先用8,后变成9
printf("a = %d b = %d c = %d\n", a, b, c); // 输出:a=9 b=23 c=8
return 0;
}
考点:前置 / 后置自增(++a/a++)、逗号表达式、赋值运算符优先级。
二、循环与分支结构
题目 2:for 循环 + if 判断
#include <stdio.h>
int main()
{
int i = 0;
for (i = 1; i < 10; i++)
{
if (i == 5) // 注意:=是赋值,==是判断,此处修正原注释错误
printf("%d ", i); // 仅当i=5时打印
else
continue; // 其他情况跳过本次循环
}
return 0; // 输出:5
}
考点:for 循环、continue 语句、相等判断(==)与赋值(=)的区别。
题目 3:嵌套 switch 语句
#include <stdio.h>
int main() {
int x = 3;
int y = 3;
switch (x % 2) { // 3%2=1,进入case 1
case 1:
switch (y) { // y=3,无匹配case,进入default
case 0:
printf("first\n");
case 1:
printf("second\n");
break;
default:
printf("hello\n"); // 输出hello(无break,继续执行外层case 2)
}
case 2:
printf("third"); // 输出third
}
return 0; // 最终输出:hello third
}
考点:switch-case 语句、break 的作用(无 break 会 “穿透” 到下一个 case)。
题目 4:打印 1-100 中 3 的倍数
#include <stdio.h>
int main()
{
int i=0;
for(i=1;i<=100;i++){
if(i%3==0){ // 判断是否为3的倍数(取模等于0)
printf("%d ",i);
}
}
return 0; // 输出:3 6 9 ... 99
}
考点:for 循环、取模运算(%)、条件判断。
题目 5:1000-2000 年闰年判断
#include <stdio.h>
int main()
{
int year;
for(year=1000;year<=2000;year++){
// 闰年规则:能被4整除且不能被100整除,或能被400整除
if ((year%4==0 && year%100!=0) || (year%400==0))
printf("%d ",year);
}
return 0;
}
考点:闰年判断逻辑、逻辑运算符(&&/||)。
三、字符串操作
题目 6:strcmp 字符串比较
#include <stdio.h>
#include <string.h>
int main()
{
// strcmp规则:前串<后串返回负数,相等返回0,前串>后串返回正数
int ret = strcmp("abc","cde"); // "abc" < "cde",返回负数(通常是-1)
printf("%d\n",ret); // 输出:-1(不同编译器可能略有差异)
return 0;
}
考点:字符串比较函数strcmp的使用(需包含string.h)。
四、数值处理
题目 7:三个整数从大到小排序
#include <stdio.h>
int main()
{
int a,t;
int b;
int c;
scanf("%d %d %d",&a,&b,&c);
// 第一步:确保a≥b
if(a<b){
t=a;
a=b;
b=t;
}
// 第二步:确保a≥c(此时a是最大值)
if(a<c){
t=a;
a=c;
c=t;
}
// 第三步:确保b≥c(此时b是次大值,c是最小值)
if(b<c){
t=b;
b=c;
c=t;
}
printf("%d %d %d",a,b,c); // 输入示例:3 1 2 → 输出:3 2 1
return 0;
}
考点:变量交换、多条件排序逻辑。
题目 8:1-100 数字中 9 的个数统计
#include <stdio.h>
int main()
{
int sum=0;
for(int i=1;i<=100;i++){
if(i%10==9){ // 统计个位为9的数(9,19,...,99)→ 10个
sum++;
}
if(i/10==9){ // 统计十位为9的数(90-99)→ 10个(99会被统计两次)
sum++;
}
}
printf("%d",sum); // 输出:20
return 0;
}
考点:数位拆分(个位i%10、十位i/10)、重复计数处理。
题目 9:10 个整数找最大值
#include <stdio.h>
int main()
{
int i, max;
int arr[10];
printf("请输入10个整数:\n");
for (i = 0; i < 10; i++)
{
scanf("%d", &arr[i]);
}
max = arr[0]; // 初始化最大值为数组第一个元素
for (i = 1; i < 10; i++)
{
if (arr[i] > max)
{
max = arr[i]; // 更新最大值
}
}
printf("这10个整数中的最大值是:%d\n", max); // 输入示例:1 5 3 9 2 → 输出:9
return 0;
}
考点:数组遍历、最大值初始化与更新。
五、数学逻辑判断
题目 10:三角形类型判断
#include <stdio.h>
int main()
{
int a,b,c;
scanf("%d %d %d",&a,&b,&c);
// 先判断是否能构成三角形(任意两边之和大于第三边)
if((a+b<=c) || (a+c<=b) || (b+c<=a)){
printf("Not a triangle!");
}
// 再判断等边三角形(需优先于等腰判断)
else if(a==b && b==c){
printf("Equilateral triangle!");
}
// 再判断等腰三角形
else if((a==b) || (a==c) || (b==c)){
printf("Isosceles triangle!");
}
// 最后是普通三角形
else {
printf("Ordinary triangle!");
}
return 0;
// 输入示例1:1 2 3 → 输出:Not a triangle!
// 输入示例2:3 3 3 → 输出:Equilateral triangle!
// 输入示例3:3 3 4 → 输出:Isosceles triangle!
// 输入示例4:3 4 5 → 输出:Ordinary triangle!
}
考点:三角形构成条件、多分支判断的优先级。
题目 11:分数交替求和(1/1 - 1/2 + 1/3 - 1/4 + ... + 1/99 - 1/100)
#include <stdio.h>
int main()
{
double sum=0.0; // 必须用浮点型(int会丢失小数)
int flag=1; // 符号标记:1为正,-1为负
for(int i=1;i<=100;i++){
sum = sum + 1.0 * flag / i; // 1.0确保浮点运算,避免整数除法
flag = -flag; // 交替改变符号
}
printf("%lf\n",sum); // 输出:0.688172(近似值)
return 0;
}
考点:浮点运算、符号交替控制、循环累加。
总结
- 核心语法:自增自减、循环(for)、分支(if/switch)、数组是 C 语言基础核心,需掌握优先级和执行逻辑;
- 运算细节:整数 / 浮点运算的区别(分数求和需用
double)、取模(%)用于倍数 / 数位判断; - 逻辑优先级:多条件判断(如三角形类型)需注意顺序(先判断 “否”,再判断特殊情况,最后普通情况)。