C语言考试经典999题--编程题--持续更新中-----
一、数学循环类1.求1~100奇数和、偶数和考点for循环、分支、累加#include stdio.h int main() { int i, sum_odd0, sum_even0; for(i1; i100; i){ if(i%20) sum_even i; else sum_odd i; } printf(奇数和%d\n偶数和%d\n, sum_odd, sum_even); return 0; }2.判断素数质数考点函数、循环、素数判定逻辑。#include stdio.h int isPrime(int n){ if(n1) return 0; for(int i2; i*in; i) if(n%i0) return 0; return 1; } int main() { int x; scanf(%d,x); if(isPrime(x)) printf(是素数\n); else printf(不是素数\n); return 0; }3. 求最大公约数辗转相除法考点while 循环、函数、取模运算。#include stdio.h int gcd(int a,int b){ while(b){ int ta%b; ab; bt; } return a; } int main() { int x,y; scanf(%d%d,x,y); printf(gcd%d\n,gcd(x,y)); return 0; }二、数组/字符串类1.数组排序冒泡考点一维数组、双重循环、排序。#include stdio.h int main() { int a[5]{3,1,4,2,5}; int i,j,t; for(i0; i4; i) for(j0; j4-i; j) if(a[j]a[j1]){ ta[j]; a[j]a[j1]; a[j1]t; } for(i0; i5; i) printf(%d ,a[i]); return 0; }2.小写转大写不用strupr()考点字符串遍历、ASCII 码差。#include stdio.h int main() { char s[100]; gets(s); // 考试常用 for(int i0; s[i]!\0; i) if(s[i]a s[i]z) s[i] - 32; printf(%s\n,s); return 0; }3.字符串连接不用strcat考点字符串结束符、数组下标操作。#include stdio.h int main() { char a[200], b[100]; gets(a); gets(b); int i0,j0; while(a[i]!\0) i; while(b[j]!\0) a[i]b[j]; a[i]\0; printf(%s\n,a); return 0; }4. 找字符串中最长连续数字串安徽高频考点字符判断、连续统计、边界处理#include stdio.h #include ctype.h int main() { char s[100]; gets(s); int max_len0, cur_len0, start0, max_start0; for(int i0; s[i]!\0; i){ if(isdigit(s[i])){ cur_len; if(cur_lenmax_len){ max_lencur_len; max_startstart; } }else{ cur_len0; starti1; } } for(int imax_start; imax_startmax_len; i) printf(%c,s[i]); return 0; }三、结构体类每年必考 1 题1.学生结构体输入 求平均分考点结构体定义、数组、成员访问。#include stdio.h #define N 3 struct Stu{ char name[20]; int score; }; int main() { struct Stu s[N]; int sum0; for(int i0; iN; i){ scanf(%s%d, s[i].name, s[i].score); sum s[i].score; } printf(平均分%.2f\n, sum*1.0/N); return 0; }四、指针类中等难度常考1.指针实现数组逆序考点指针变量、地址运算、解引用。#include stdio.h int main() { int a[5]{1,2,3,4,5}; int *pa, *qa4, t; while(pq){ t*p; *p*q; *qt; p; q--; } for(int i0; i5; i) printf(%d ,a[i]); return 0; }五、打印图形1.正等腰三角形常考思路每行由前置空格 星号组成设总行数 n5当前行 i从 1 开始①空格数n - i逐行减少②星号数2*i - 1逐行增多③外层循环控制行数两层内层循环分别打空格、星号#include stdio.h int main() { int n 5; // 总层数 int i, j; // 外层控制行数 for (i 1; i n; i) { // 打印前置空格 for (j 1; j n - i; j) { printf( ); } // 打印星号 for (j 1; j 2 * i - 1; j) { printf(*); } printf(\n); // 每行结束换行 } return 0; }2.倒等腰三角形思路和正三角规律相反i 从总行数递减到 1①空格数n - i逐行增多②星号数2*i - 1逐行减少#include stdio.h int main() { int n 5; int i, j; for (i n; i 1; i--) { for (j 1; j n - i; j) { printf( ); } for (j 1; j 2 * i - 1; j) { printf(*); } printf(\n); } return 0; }3.左对齐直角三角形正直角三角形#include stdio.h int main() { int n 5; int i, j; for (i 1; i n; i) { // 无前置空格直接打印星号 for (j 1; j i; j) { printf(*); } printf(\n); } return 0; }4.左对齐直角三角形倒直角三角形#include stdio.h int main() { int n 5; int i, j; for (i n; i 1; i--) { for (j 1; j i; j) { printf(*); } printf(\n); } return 0; }5.空心三角形进阶考点#include stdio.h int main() { int n 5; int i, j; for (i 1; i n; i) { // 打印前置空格 for (j 1; j n - i; j) printf( ); for (j 1; j 2 * i - 1; j) { // 第一行、最后一行、左右边界打印*其余打空格 if (i 1 || i n || j 1 || j 2*i-1) printf(*); else printf( ); } printf(\n); } return 0; }6.打印固定行数菱形7行为例考点多重循环思路①设总奇数行示例 7 行上半 4 行递增下半 3 行递减②每一行由空格 星号组成③空格行数越大空格越少④星号每行星号数量 2*当前行号 - 1#include stdio.h int main() { int i, j, k; int n 4; // 上半部分行数控制菱形大小 // 打印上半部分递增 for (i 1; i n; i) { // 打印前面空格 for (j 1; j n - i; j) { printf( ); } // 打印星号 for (k 1; k 2 * i - 1; k) { printf(*); } printf(\n); // 换行 } // 打印下半部分递减 for (i n - 1; i 1; i--) { // 打印前面空格 for (j 1; j n - i; j) { printf( ); } // 打印星号 for (k 1; k 2 * i - 1; k) { printf(*); } printf(\n); } return 0; }7.空心菱形思路①每行空格数n - i②每行星号数2 * i - 1#include stdio.h int main() { int n 4; int i,j; for(i1;in;i) { for(j1;jn-i;j) printf( ); printf(*); for(j1;j2*i-3;j) printf( ); if(i!1) printf(*); printf(\n); } for(in-1;i1;i--) { for(j1;jn-i;j) printf( ); printf(*); for(j1;j2*i-3;j) printf( ); if(i!1) printf(*); printf(\n); } return 0; }