├── 1.md ├── 10.md ├── 100.md ├── 11.md ├── 12.md ├── 13.md ├── 14.md ├── 15.md ├── 16.md ├── 17.md ├── 18.md ├── 19.md ├── 2.md ├── 20.md ├── 21.md ├── 22.md ├── 23.md ├── 24.md ├── 25.md ├── 26.md ├── 27.md ├── 28.md ├── 29.md ├── 3.md ├── 30.md ├── 31.md ├── 32.md ├── 33.md ├── 34.md ├── 35.md ├── 36.md ├── 37.md ├── 38.md ├── 39.md ├── 4.md ├── 40.md ├── 41.md ├── 42.md ├── 43.md ├── 44.md ├── 45.md ├── 46.md ├── 47.md ├── 48.md ├── 49.md ├── 5.md ├── 50.md ├── 51.md ├── 52.md ├── 53.md ├── 54.md ├── 55.md ├── 56.md ├── 57.md ├── 58.md ├── 59.md ├── 6.md ├── 60.md ├── 61.md ├── 62.md ├── 63.md ├── 64.md ├── 65.md ├── 66.md ├── 67.md ├── 68.md ├── 69.md ├── 7.md ├── 70.md ├── 71.md ├── 72.md ├── 73.md ├── 74.md ├── 75.md ├── 76.md ├── 77.md ├── 78.md ├── 79.md ├── 8.md ├── 80.md ├── 81.md ├── 82.md ├── 83.md ├── 84.md ├── 85.md ├── 86.md ├── 87.md ├── 88.md ├── 89.md ├── 9.md ├── 90.md ├── 91.md ├── 92.md ├── 93.md ├── 94.md ├── 95.md ├── 96.md ├── 97.md ├── 98.md ├── 99.md └── README.md /1.md: -------------------------------------------------------------------------------- 1 | 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 2 | 3 | ```cpp 4 | #include 5 | 6 | int main() 7 | { 8 | int i, j, k; 9 | for (int i = 1; i < 5; ++i) 10 | { 11 | for (int j = 1; j < 5; ++j) 12 | { 13 | for (int k = 1; k < 5; ++k) 14 | { 15 | if (i != j && i != k && j != k) 16 | { 17 | printf("%d%d%d\n", i, j, k); 18 | } 19 | } 20 | } 21 | } 22 | 23 | return 0; 24 | } 25 | ``` 26 | -------------------------------------------------------------------------------- /10.md: -------------------------------------------------------------------------------- 1 | 题目:打印楼梯,同时在楼梯上方打印两个笑脸。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | for (int i = 0; i < 12; i++) 8 | { 9 | if (i == 0) 10 | { 11 | printf("\1\1"); 12 | } 13 | for (int j = 0; j < i; ++j) 14 | { 15 | printf("%c%c", 219, 219); 16 | } 17 | printf("\n"); 18 | } 19 | return 0; 20 | } 21 | ``` 22 | -------------------------------------------------------------------------------- /100.md: -------------------------------------------------------------------------------- 1 | 题目:有五个学生,每个学生有3门课的成绩,从键盘输入以上数据(包括学生号,姓名,三门课成绩),计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中。 2 | ```c 3 | #include 4 | #include 5 | 6 | struct Student 7 | { 8 | int id; 9 | char name[20]; 10 | int grade1; 11 | int grade2; 12 | int grade3; 13 | int averageGrade; 14 | }; 15 | 16 | int main() 17 | { 18 | FILE* fp = NULL; 19 | Student stu[5]; 20 | for (int i = 0; i < 5; ++i) 21 | { 22 | scanf("%d %s %d %d %d", &stu[i].id, &stu[i].name, &stu[i].grade1, &stu[i].grade2, &stu[i].grade3); 23 | stu[i].averageGrade = (stu[i].grade1 + stu[i].grade2 + stu[i].grade3) / 3; 24 | } 25 | 26 | if ((fp = fopen("stud.txt", "w")) == NULL) 27 | { 28 | printf("ERROR\n"); 29 | exit(0); 30 | } 31 | for (int i = 0; i < 5; ++i) 32 | { 33 | fprintf(fp, "%d %s %d %d %d %d\n", stu[i].id, stu[i].name, stu[i].grade1, stu[i].grade2, stu[i].grade3, stu[i].averageGrade); 34 | } 35 | fclose(fp); 36 | 37 | return 0; 38 | } 39 | ``` 40 | stud.txt里已写入 41 | ``` 42 | 1 a 10 20 30 20 43 | 2 b 20 30 40 30 44 | 3 c 30 40 50 40 45 | 4 d 40 50 60 50 46 | 5 e 50 60 70 60 47 | ``` 48 | -------------------------------------------------------------------------------- /11.md: -------------------------------------------------------------------------------- 1 | 题目:古典问题(兔子生崽):有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?(输出前40个月即可) 2 | (斐波那契数列) 3 | ```c 4 | #include 5 | 6 | int main() 7 | { 8 | int cnt; 9 | int cnt1 = 1, cnt2 = 1; 10 | printf("第1个月:%d\n", cnt1); 11 | printf("第2个月:%d\n", cnt2); 12 | 13 | for (int i = 3; i < 41; ++i) 14 | { 15 | cnt = cnt1 + cnt2; 16 | printf("第%d个月:%d\n", i, cnt); 17 | cnt1 = cnt2; 18 | cnt2 = cnt; 19 | } 20 | return 0; 21 | } 22 | ``` 23 | -------------------------------------------------------------------------------- /12.md: -------------------------------------------------------------------------------- 1 | 题目:判断101到200之间的素数。 2 | 判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。 3 | ```c 4 | #include 5 | #include 6 | 7 | int main() 8 | { 9 | for (int i = 101; i <= 200; ++i) 10 | { 11 | int j; 12 | for (j = 2; j <= sqrt(i); ++j) 13 | { 14 | if (i%j == 0) 15 | { 16 | break; 17 | } 18 | } 19 | if (j > sqrt(i)) 20 | { 21 | printf("%d ", i); 22 | } 23 | } 24 | 25 | return 0; 26 | } 27 | ``` 28 | -------------------------------------------------------------------------------- /13.md: -------------------------------------------------------------------------------- 1 | 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为153 = 1的三次方+5的三次方+3的三次方。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | for (int i = 100; i < 1000; ++i) 8 | { 9 | int units, tens, huns; 10 | huns = i / 100; 11 | tens = i % 100 / 10; 12 | units = i % 10; 13 | if (i == huns*huns*huns + tens*tens*tens + units*units*units) 14 | { 15 | printf("%d ", i); 16 | } 17 | } 18 | 19 | return 0; 20 | } 21 | ``` 22 | -------------------------------------------------------------------------------- /14.md: -------------------------------------------------------------------------------- 1 | 题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。 2 | 3 | 分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: 4 | (1)n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数n。重复执行。 5 | (2)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 6 | ```c 7 | #include 8 | 9 | int main() 10 | { 11 | int n; 12 | scanf("%d", &n); 13 | printf("%d = ", n); 14 | for (int i = 2; i <= n; ++i) 15 | { 16 | while (n%i == 0) 17 | { 18 | printf("%d", i); 19 | n /= i; 20 | if (n != 1) 21 | { 22 | printf(" * "); 23 | } 24 | } 25 | } 26 | 27 | return 0; 28 | } 29 | ``` 30 | -------------------------------------------------------------------------------- /15.md: -------------------------------------------------------------------------------- 1 | 题目:利用条件运算符的嵌套:学习成绩>=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int score; 8 | char rank; 9 | scanf("%d", &score); 10 | rank = (score >= 90) ? 'A' : ((score >= 60) ? 'B' : 'C'); 11 | printf("%c", rank); 12 | return 0; 13 | } 14 | ``` 15 | -------------------------------------------------------------------------------- /16.md: -------------------------------------------------------------------------------- 1 | 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 2 | 最小公倍数 * 最大公约数 = m * n 3 | ```c 4 | #include 5 | 6 | int main() 7 | { 8 | int m, n; 9 | scanf("%d %d", &m, &n); 10 | int tmp = m < n ? m : n; 11 | for (int i = tmp; i > 0; --i) 12 | { 13 | if (m%i == 0 && n%i == 0) 14 | { 15 | printf("最大公约数为%d\n", i); 16 | printf("最小公倍数为%d", m*n / i); 17 | break; 18 | } 19 | } 20 | 21 | 22 | return 0; 23 | } 24 | ``` 25 | -------------------------------------------------------------------------------- /17.md: -------------------------------------------------------------------------------- 1 | 题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | char c; 8 | int letterCnt = 0, spaceCnt = 0, numCnt = 0, otherCnt = 0; 9 | while ((c = getchar()) != '\n') 10 | { 11 | if ((c >= 'a'&&c <= 'z') || (c >= 'A'&&c <= 'Z')) 12 | { 13 | letterCnt++; 14 | } 15 | else if (c == ' ') 16 | { 17 | spaceCnt++; 18 | } 19 | else if (c >= '0'&&c <= '9') 20 | { 21 | numCnt++; 22 | } 23 | else 24 | { 25 | otherCnt++; 26 | } 27 | } 28 | 29 | printf("英文字母个数为%d\n", letterCnt); 30 | printf("空格个数为%d\n", spaceCnt); 31 | printf("数字个数为%d\n", numCnt); 32 | printf("其它字符个数为%d", otherCnt); 33 | 34 | return 0; 35 | } 36 | ``` 37 | -------------------------------------------------------------------------------- /18.md: -------------------------------------------------------------------------------- 1 | 题目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int a, n; 8 | scanf("%d %d", &a, &n); 9 | int s = 0; 10 | int tmp = a; 11 | for (int i = 0; i < n; ++i) 12 | { 13 | s += tmp; 14 | tmp = tmp * 10 + a; 15 | } 16 | printf("a+aa+...=%d", s); 17 | 18 | return 0; 19 | } 20 | ``` 21 | -------------------------------------------------------------------------------- /19.md: -------------------------------------------------------------------------------- 1 | 题目:一个数如果恰好等于它的真因子之和,这个数就称为"完数"。例如6=1+2+3。编程找出1000以内的所有完数。 2 | Tips:找数n的因子只需要找到n/2(n/2-n的数是n的1-2倍,所以当大于n/2时,不会有因数) 3 | ```c 4 | #include 5 | 6 | int main() 7 | { 8 | int a[1000]; 9 | for (int i = 1; i < 1000; ++i) 10 | { 11 | int sum = 0, k = 0; 12 | for (int j = 1; j <= i / 2; ++j) 13 | { 14 | if (i%j == 0) 15 | { 16 | sum += j; 17 | a[k++] = j; 18 | } 19 | } 20 | if (i == sum) 21 | { 22 | printf("%d = %d", i, a[0]); 23 | for (int m = 1; m < k; ++m) 24 | { 25 | printf(" + %d", a[m]); 26 | } 27 | printf("\n"); 28 | } 29 | } 30 | 31 | return 0; 32 | } 33 | ``` 34 | -------------------------------------------------------------------------------- /2.md: -------------------------------------------------------------------------------- 1 | 题目: 2 | 企业发放的奖金根据利润提成。 3 | 利润(I)低于或等于10万元时,奖金可提10%; 4 | 利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%; 5 | 20万到40万之间时,高于20万元的部分,可提成5%; 6 | 40万到60万之间时高于40万元的部分,可提成3%; 7 | 60万到100万之间时,高于60万元的部分,可提成1.5%; 8 | 高于100万元时,超过100万元的部分按1%提成。 9 | 从键盘输入当月利润I,求应发放奖金总数? 10 | 11 | ```cpp 12 | #include 13 | 14 | int main() 15 | { 16 | double i; 17 | double bonus = 0.0; 18 | scanf("%lf", &i); 19 | 20 | if (i <= 10) 21 | { 22 | bonus = i*0.1; 23 | } 24 | else if (i > 10 && i <= 20) 25 | { 26 | bonus = 10 * 0.1 + (i - 10)*0.075; 27 | } 28 | else if (i > 20 && i <= 40) 29 | { 30 | bonus = 10 * 0.1 + 10 * 0.075 + (i - 20)*0.05; 31 | } 32 | else if (i > 40 && i <= 60) 33 | { 34 | bonus = 10 * 0.1 + 10 * 0.075 + +20 * 0.05 + (i - 40)*0.03; 35 | } 36 | else if (i > 60 && i <= 100) 37 | { 38 | bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + (i - 60)*0.015; 39 | } 40 | else 41 | { 42 | bonus = 10 * 0.1 + 10 * 0.075 + 20 * 0.05 + 20 * 0.03 + 40 * 0.015 + (i - 100)*0.01; 43 | } 44 | 45 | printf("%f", bonus); 46 | 47 | return 0; 48 | } 49 | ``` 50 | -------------------------------------------------------------------------------- /20.md: -------------------------------------------------------------------------------- 1 | 题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | float height = 100; 8 | float sum = height; 9 | for (int i = 0; i < 9; ++i) 10 | { 11 | height /= 2; 12 | sum += 2 * height; 13 | } 14 | height /= 2; 15 | printf("共经过%f米\n", sum); 16 | printf("第10次反弹%f米\n", height); 17 | 18 | return 0; 19 | } 20 | ``` 21 | -------------------------------------------------------------------------------- /21.md: -------------------------------------------------------------------------------- 1 | 题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,又多吃了一个。第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,只剩下一个桃子了。求第一天共摘了多少。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int cnt = 1; 8 | for (int i = 0; i < 9; ++i) 9 | { 10 | cnt += 1; 11 | cnt *= 2; 12 | } 13 | printf("第一天共摘%d个", cnt); 14 | 15 | return 0; 16 | } 17 | ``` 18 | -------------------------------------------------------------------------------- /22.md: -------------------------------------------------------------------------------- 1 | 题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | char a, b, c; 8 | for (int a = 'x'; a <= 'z'; ++a) 9 | { 10 | for (int b = 'x'; b <= 'z'; ++b) 11 | { 12 | for (int c = 'x'; c <= 'z'; ++c) 13 | { 14 | if (a != 'x' && c != 'x' && c != 'z' && a != b && a != c && b != c) 15 | { 16 | printf("a和%c比,b和%c比,c和%c比\n", a, b, c); 17 | } 18 | } 19 | } 20 | } 21 | 22 | return 0; 23 | } 24 | ``` 25 | -------------------------------------------------------------------------------- /23.md: -------------------------------------------------------------------------------- 1 | 题目:打印出如下图案(菱形)。 2 | ```c 3 | * 4 | *** 5 | ***** 6 | ******* 7 | ***** 8 | *** 9 | * 10 | ``` 11 | 12 | ```c 13 | #include 14 | 15 | int main() 16 | { 17 | for (int i = 0; i < 4; ++i) 18 | { 19 | for (int space = 3 - i; space > 0; --space) 20 | { 21 | printf(" "); 22 | } 23 | for (int j = 0; j <= 2 * i; ++j) 24 | { 25 | printf("*"); 26 | } 27 | printf("\n"); 28 | } 29 | 30 | for (int i = 3; i > 0; --i) 31 | { 32 | for (int space = 4 - i; space > 0; --space) 33 | { 34 | printf(" "); 35 | } 36 | 37 | for (int j = 2 * (i - 1); j >= 0; --j) 38 | { 39 | printf("*"); 40 | } 41 | printf("\n"); 42 | } 43 | 44 | return 0; 45 | } 46 | ``` 47 | -------------------------------------------------------------------------------- /24.md: -------------------------------------------------------------------------------- 1 | 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | float numerator = 2, denominator = 1; 8 | float sum = 0; 9 | for (int i = 0; i < 20; ++i) 10 | { 11 | float tmp = numerator / denominator; 12 | sum += tmp; 13 | int priorNumerator = numerator; 14 | numerator = numerator + denominator; 15 | denominator = priorNumerator; 16 | } 17 | 18 | printf("%f\n", sum); 19 | 20 | return 0; 21 | } 22 | ``` 23 | Answer: 24 | ``` 25 | 32.660263 26 | ``` 27 | -------------------------------------------------------------------------------- /25.md: -------------------------------------------------------------------------------- 1 | 题目:求1+2!+3!+...+20!的和。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | double sum = 0.0; 8 | for (int i = 1; i <= 20; ++i) 9 | { 10 | double tmp = 1; 11 | for (int j = 1; j <= i; ++j) 12 | { 13 | tmp *= j; 14 | } 15 | sum += tmp; 16 | } 17 | printf("%lf", sum); 18 | 19 | return 0; 20 | } 21 | ``` 22 | -------------------------------------------------------------------------------- /26.md: -------------------------------------------------------------------------------- 1 | 题目:利用递归方法求5!。 2 | ```c 3 | #include 4 | 5 | int f(int num) 6 | { 7 | int sum; 8 | if (num == 1) 9 | { 10 | sum = 1; 11 | } 12 | else 13 | { 14 | sum = num * f(num - 1); 15 | } 16 | return sum; 17 | } 18 | 19 | int main() 20 | { 21 | int num = 5; 22 | printf("%d", f(num)); 23 | 24 | return 0; 25 | } 26 | ``` 27 | -------------------------------------------------------------------------------- /27.md: -------------------------------------------------------------------------------- 1 | 题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。 2 | ```c 3 | #include 4 | 5 | void f(int n) 6 | { 7 | if (n > 1) 8 | { 9 | char tmp = getchar(); 10 | f(n - 1); 11 | putchar(tmp); 12 | } 13 | else 14 | { 15 | char tmp = getchar(); 16 | putchar(tmp); 17 | } 18 | } 19 | 20 | int main() 21 | { 22 | f(5); 23 | return 0; 24 | } 25 | ``` 26 | -------------------------------------------------------------------------------- /28.md: -------------------------------------------------------------------------------- 1 | 题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大? 2 | ```c 3 | #include 4 | 5 | int f(int n) 6 | { 7 | int age = 0; 8 | if (n == 1) 9 | { 10 | return 10; 11 | } 12 | else 13 | { 14 | age = f(n - 1) + 2; 15 | return age; 16 | } 17 | } 18 | 19 | int main() 20 | { 21 | int age = f(5); 22 | printf("%d", age); 23 | return 0; 24 | } 25 | ``` 26 | -------------------------------------------------------------------------------- /29.md: -------------------------------------------------------------------------------- 1 | 题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | 8 | int n; 9 | scanf("%d", &n); 10 | int cnt = 0; 11 | for (int i = n; i > 0; i /= 10) 12 | { 13 | printf("%d ", i % 10); 14 | cnt++; 15 | } 16 | printf("\n%d位数", cnt); 17 | 18 | return 0; 19 | } 20 | ``` 21 | -------------------------------------------------------------------------------- /3.md: -------------------------------------------------------------------------------- 1 | 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? 2 | 3 | ```c 4 | #include 5 | #include 6 | 7 | int main() 8 | { 9 | int i = -101; 10 | 11 | double a = -1, b = -1; 12 | 13 | while (1) 14 | { 15 | a = sqrt(i + 100); 16 | b = sqrt(i + 100 + 168); 17 | 18 | if (a == (int)a && b == (int)b) 19 | { 20 | printf("%d\n", i); 21 | } 22 | 23 | i++; 24 | } 25 | 26 | return 0; 27 | } 28 | ``` 29 | -------------------------------------------------------------------------------- /30.md: -------------------------------------------------------------------------------- 1 | 题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int n; 8 | scanf("%d", &n); 9 | int sum = 0; 10 | for (int i = n; i > 0; i /= 10) 11 | { 12 | sum = sum * 10 + i % 10; 13 | } 14 | if (sum == n) 15 | { 16 | printf("是回文数"); 17 | } 18 | else 19 | { 20 | printf("不是回文数"); 21 | } 22 | 23 | return 0; 24 | } 25 | ``` 26 | -------------------------------------------------------------------------------- /31.md: -------------------------------------------------------------------------------- 1 | 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | char c1, c2; 8 | scanf("%c", &c1); 9 | switch (c1) 10 | { 11 | case 'M': 12 | printf("Monday"); 13 | break; 14 | case 'T': 15 | getchar(); 16 | scanf("%c", &c2); 17 | if (c2 == 'u') 18 | { 19 | printf("Tuesday"); 20 | } 21 | else 22 | { 23 | printf("Thursday"); 24 | } 25 | break; 26 | case 'W': 27 | printf("Wednesday"); 28 | break; 29 | case 'F': 30 | printf("Friday"); 31 | break; 32 | case 'S': 33 | getchar(); 34 | scanf("%c", &c2); 35 | if (c2 == 'a') 36 | { 37 | printf("Saturday"); 38 | } 39 | else 40 | { 41 | printf("Sunday"); 42 | } 43 | break; 44 | } 45 | 46 | return 0; 47 | } 48 | ``` 49 | -------------------------------------------------------------------------------- /32.md: -------------------------------------------------------------------------------- 1 | 题目:删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | char s[256]; 8 | scanf("%s", s); 9 | printf("删除字母:"); 10 | char c; 11 | getchar(); 12 | scanf("%c", &c); 13 | for (int i = 0; s[i] != '\0'; ++i) 14 | { 15 | if (s[i] == c) 16 | { 17 | int j; 18 | for (j = i; s[j] != '\0'; ++j) 19 | { 20 | s[j] = s[j + 1]; 21 | } 22 | s[j] = '\0'; 23 | } 24 | } 25 | 26 | printf("%s", s); 27 | 28 | return 0; 29 | } 30 | ``` 31 | -------------------------------------------------------------------------------- /33.md: -------------------------------------------------------------------------------- 1 | 题目:判断一个数字是否为质数(素数)。 2 | ```c 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | int n; 9 | scanf("%d", &n); 10 | int flag = 1; 11 | 12 | if (n <= 0) 13 | { 14 | flag = 0; 15 | } 16 | 17 | for (int i = 2; i < sqrt(n); ++i) 18 | { 19 | if (n%i == 0) 20 | { 21 | flag = 0; 22 | break; 23 | } 24 | } 25 | if (flag) 26 | { 27 | printf("是素数"); 28 | } 29 | else 30 | { 31 | printf("不是素数"); 32 | } 33 | 34 | return 0; 35 | } 36 | ``` 37 | -------------------------------------------------------------------------------- /34.md: -------------------------------------------------------------------------------- 1 | 题目:练习函数调用。 2 | ```c 3 | #include 4 | 5 | void hello() 6 | { 7 | printf("Hello world!\n"); 8 | } 9 | 10 | void f() 11 | { 12 | for (int i = 0; i < 5; ++i) 13 | { 14 | hello(); 15 | } 16 | } 17 | 18 | int main() 19 | { 20 | f(); 21 | 22 | return 0; 23 | } 24 | ``` 25 | -------------------------------------------------------------------------------- /35.md: -------------------------------------------------------------------------------- 1 | 题目:字符串反转,如将字符串 "www.runoob.com" 反转为 "moc.boonur.www"。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | char s1[256],s2[256]; 8 | scanf("%s", s1); 9 | int cnt = 0; 10 | for (int i = 0; s1[i] != '\0'; ++i) 11 | { 12 | cnt++; 13 | } 14 | int j = cnt; 15 | for (int i = 0; i < cnt; ++i) 16 | { 17 | s2[--j] = s1[i]; 18 | } 19 | s2[cnt] = '\0'; 20 | 21 | printf("%s", s2); 22 | 23 | return 0; 24 | } 25 | ``` 26 | -------------------------------------------------------------------------------- /36.md: -------------------------------------------------------------------------------- 1 | 题目:求100之内的素数。 2 | ```c 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | for (int i = 2; i <= 100; ++i) 9 | { 10 | int flag = 1; 11 | 12 | for (int j = 2; j <= sqrt(i); ++j) 13 | { 14 | if (i%j == 0) 15 | { 16 | flag = 0; 17 | break; 18 | } 19 | } 20 | 21 | if (flag) 22 | { 23 | printf("%d\n", i); 24 | } 25 | } 26 | 27 | return 0; 28 | } 29 | ``` 30 | -------------------------------------------------------------------------------- /37.md: -------------------------------------------------------------------------------- 1 | 题目:对10个数进行排序。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int n; 8 | int a[10]; 9 | for (int i = 0; i < 10; ++i) 10 | { 11 | scanf("%d", &a[i]); 12 | } 13 | 14 | //选择排序 15 | for (int i = 0; i < 9; ++i) 16 | { 17 | int min = i; 18 | for (int j = i + 1; j < 10; ++j) 19 | { 20 | if (a[min] > a[j]) 21 | { 22 | min = j; 23 | } 24 | } 25 | if (min != i) 26 | { 27 | int tmp = a[min]; 28 | a[min] = a[i]; 29 | a[i] = tmp; 30 | } 31 | } 32 | 33 | for (int i = 0; i < 10; ++i) 34 | { 35 | printf("%d ", a[i]); 36 | } 37 | 38 | return 0; 39 | } 40 | ``` 41 | -------------------------------------------------------------------------------- /38.md: -------------------------------------------------------------------------------- 1 | 题目:求一个3*3矩阵对角线元素之和。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int a[3][3]; 8 | for (int i = 0; i < 3; ++i) 9 | { 10 | for (int j = 0; j < 3; ++j) 11 | { 12 | scanf("%d", &a[i][j]); 13 | } 14 | } 15 | 16 | int sum = 0; 17 | for (int i = 0; i < 3; ++i) 18 | { 19 | sum += a[i][i]; 20 | } 21 | printf("%d", sum); 22 | 23 | return 0; 24 | } 25 | ``` 26 | -------------------------------------------------------------------------------- /39.md: -------------------------------------------------------------------------------- 1 | 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。 2 | ```c 3 | #include 4 | 5 | int a[11] = { 1,4,6,9,13,16,19,28,40,100 }; 6 | int n; 7 | 8 | void move(int num, int i) 9 | { 10 | for (int j = num; j >= i; --j) 11 | { 12 | a[j + 1] = a[j]; 13 | } 14 | a[i] = n; 15 | } 16 | 17 | int main() 18 | { 19 | for (int i = 0; i < 10; ++i) 20 | { 21 | printf("%d ", a[i]); 22 | } 23 | printf("\n"); 24 | 25 | scanf("%d", &n); 26 | for (int i = 0; i < 11; ++i) 27 | { 28 | if (i == 0) 29 | { 30 | if (n < a[i]) 31 | { 32 | move(9, i); 33 | } 34 | } 35 | if (i > 1 && i < 10) 36 | { 37 | if (a[i - 1] < n && n < a[i]) 38 | { 39 | move(9, i); 40 | } 41 | } 42 | if (i == 10) 43 | { 44 | if (n > a[i]) 45 | { 46 | a[10] = n; 47 | } 48 | } 49 | } 50 | 51 | for (int i = 0; i < 11; ++i) 52 | { 53 | printf("%d ", a[i]); 54 | } 55 | 56 | return 0; 57 | } 58 | ``` 59 | -------------------------------------------------------------------------------- /4.md: -------------------------------------------------------------------------------- 1 | 题目:输入某年某月某日,判断这一天是这一年的第几天? 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int year, month, day; 8 | scanf("%d,%d,%d", &year, &month, &day); 9 | 10 | int cnt = 0; 11 | 12 | if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) 13 | { 14 | switch (month) 15 | { 16 | case 1: 17 | cnt = day; 18 | break; 19 | 20 | case 2: 21 | cnt = 31 + day; 22 | break; 23 | 24 | case 3: 25 | cnt = 31 + 29 + day; 26 | break; 27 | 28 | case 4: 29 | cnt = 31 + 29 + 31 + day; 30 | break; 31 | 32 | case 5: 33 | cnt = 31 + 29 + 31 + 30 + day; 34 | break; 35 | 36 | case 6: 37 | cnt = 31 + 29 + 31 + 30 + 31 + day; 38 | break; 39 | 40 | case 7: 41 | cnt = 31 + 29 + 31 + 30 + 31 + 30 + day; 42 | break; 43 | 44 | case 8: 45 | cnt = 31 + 29 + 31 + 30 + 31 + 30 + 31 + day; 46 | break; 47 | 48 | case 9: 49 | cnt = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + day; 50 | break; 51 | 52 | case 10: 53 | cnt = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day; 54 | break; 55 | 56 | case 11: 57 | cnt = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day; 58 | break; 59 | 60 | case 12: 61 | cnt = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day; 62 | break; 63 | } 64 | } 65 | else 66 | { 67 | switch (month) 68 | { 69 | case 1: 70 | cnt = day; 71 | break; 72 | 73 | case 2: 74 | cnt = 31 + day; 75 | break; 76 | 77 | case 3: 78 | cnt = 31 + 28 + day; 79 | break; 80 | 81 | case 4: 82 | cnt = 31 + 28 + 31 + day; 83 | break; 84 | 85 | case 5: 86 | cnt = 31 + 28 + 31 + 30 + day; 87 | break; 88 | 89 | case 6: 90 | cnt = 31 + 28 + 31 + 30 + 31 + day; 91 | break; 92 | 93 | case 7: 94 | cnt = 31 + 28 + 31 + 30 + 31 + 30 + day; 95 | break; 96 | 97 | case 8: 98 | cnt = 31 + 28 + 31 + 30 + 31 + 30 + 31 + day; 99 | break; 100 | 101 | case 9: 102 | cnt = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + day; 103 | break; 104 | 105 | case 10: 106 | cnt = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day; 107 | break; 108 | 109 | case 11: 110 | cnt = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day; 111 | break; 112 | 113 | case 12: 114 | cnt = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day; 115 | break; 116 | } 117 | } 118 | 119 | printf("这一天是这一年的第%d天", cnt); 120 | 121 | return 0; 122 | } 123 | ``` 124 | -------------------------------------------------------------------------------- /40.md: -------------------------------------------------------------------------------- 1 | 题目:将一个数组逆序输出。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int a[10] = { 0,1,2,3,4,5,6,7,8,9 }; 8 | 9 | for (int i = 9; i >= 0; --i) 10 | { 11 | printf("%d ", a[i]); 12 | } 13 | 14 | return 0; 15 | } 16 | ``` 17 | -------------------------------------------------------------------------------- /41.md: -------------------------------------------------------------------------------- 1 | 题目:学习static定义静态变量的用法。 2 | ```c 3 | #include 4 | 5 | void f() 6 | { 7 | int i = 0; 8 | static int si = 0; 9 | printf("i=%d\n", i); 10 | printf("static si = %d\n", si); 11 | i++; 12 | si++; 13 | } 14 | 15 | int main() 16 | { 17 | for (int i = 0; i < 4; ++i) 18 | { 19 | f(); 20 | } 21 | 22 | return 0; 23 | } 24 | ``` 25 | 结果: 26 | ```c 27 | i=0 28 | static si = 0 29 | i=0 30 | static si = 1 31 | i=0 32 | static si = 2 33 | i=0 34 | static si = 3 35 | ``` 36 | -------------------------------------------------------------------------------- /42.md: -------------------------------------------------------------------------------- 1 | 题目:学习使用auto定义变量的用法。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int cnt = 5; 8 | for (int i = 0; i < 4; ++i) 9 | { 10 | printf("cnt 变量为 %d\n", cnt); 11 | cnt++; 12 | { 13 | auto int cnt = 1; 14 | printf("内置模块 cnt 变量为 %d\n", cnt); 15 | cnt++; 16 | } 17 | } 18 | 19 | return 0; 20 | } 21 | ``` 22 | 23 | auto报错解决方法请看: 24 | https://blog.csdn.net/hubojing/article/details/89883368 25 | 26 | 结果: 27 | ```c 28 | cnt 变量为 5 29 | 内置模块 cnt 变量为 1 30 | cnt 变量为 6 31 | 内置模块 cnt 变量为 1 32 | cnt 变量为 7 33 | 内置模块 cnt 变量为 1 34 | cnt 变量为 8 35 | 内置模块 cnt 变量为 1 36 | ``` 37 | -------------------------------------------------------------------------------- /43.md: -------------------------------------------------------------------------------- 1 | 题目:学习使用static的另一用法。  2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int cnt = 5; 8 | for (int i = 0; i < 4; ++i) 9 | { 10 | printf("cnt 变量为 %d\n", cnt); 11 | cnt++; 12 | { 13 | static int cnt = 1; 14 | printf("内置模块 cnt 变量为 %d\n", cnt); 15 | cnt++; 16 | } 17 | } 18 | 19 | return 0; 20 | } 21 | ``` 22 | 结果: 23 | ``` 24 | cnt 变量为 5 25 | 内置模块 cnt 变量为 1 26 | cnt 变量为 6 27 | 内置模块 cnt 变量为 2 28 | cnt 变量为 7 29 | 内置模块 cnt 变量为 3 30 | cnt 变量为 8 31 | 内置模块 cnt 变量为 4 32 | ``` 33 | -------------------------------------------------------------------------------- /44.md: -------------------------------------------------------------------------------- 1 | 题目:学习使用external的用法。 2 | ```c 3 | #include 4 | int a, b, c; 5 | 6 | void add() 7 | { 8 | int a; 9 | a = 1; 10 | c = a + b; 11 | } 12 | 13 | int main() 14 | { 15 | a = b = 2; 16 | add(); 17 | printf("c = %d\n", c); 18 | return 0; 19 | } 20 | ``` 21 | 结果: 22 | ``` 23 | c = 3 24 | ``` 25 | -------------------------------------------------------------------------------- /45.md: -------------------------------------------------------------------------------- 1 | 题目:学习使用register定义变量的方法。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | register int i; 8 | int sum = 0; 9 | for (i = 0; i < 100; ++i) 10 | { 11 | sum += i; 12 | } 13 | printf("%d\n", sum); 14 | 15 | return 0; 16 | } 17 | ``` 18 | 结果: 19 | ``` 20 | 4950 21 | ``` 22 | -------------------------------------------------------------------------------- /46.md: -------------------------------------------------------------------------------- 1 | 题目:宏#define命令练习。 2 | ```c 3 | #include 4 | #define TRUE 1 5 | #define FALSE 0 6 | #define SQ(x) (x)*(x) 7 | 8 | int main() 9 | { 10 | int num; 11 | int flag = 1; 12 | //num < 20 程序将终止 13 | while (flag) 14 | { 15 | scanf("%d", &num); 16 | printf("该数的平方为 %d \n", SQ(num)); 17 | if (num >= 20) 18 | flag = TRUE; 19 | else 20 | flag = FALSE; 21 | } 22 | 23 | return 0; 24 | } 25 | ``` 26 | -------------------------------------------------------------------------------- /47.md: -------------------------------------------------------------------------------- 1 | 题目:宏#define命令练习。 2 | ```c 3 | #include 4 | #define exchange(a,b) { int t;t=a;a=b;b=t;}//注意放在一行里 5 | int main() 6 | { 7 | int x = 5; 8 | int y = 10; 9 | printf("x=%d; y=%d\n", x, y); 10 | exchange(x, y); 11 | printf("x=%d; y=%d\n", x, y); 12 | return 0; 13 | } 14 | ``` 15 | -------------------------------------------------------------------------------- /48.md: -------------------------------------------------------------------------------- 1 | 题目:宏#define命令练习。 2 | ```c 3 | #include 4 | #define LAG > 5 | #define SMA < 6 | #define EQ == 7 | 8 | int main() 9 | { 10 | int i, j; 11 | printf("请输入两个数字:\n"); 12 | scanf("%d %d", &i, &j); 13 | if (i LAG j) 14 | printf("%d 大于 %d \n", i, j); 15 | else if (i EQ j) 16 | printf("%d 等于 %d \n", i, j); 17 | else if (i SMA j) 18 | printf("%d 小于 %d \n", i, j); 19 | else 20 | printf("ERROR.\n"); 21 | return 0; 22 | } 23 | ``` 24 | -------------------------------------------------------------------------------- /49.md: -------------------------------------------------------------------------------- 1 | 题目:#if #ifdef和#ifndef的综合应用。 2 | ```c 3 | #include 4 | #define MAX 5 | #define MAXIMUM(x,y) (x>y)?x:y 6 | #define MINIMUM(x,y) (x>y)?y:x 7 | int main() 8 | { 9 | int a = 10, b = 20; 10 | #ifdef MAX 11 | printf("w 大 %d\n", MAXIMUM(a, b)); 12 | #else 13 | printf("w 小 %d\n", MINIMUM(a, b)); 14 | #endif 15 | 16 | #ifndef MIN 17 | printf("x 小 %d\n", MINIMUM(a, b)); 18 | #else 19 | printf("x 大 %d\n", MAXIMUM(a, b)); 20 | #endif 21 | 22 | #undef MAX 23 | #ifdef MAX 24 | printf("y 大 %d\n", MAXIMUM(a, b)); 25 | #else 26 | printf("y 小 %d\n", MINIMUM(a, b)); 27 | #endif 28 | 29 | #define MIN 30 | #ifndef MIN 31 | printf("z 小 %d\n", MINIMUM(a, b)); 32 | #else 33 | printf("z 大 %d\n", MAXIMUM(a, b)); 34 | #endif 35 | 36 | return 0; 37 | } 38 | ``` 39 | -------------------------------------------------------------------------------- /5.md: -------------------------------------------------------------------------------- 1 | 题目:输入三个整数x,y,z,把这三个数由小到大输出。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int x, y, z, t; 8 | scanf("%d%d%d", &x, &y, &z); 9 | if (x > y) 10 | { 11 | t = x; 12 | x = y; 13 | y = t; 14 | } 15 | if (x > z) 16 | { 17 | t = x; 18 | x = z; 19 | z = t; 20 | } 21 | if (y > z) 22 | { 23 | t = y; 24 | y = z; 25 | z = t; 26 | } 27 | printf("%d %d %d", x, y, z); 28 | 29 | return 0; 30 | } 31 | ``` 32 | -------------------------------------------------------------------------------- /50.md: -------------------------------------------------------------------------------- 1 | 题目:#include 的应用练习。 2 | main.h 3 | ```c 4 | #define LAG > 5 | #define SMA < 6 | #define EQ == 7 | ``` 8 | main.c 9 | ```c 10 | #include 11 | #include "main.h" 12 | 13 | int main() 14 | { 15 | int i = 5; 16 | int j = 10; 17 | if (i LAG j) 18 | printf("%d 大于 %d \n", i, j); 19 | else if (i EQ j) 20 | printf("%d 等于 %d \n", i, j); 21 | else if (i SMA j) 22 | printf("%d 小于 %d \n", i, j); 23 | else 24 | printf("ERROR.\n"); 25 | return 0; 26 | } 27 | ``` 28 | -------------------------------------------------------------------------------- /51.md: -------------------------------------------------------------------------------- 1 | 题目:学习使用按位与 &。 2 | ```c 3 | #include 4 | int main() 5 | { 6 | int a, b; 7 | a = 076; 8 | b = a & 3; 9 | printf("b(decimal) 为 %d \n", b); 10 | b &= 7; 11 | printf("b(decimal) 为 %d \n", b); 12 | return 0; 13 | } 14 | ``` 15 | 结果: 16 | ``` 17 | b(decimal) 为 2 18 | b(decimal) 为 2 19 | ``` 20 | -------------------------------------------------------------------------------- /52.md: -------------------------------------------------------------------------------- 1 | 题目:学习使用按位或 |。 2 | ```c 3 | #include 4 | int main() 5 | { 6 | int a, b; 7 | a = 076; 8 | b = a | 3; 9 | printf("b = %d \n", b); 10 | b |= 7; 11 | printf("b = %d \n", b); 12 | return 0; 13 | } 14 | ``` 15 | 结果: 16 | ``` 17 | b = 63 18 | b = 63 19 | ``` 20 | -------------------------------------------------------------------------------- /53.md: -------------------------------------------------------------------------------- 1 | 题目:学习使用按位异或 ^。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int a, b; 8 | a = 076; 9 | b = a ^ 3; 10 | printf("b = %d \n", b); 11 | b ^= 7; 12 | printf("b = %d \n", b); 13 | return 0; 14 | } 15 | ``` 16 | 结果: 17 | ``` 18 | b = 61 19 | b = 58 20 | ``` 21 | -------------------------------------------------------------------------------- /54.md: -------------------------------------------------------------------------------- 1 | 题目:取一个整数 a 从右端开始的 4~7 位。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int n; 8 | printf("请输入一个十进制数:"); 9 | scanf("%d", &n); 10 | 11 | n = n & 120; 12 | 13 | printf("%d", n); 14 | } 15 | 16 | // #include 17 | // int main() 18 | // { 19 | // unsigned a, b, c, d; 20 | // printf("请输入整数:\n"); 21 | // scanf("%o", &a); 22 | // b = a >> 4; 23 | // c = ~(~0 << 4); 24 | // d = b&c; 25 | // printf("%o\n%o\n", a, d); 26 | // return 0; 27 | // } 28 | ``` 29 | -------------------------------------------------------------------------------- /55.md: -------------------------------------------------------------------------------- 1 | 题目:学习使用按位取反~。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int a = 231; 8 | printf("~a (十进制) %d \n", ~a); 9 | printf("~a (十六进制) %x \n", ~a); 10 | return 0; 11 | } 12 | ``` 13 | -------------------------------------------------------------------------------- /56.md: -------------------------------------------------------------------------------- 1 | 题目:画图,学用circle画圆形。 2 | 3 | 先去https://www.easyx.cn/ 下载安装EasyX库。 4 | ```c 5 | #include // 引用图形库头文件 6 | #include 7 | int main() 8 | { 9 | initgraph(640, 480); // 创建绘图窗口,大小为 640x480 像素 10 | circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100 11 | _getch(); // 按任意键继续 12 | closegraph(); // 关闭绘图窗口 13 | } 14 | ``` 15 | -------------------------------------------------------------------------------- /57.md: -------------------------------------------------------------------------------- 1 | 题目:画图,学用line画直线。 2 | ```c 3 | #include 4 | #include 5 | 6 | void main() 7 | { 8 | initgraph(640, 480); 9 | // 画一条直线 10 | line(0, 0, 300, 300); 11 | // 按任意键继续 12 | getch(); 13 | closegraph(); 14 | } 15 | ``` 16 | -------------------------------------------------------------------------------- /58.md: -------------------------------------------------------------------------------- 1 | 题目:学用rectangle画矩形。 2 | ```c 3 | #include 4 | #include 5 | 6 | void main() 7 | { 8 | initgraph(640, 480); 9 | // 绘制矩形框 10 | rectangle(50, 50, 550, 400); 11 | // 按任意键继续 12 | getch(); 13 | closegraph(); 14 | } 15 | ``` 16 | -------------------------------------------------------------------------------- /59.md: -------------------------------------------------------------------------------- 1 | 题目:画图,综合例子。 2 | EasyX文档Demo 3 | ```c 4 | #include 5 | #include 6 | #include 7 | 8 | int main() 9 | { 10 | // 设置随机函数种子 11 | srand((unsigned)time(NULL)); 12 | 13 | // 初始化图形模式 14 | initgraph(640, 480); 15 | 16 | int x, y; 17 | char c; 18 | 19 | settextstyle(16, 8, _T("Courier")); // 设置字体 20 | 21 | // 设置颜色 22 | settextcolor(GREEN); 23 | setlinecolor(BLACK); 24 | 25 | for (int i = 0; i <= 479; i++) 26 | { 27 | // 在随机位置显示三个随机字母 28 | for (int j = 0; j < 3; j++) 29 | { 30 | x = (rand() % 80) * 8; 31 | y = (rand() % 20) * 24; 32 | c = (rand() % 26) + 65; 33 | outtextxy(x, y, c); 34 | } 35 | 36 | // 画线擦掉一个像素行 37 | line(0, i, 639, i); 38 | 39 | Sleep(10); // 延时 40 | if (i >= 479) i = -1; // 循环处理 41 | if (_kbhit()) break; // 按任意键退出 42 | } 43 | 44 | // 关闭图形模式 45 | closegraph(); 46 | } 47 | ``` 48 | -------------------------------------------------------------------------------- /6.md: -------------------------------------------------------------------------------- 1 | 题目:用*号输出字母C的图案。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | printf(" ***\n"); 8 | printf("*\n"); 9 | printf("*\n"); 10 | printf(" ***\n"); 11 | 12 | return 0; 13 | } 14 | ``` 15 | -------------------------------------------------------------------------------- /60.md: -------------------------------------------------------------------------------- 1 | 题目:画图,综合例子2。 2 | EasyX文档Demo 3 | ```c 4 | #include 5 | #include 6 | #include 7 | 8 | #define MAXSTAR 200 // 星星总数 9 | 10 | struct STAR 11 | { 12 | double x; 13 | int y; 14 | double step; 15 | int color; 16 | }; 17 | 18 | STAR star[MAXSTAR]; 19 | 20 | // 初始化星星 21 | void InitStar(int i) 22 | { 23 | star[i].x = 0; 24 | star[i].y = rand() % 480; 25 | star[i].step = (rand() % 5000) / 1000.0 + 1; 26 | star[i].color = (int)(star[i].step * 255 / 6.0 + 0.5); // 速度越快,颜色越亮 27 | star[i].color = RGB(star[i].color, star[i].color, star[i].color); 28 | } 29 | 30 | // 移动星星 31 | void MoveStar(int i) 32 | { 33 | // 擦掉原来的星星 34 | putpixel((int)star[i].x, star[i].y, 0); 35 | 36 | // 计算新位置 37 | star[i].x += star[i].step; 38 | if (star[i].x > 640) 39 | { 40 | InitStar(i); 41 | } 42 | 43 | // 画新星星 44 | putpixel((int)star[i].x, star[i].y, star[i].color); 45 | } 46 | 47 | // 主函数 48 | int main() 49 | { 50 | srand((unsigned)time(NULL)); // 随机种子 51 | initgraph(640, 480); // 创建绘图窗口 52 | 53 | // 初始化所有星星 54 | for (int i = 0; i < MAXSTAR; i++) 55 | { 56 | InitStar(i); 57 | star[i].x = rand() % 640; 58 | } 59 | 60 | // 绘制星空,按任意键退出 61 | while (!_kbhit()) 62 | { 63 | for (int i = 0; i < MAXSTAR; i++) 64 | { 65 | MoveStar(i); 66 | } 67 | Sleep(20); 68 | } 69 | 70 | closegraph(); // 关闭绘图窗口 71 | } 72 | ``` 73 | -------------------------------------------------------------------------------- /61.md: -------------------------------------------------------------------------------- 1 | 题目:打印出杨辉三角形,10行。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int a[10][10]; 8 | for (int i = 0; i < 10; ++i) 9 | { 10 | a[i][0] = 1; 11 | a[i][i] = 1; 12 | } 13 | for (int i = 2; i < 10; ++i) 14 | { 15 | for (int j = 1; j < i; ++j) 16 | { 17 | a[i][j] = a[i - 1][j - 1] + a[i - 1][j]; 18 | } 19 | } 20 | for (int i = 0; i < 10; ++i) 21 | { 22 | for (int j = 0; j <= i; ++j) 23 | { 24 | printf("%d ", a[i][j]); 25 | } 26 | printf("\n"); 27 | } 28 | 29 | return 0; 30 | } 31 | ``` 32 | -------------------------------------------------------------------------------- /62.md: -------------------------------------------------------------------------------- 1 | 题目:学习putpixel画点。 2 | EasyX库 3 | ```c 4 | #include 5 | #include 6 | 7 | void main() 8 | { 9 | initgraph(800, 600); 10 | for (int i = 0; i < 500; ++i) 11 | { 12 | for (int j = 0; j < 300; ++j) 13 | { 14 | putpixel(i, j, RED); 15 | } 16 | } 17 | 18 | getch(); 19 | closegraph(); 20 | } 21 | ``` 22 | -------------------------------------------------------------------------------- /63.md: -------------------------------------------------------------------------------- 1 | 题目:画椭圆ellipse。 2 | ```c 3 | #include 4 | #include 5 | 6 | void main() 7 | { 8 | initgraph(800, 600); 9 | setfillcolor(GREEN); 10 | fillellipse(100, 100, 300, 500); 11 | getch(); 12 | closegraph(); 13 | } 14 | ``` 15 | -------------------------------------------------------------------------------- /64.md: -------------------------------------------------------------------------------- 1 | 鼠标操作范例 2 | EasyX demo 3 | ```c 4 | #include 5 | #include 6 | 7 | int main() 8 | { 9 | // 初始化图形窗口 10 | initgraph(640, 480); 11 | 12 | MOUSEMSG m; // 定义鼠标消息 13 | 14 | while (true) 15 | { 16 | // 获取一条鼠标消息 17 | m = GetMouseMsg(); 18 | 19 | switch (m.uMsg) 20 | { 21 | case WM_MOUSEMOVE: 22 | // 鼠标移动的时候画红色的小点 23 | putpixel(m.x, m.y, RED); 24 | break; 25 | 26 | case WM_LBUTTONDOWN: 27 | // 如果点左键的同时按下了 Ctrl 键 28 | if (m.mkCtrl) 29 | // 画一个大方块 30 | rectangle(m.x - 10, m.y - 10, m.x + 10, m.y + 10); 31 | else 32 | // 画一个小方块 33 | rectangle(m.x - 5, m.y - 5, m.x + 5, m.y + 5); 34 | break; 35 | 36 | case WM_RBUTTONUP: 37 | return 0; // 按鼠标右键退出程序 38 | } 39 | } 40 | 41 | // 关闭图形窗口 42 | closegraph(); 43 | } 44 | ``` 45 | -------------------------------------------------------------------------------- /65.md: -------------------------------------------------------------------------------- 1 | HSL色彩模型的应用范例。 2 | EasyX demo 3 | ```c 4 | #include 5 | #include 6 | 7 | int main() 8 | { 9 | // 创建绘图窗口 10 | initgraph(640, 480); 11 | 12 | // 画渐变的天空(通过亮度逐渐增加) 13 | float H = 190; // 色相 14 | float S = 1; // 饱和度 15 | float L = 0.7f; // 亮度 16 | for (int y = 0; y < 480; y++) 17 | { 18 | L += 0.0005f; 19 | setlinecolor(HSLtoRGB(H, S, L)); 20 | line(0, y, 639, y); 21 | } 22 | 23 | // 画彩虹(通过色相逐渐增加) 24 | H = 0; 25 | S = 1; 26 | L = 0.5f; 27 | setlinestyle(PS_SOLID, 2); // 设置线宽为 2 28 | for (int r = 400; r > 344; r--) 29 | { 30 | H += 5; 31 | setlinecolor(HSLtoRGB(H, S, L)); 32 | circle(500, 480, r); 33 | } 34 | 35 | // 按任意键退出 36 | _getch(); 37 | closegraph(); 38 | } 39 | ``` 40 | -------------------------------------------------------------------------------- /66.md: -------------------------------------------------------------------------------- 1 | 题目:输入3个数a,b,c,按大小顺序输出。 2 | ```c 3 | #include 4 | 5 | void swap(int *p, int *q) 6 | { 7 | int t; 8 | t = *p; 9 | *p = *q; 10 | *q = t; 11 | } 12 | 13 | int main() 14 | { 15 | int a, b, c; 16 | scanf("%d%d%d", &a, &b, &c); 17 | 18 | if (a > b) 19 | { 20 | swap(&a, &b); 21 | } 22 | if (a > c) 23 | { 24 | swap(&a, &c); 25 | } 26 | if (b > c) 27 | { 28 | swap(&b, &c); 29 | } 30 | 31 | printf("%d %d %d", a, b, c); 32 | 33 | return 0; 34 | } 35 | ``` 36 | -------------------------------------------------------------------------------- /67.md: -------------------------------------------------------------------------------- 1 | 题目:输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int n; 8 | printf("请输入数组长度:\n"); 9 | scanf("%d", &n); 10 | int a[100]; 11 | for (int i = 0; i < n; ++i) 12 | { 13 | scanf("%d", &a[i]); 14 | } 15 | int max = a[0], min = a[0]; 16 | int maxMark = 0, minMark = 0; 17 | for (int i = 0; i < n; ++i) 18 | { 19 | if (max < a[i]) 20 | { 21 | max = a[i]; 22 | maxMark = i; 23 | } 24 | if (min > a[i]) 25 | { 26 | min = a[i]; 27 | minMark = i; 28 | } 29 | } 30 | 31 | int tmpMax = a[0]; 32 | a[0] = a[maxMark]; 33 | a[maxMark] = tmpMax; 34 | 35 | if (minMark != 0) 36 | { 37 | int tmpMin = a[n - 1]; 38 | a[n - 1] = a[minMark]; 39 | a[minMark] = tmpMin; 40 | } 41 | 42 | for (int i = 0; i < n; ++i) 43 | { 44 | printf("%d ", a[i]); 45 | } 46 | 47 | return 0; 48 | } 49 | ``` 50 | -------------------------------------------------------------------------------- /68.md: -------------------------------------------------------------------------------- 1 | 题目:有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面的m个数。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int n, m; 8 | int a[100], tmp[100]; 9 | printf("n是:\n"); 10 | scanf("%d", &n); 11 | printf("数组是:\n"); 12 | for (int i = 0; i < n; ++i) 13 | { 14 | scanf("%d", &a[i]); 15 | } 16 | printf("m是:\n"); 17 | scanf("%d", &m); 18 | 19 | if (m > n) 20 | { 21 | printf("m不能大于n"); 22 | return 0; 23 | } 24 | //后m位暂保存到tmp数组 25 | int cnt = 0; 26 | for (int i = n - m; i < n; ++i) 27 | { 28 | tmp[cnt++] = a[i]; 29 | } 30 | 31 | //移动前m位 32 | for (int i = n - m; i >= 0; --i) 33 | { 34 | a[i + m] = a[i]; 35 | } 36 | 37 | //后m位移到前面 38 | for (int i = 0; i < m; ++i) 39 | { 40 | a[i] = tmp[i]; 41 | } 42 | 43 | for (int i = 0; i < n; ++i) 44 | { 45 | printf("%d ", a[i]); 46 | } 47 | 48 | return 0; 49 | } 50 | ``` 51 | 52 | 效果: 53 | ``` 54 | n是: 55 | 7 56 | 数组是: 57 | 1 2 3 4 5 6 7 58 | m是: 59 | 4 60 | 4 5 6 7 1 2 3 61 | ``` 62 | -------------------------------------------------------------------------------- /69.md: -------------------------------------------------------------------------------- 1 | 题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int n; 8 | scanf("%d", &n); 9 | 10 | int a[100]; 11 | //编号 12 | for (int i = 0; i < n; ++i) 13 | { 14 | a[i] = i + 1; 15 | } 16 | 17 | int cnt = n;//未淘汰人数 18 | int i = 0;//每轮第几个 19 | int num = 0;//报数 20 | while (cnt > 1) 21 | { 22 | if (a[i] != 0) 23 | { 24 | num++; 25 | if (num == 3) 26 | { 27 | a[i] = 0; 28 | num = 0; 29 | cnt--; 30 | } 31 | } 32 | 33 | i++; 34 | 35 | //从头报数 36 | if (i == n) 37 | { 38 | i = 0; 39 | } 40 | } 41 | 42 | //打印结果 43 | for (int i = 0; i < n; ++i) 44 | { 45 | if (a[i] != 0) 46 | { 47 | printf("最后留下的是:%d\n", a[i]); 48 | } 49 | } 50 | return 0; 51 | } 52 | ``` 53 | 54 | ``` 55 | 8 56 | 最后留下的是:7 57 | ``` 58 | -------------------------------------------------------------------------------- /7.md: -------------------------------------------------------------------------------- 1 | 题目:输出类似于国际象棋棋盘的图案。 2 | ```c 3 | #include 4 | int main() 5 | { 6 | char a = 176, b = 219; 7 | printf("%c%c%c%c%c\n", b, a, a, a, b); 8 | printf("%c%c%c%c%c\n", a, b, a, b, a); 9 | printf("%c%c%c%c%c\n", a, a, b, a, a); 10 | printf("%c%c%c%c%c\n", a, b, a, b, a); 11 | printf("%c%c%c%c%c\n", b, a, a, a, b); 12 | return 0; 13 | } 14 | ``` 15 | 16 | 解决乱码: 17 | 1. 点击cmd左上角标题栏图标,选择默认值一项 18 | 2. 修改默认代码页936(ANSI/OEM-简体中文GBK)为437 OEM-美国 19 | 3. 关闭后重新运行一下即可 20 | -------------------------------------------------------------------------------- /70.md: -------------------------------------------------------------------------------- 1 | 题目:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。 2 | ```c 3 | #include 4 | #include 5 | 6 | int cntLen(char *s) 7 | { 8 | int len = 0; 9 | while (*s != '\0') 10 | { 11 | len++; 12 | s++; 13 | } 14 | return len; 15 | } 16 | 17 | int main() 18 | { 19 | char s[100]; 20 | scanf("%s", s); 21 | 22 | int len = cntLen(s); 23 | printf("长度为%d", len); 24 | 25 | return 0; 26 | } 27 | ``` 28 | -------------------------------------------------------------------------------- /71.md: -------------------------------------------------------------------------------- 1 | 题目:编写input()和output()函数输入,输出5个学生的数据记录。 2 | ```c 3 | #include 4 | 5 | struct stu 6 | { 7 | char name[20]; 8 | char sex[3]; 9 | int age; 10 | }; 11 | 12 | void input(stu *group) 13 | { 14 | printf("请输入学生姓名、性别、年龄:\n"); 15 | for (int i = 0; i < 5; ++i) 16 | { 17 | scanf("%s%s%d", &group[i].name, &group[i].sex, &group[i].age); 18 | } 19 | } 20 | 21 | void output(stu *group) 22 | { 23 | printf("打印学生姓名、性别、年龄:\n"); 24 | for (int i = 0; i < 5; ++i) 25 | { 26 | printf("%s %s %d\n", group[i].name, group[i].sex, group[i].age); 27 | } 28 | } 29 | 30 | int main() 31 | { 32 | stu group[5]; 33 | input(group); 34 | output(group); 35 | return 0; 36 | } 37 | ``` 38 | -------------------------------------------------------------------------------- /72.md: -------------------------------------------------------------------------------- 1 | 题目:创建一个链表。 2 | ```c 3 | #include 4 | #include 5 | 6 | struct LNode 7 | { 8 | int data; 9 | struct LNode *next; 10 | }; 11 | 12 | LNode* createList(int n) 13 | { 14 | LNode *list, *p, *q; 15 | list = (LNode*)malloc(sizeof(LNode)); 16 | list->next = nullptr; 17 | q = list; 18 | for (int i = 0; i < n; ++i) 19 | { 20 | p = (LNode*)malloc(sizeof(LNode)); 21 | printf("请输入第%d个元素的值:", i + 1); 22 | scanf("%d", &(p->data)); 23 | p->next = nullptr; 24 | q->next = p; 25 | q = p; 26 | } 27 | return list; 28 | } 29 | 30 | void print(LNode* list) 31 | { 32 | printf("链表各值为:\n"); 33 | 34 | LNode* p = list->next; 35 | while (p != nullptr) 36 | { 37 | printf("%d\n", p->data); 38 | p = p->next; 39 | } 40 | } 41 | 42 | int main() 43 | { 44 | LNode* list = nullptr; 45 | int n; 46 | scanf("%d", &n); 47 | list = createList(n); 48 | print(list); 49 | 50 | return 0; 51 | } 52 | ``` 53 | -------------------------------------------------------------------------------- /73.md: -------------------------------------------------------------------------------- 1 | 题目:反向输出一个链表。  2 | ```c 3 | #include 4 | #include 5 | 6 | struct LNode 7 | { 8 | int data; 9 | struct LNode *next; 10 | }; 11 | 12 | LNode* createList(int n) 13 | { 14 | LNode *head, *p, *q; 15 | head = (LNode*)malloc(sizeof(LNode)); 16 | printf("请输入第1个元素的值:"); 17 | scanf("%d", &(head->data)); 18 | head->next = nullptr; 19 | 20 | q = head; 21 | for (int i = 1; i < n; ++i) 22 | { 23 | p = (LNode*)malloc(sizeof(LNode)); 24 | printf("请输入第%d个元素的值:", i + 1); 25 | scanf("%d", &(p->data)); 26 | p->next = q; 27 | q = p; 28 | } 29 | return q; 30 | } 31 | 32 | void print(LNode* list) 33 | { 34 | printf("链表各值为:\n"); 35 | 36 | LNode* p = list; 37 | while (p != nullptr) 38 | { 39 | printf("%d\n", p->data); 40 | p = p->next; 41 | } 42 | } 43 | 44 | int main() 45 | { 46 | int n; 47 | scanf("%d", &n); 48 | LNode* list = createList(n); 49 | print(list); 50 | 51 | return 0; 52 | } 53 | ``` 54 | -------------------------------------------------------------------------------- /74.md: -------------------------------------------------------------------------------- 1 | 题目:连接两个链表。 2 | ```c 3 | #include 4 | #include 5 | 6 | struct LNode 7 | { 8 | int data; 9 | struct LNode *next; 10 | }; 11 | 12 | LNode* createList(int n) 13 | { 14 | LNode *list, *p, *q; 15 | list = (LNode*)malloc(sizeof(LNode)); 16 | list->next = nullptr; 17 | q = list; 18 | for (int i = 0; i < n; ++i) 19 | { 20 | p = (LNode*)malloc(sizeof(LNode)); 21 | printf("请输入第%d个元素的值:", i + 1); 22 | scanf("%d", &(p->data)); 23 | p->next = nullptr; 24 | q->next = p; 25 | q = p; 26 | } 27 | return list; 28 | } 29 | 30 | void print(LNode* list) 31 | { 32 | printf("链表各值为:\n"); 33 | 34 | LNode* p = list->next; 35 | while (p != nullptr) 36 | { 37 | printf("%d\n", p->data); 38 | p = p->next; 39 | } 40 | } 41 | 42 | 43 | void connect(LNode* list1, LNode* list2) 44 | { 45 | LNode* p; 46 | for (p = list1; p->next != nullptr; p = p->next) 47 | { 48 | continue; 49 | } 50 | p->next = list2->next; 51 | free(list2); 52 | } 53 | 54 | int main() 55 | { 56 | int n; 57 | scanf("%d", &n); 58 | LNode* list1 = createList(n); 59 | LNode* list2 = createList(n); 60 | connect(list1, list2); 61 | 62 | print(list1); 63 | 64 | return 0; 65 | } 66 | ``` 67 | -------------------------------------------------------------------------------- /75.md: -------------------------------------------------------------------------------- 1 | 题目:输入一个整数,并将其反转后输出。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int n; 8 | int reverseN = 0; 9 | scanf("%d", &n); 10 | for (int i = n; i > 0; i /= 10) 11 | { 12 | reverseN = reverseN * 10 + i % 10; 13 | } 14 | printf("%d", reverseN); 15 | 16 | return 0; 17 | } 18 | ``` 19 | -------------------------------------------------------------------------------- /76.md: -------------------------------------------------------------------------------- 1 | 题目:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n(利用指针函数)。 2 | ```c 3 | #include 4 | 5 | double even(int n) 6 | { 7 | double sum = 0; 8 | for (int i = 2; i <= n; i += 2) 9 | { 10 | sum += (double)1 / i; 11 | } 12 | return sum; 13 | } 14 | 15 | double odd(int n) 16 | { 17 | double sum = 0; 18 | for (int i = 1; i <= n; i += 2) 19 | { 20 | sum += (double)1 / i; 21 | } 22 | return sum; 23 | } 24 | 25 | int main() 26 | { 27 | int n; 28 | scanf("%d", &n); 29 | double(*pfunc)(int); 30 | if (n % 2 == 0) 31 | { 32 | pfunc = even; 33 | } 34 | else 35 | { 36 | pfunc = odd; 37 | } 38 | 39 | printf("%lf", (*pfunc)(n)); 40 | 41 | return 0; 42 | } 43 | ``` 44 | 结果: 45 | ``` 46 | 2 47 | 0.500000 48 | ``` 49 | -------------------------------------------------------------------------------- /77.md: -------------------------------------------------------------------------------- 1 | 题目:指向指针的指针。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | char *s[] = { "a","b","c","d","e" }; 8 | char **q; 9 | for (int i = 0; i < 5; ++i) 10 | { 11 | q = &s[i]; 12 | printf("%s\n", *q); 13 | } 14 | 15 | return 0; 16 | } 17 | ``` 18 | -------------------------------------------------------------------------------- /78.md: -------------------------------------------------------------------------------- 1 | 题目:找到年龄最大的人,并输出。 2 | ```c 3 | #include 4 | #include 5 | struct man { 6 | char name[20]; 7 | int age; 8 | } 9 | person[3] = { {"a",15},{"b",15},{"c",10} }; 10 | 11 | int main() 12 | { 13 | struct man *q, *p; 14 | int i, m = 0; 15 | p = q = person; 16 | for (i = 0; i < 3; ++i) 17 | { 18 | if (m < p->age) 19 | { 20 | m = p->age; 21 | q = p; 22 | } 23 | p++; 24 | } 25 | 26 | for (int i = 0; i < 3; ++i) 27 | { 28 | if (person[i].age == m) 29 | { 30 | printf("%s %d\n", person[i].name, person[i].age); 31 | } 32 | } 33 | return 0; 34 | } 35 | ``` 36 | -------------------------------------------------------------------------------- /79.md: -------------------------------------------------------------------------------- 1 | 题目:字符串排序。 2 | ```c 3 | #include 4 | #include 5 | 6 | void swap(char* s1, char* s2) 7 | { 8 | char tmp[50]; 9 | strcpy(tmp, s1); 10 | strcpy(s1, s2); 11 | strcpy(s2, tmp); 12 | } 13 | 14 | int main() 15 | { 16 | char s1[50], s2[50], s3[50]; 17 | fgets(s1, strlen(s1), stdin); 18 | fgets(s2, strlen(s2), stdin); 19 | fgets(s3, strlen(s3), stdin); 20 | if (strcmp(s1, s2) > 0) 21 | { 22 | swap(s1, s2); 23 | } 24 | if (strcmp(s2, s3) > 0) 25 | { 26 | swap(s2, s3); 27 | } 28 | if (strcmp(s1, s2)>0) 29 | { 30 | swap(s1, s2); 31 | } 32 | 33 | printf("%s%s%s", s1, s2, s3); 34 | 35 | return 0; 36 | } 37 | ``` 38 | 结果: 39 | ``` 40 | d 41 | a 42 | y 43 | a 44 | d 45 | y 46 | ``` 47 | -------------------------------------------------------------------------------- /8.md: -------------------------------------------------------------------------------- 1 | 题目:输出9*9乘法表。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | for (int i = 1; i <= 9; ++i) 8 | { 9 | for (int j = 1; j <= i; ++j) 10 | { 11 | printf("%d * %d = %d ", i, j, i*j); 12 | } 13 | printf("\n"); 14 | } 15 | 16 | return 0; 17 | } 18 | ``` 19 | -------------------------------------------------------------------------------- /80.md: -------------------------------------------------------------------------------- 1 | 题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子平均分为五份,多了一个,这只 猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了 一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的, 问海滩上原来最少有多少个桃子? 2 | ```c 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | int x, i = 0, j = 1; 9 | while (i < 5) 10 | { 11 | x = 4 * j; 12 | for (i = 0; i < 5; ++i) 13 | { 14 | if (x % 4 != 0) 15 | { 16 | break; 17 | } 18 | x = (x / 4) * 5 + 1; 19 | } 20 | j++; 21 | } 22 | 23 | printf("%d\n", x); 24 | 25 | return 0; 26 | } 27 | ``` 28 | 29 | 答案:3121 30 | -------------------------------------------------------------------------------- /81.md: -------------------------------------------------------------------------------- 1 | 题目:809*??=800*??+9*?? 其中??代表的两位数, 809*??为四位数,8*??的结果为两位数,9*??的结果为3位数。求??代表的两位数,及809*??后的结果。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | for (int i = 10; i < 100; ++i) 8 | { 9 | if (809 * i < 10000 && 809 * i>999) 10 | { 11 | if (8 * i < 100 && 8 * i>9) 12 | { 13 | if (9 * i < 1000 && 9 * i>99) 14 | { 15 | if (809 * i == 800 * i + 9 * i) 16 | { 17 | printf("%d\n", i); 18 | printf("%d\n", 809 * i); 19 | } 20 | } 21 | } 22 | } 23 | } 24 | 25 | return 0; 26 | } 27 | ``` 28 | 输出: 29 | ``` 30 | 12 31 | 9708 32 | ``` 33 | -------------------------------------------------------------------------------- /82.md: -------------------------------------------------------------------------------- 1 | 题目:八进制转换为十进制。 2 | 法一: 3 | ```c 4 | #include 5 | 6 | int main() 7 | { 8 | int n; 9 | scanf("%o", &n); 10 | printf("%d", n); 11 | return 0; 12 | } 13 | ``` 14 | 15 | 法二: 16 | ```c 17 | #include 18 | #include 19 | 20 | int main() 21 | { 22 | char s[50]; 23 | scanf("%s", s); 24 | int n = 0; 25 | for (int i = 0; i < strlen(s); ++i) 26 | { 27 | n = n * 8 + s[i] - '0'; 28 | } 29 | 30 | printf("%d", n); 31 | 32 | return 0; 33 | } 34 | ``` 35 | -------------------------------------------------------------------------------- /83.md: -------------------------------------------------------------------------------- 1 | 题目:求0—7所能组成的奇数个数。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | int sum = 0, cnt = 0; 8 | for (int i = 0; i < 8; ++i) 9 | { 10 | if (i == 0) 11 | { 12 | cnt = 4; 13 | } 14 | else if (i == 1) 15 | { 16 | cnt *= 7; 17 | } 18 | else 19 | { 20 | cnt *= 8; 21 | } 22 | sum += cnt; 23 | printf("%d位数为奇数的个数为%d\n", i + 1, cnt); 24 | } 25 | 26 | printf("总数为%d\n", sum); 27 | 28 | return 0; 29 | } 30 | ``` 31 | 结果: 32 | ``` 33 | 1位数为奇数的个数为4 34 | 2位数为奇数的个数为28 35 | 3位数为奇数的个数为224 36 | 4位数为奇数的个数为1792 37 | 5位数为奇数的个数为14336 38 | 6位数为奇数的个数为114688 39 | 7位数为奇数的个数为917504 40 | 8位数为奇数的个数为7340032 41 | 总数为8388608 42 | ``` 43 | -------------------------------------------------------------------------------- /84.md: -------------------------------------------------------------------------------- 1 | 题目:一个偶数总能表示为两个素数之和。 2 | ```c 3 | #include 4 | #include 5 | 6 | int ver(int num) 7 | { 8 | for (int i = 2; i <= sqrt(num); ++i) 9 | { 10 | if (num % i == 0) 11 | { 12 | return 0; 13 | } 14 | } 15 | return 1; 16 | 17 | } 18 | 19 | int main() 20 | { 21 | int n; 22 | scanf("%d", &n); 23 | 24 | if (n % 2 != 0 || n == 2) 25 | { 26 | printf("请输入一个大于2的偶数!\n"); 27 | } 28 | else 29 | { 30 | for (int i = 2; i < n; ++i) 31 | { 32 | if (ver(i) && ver(n - i)) 33 | { 34 | printf("%d = %d + %d\n", n, i, n - i); 35 | return 0; 36 | } 37 | } 38 | } 39 | 40 | return 0; 41 | } 42 | ``` 43 | -------------------------------------------------------------------------------- /85.md: -------------------------------------------------------------------------------- 1 | 题目:判断一个素数能被几个9整除。 2 | ```c 3 | #include 4 | #include 5 | 6 | int ver(int num) 7 | { 8 | if (num < 2) 9 | { 10 | printf("请输入一个素数!\n"); 11 | return 0; 12 | } 13 | for (int i = 2; i < sqrt(num); ++i) 14 | { 15 | if (num%i == 0) 16 | { 17 | printf("请输入一个素数!\n"); 18 | return 0; 19 | } 20 | } 21 | return 1; 22 | } 23 | 24 | int main() 25 | { 26 | int n; 27 | scanf("%d", &n); 28 | if (ver(n)) 29 | { 30 | int x; 31 | for (x = 9; x%n != 0; x = x * 10 + 9) 32 | { 33 | if (x > 1000000000) 34 | { 35 | printf("在指定范围没有满足的数。\n"); 36 | return 0; 37 | } 38 | } 39 | printf("该素数可以被%d整除。\n", x); 40 | } 41 | 42 | return 0; 43 | } 44 | ``` 45 | -------------------------------------------------------------------------------- /86.md: -------------------------------------------------------------------------------- 1 | 题目:两个字符串连接。 2 | ```c 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | char s1[50], s2[50]; 9 | scanf("%s", s1); 10 | scanf("%s", s2); 11 | printf("%s", strcat(s1, s2)); 12 | 13 | return 0; 14 | } 15 | ``` 16 | -------------------------------------------------------------------------------- /87.md: -------------------------------------------------------------------------------- 1 | 题目:回答结果(结构体变量传递)。 2 | ```c 3 | #include 4 | 5 | struct student 6 | { 7 | int x; 8 | char c; 9 | } a; 10 | 11 | void f(struct student b) 12 | { 13 | b.x = 555; 14 | b.c = 'w'; 15 | } 16 | 17 | int main() 18 | { 19 | a.x = 4; 20 | a.c = 'b'; 21 | f(a); 22 | printf("%d,%c", a.x, a.c); 23 | } 24 | ``` 25 | 结果: 26 | ``` 27 | 4,b 28 | ``` 29 | -------------------------------------------------------------------------------- /88.md: -------------------------------------------------------------------------------- 1 | 题目:读取7个数(1—50)的整数值,每读取一个值,程序打印出该值个数的*。 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | for (int i = 0; i < 7; ++i) 8 | { 9 | int n; 10 | scanf("%d", &n); 11 | if (n < 1 || n>50) 12 | { 13 | printf("请输入1--50的整数!\n"); 14 | i--; 15 | } 16 | else 17 | { 18 | for (int j = 0; j < n; ++j) 19 | { 20 | printf("*"); 21 | } 22 | } 23 | 24 | printf("\n"); 25 | } 26 | 27 | return 0; 28 | } 29 | ``` 30 | -------------------------------------------------------------------------------- /89.md: -------------------------------------------------------------------------------- 1 | 题目:某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下: 每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。 2 | ```c 3 | #include 4 | 5 | void swap(int a, int b) 6 | { 7 | int tmp; 8 | tmp = a; 9 | a = b; 10 | b = tmp; 11 | } 12 | 13 | int main() 14 | { 15 | int n, a[4]; 16 | scanf("%d", &n); 17 | a[0] = n % 1000; 18 | a[1] = n % 100 / 10; 19 | a[2] = n / 100 % 10; 20 | a[3] = n / 1000; 21 | for (int i = 0; i < 4; ++i) 22 | { 23 | a[i] += 5; 24 | a[i] %= 10; 25 | } 26 | swap(a[0], a[3]); 27 | swap(a[1], a[2]); 28 | for (int i = 0; i < 4; ++i) 29 | { 30 | printf("%d", a[i]); 31 | } 32 | 33 | return 0; 34 | } 35 | ``` 36 | 输出: 37 | ``` 38 | 1234 39 | 9876 40 | ``` 41 | -------------------------------------------------------------------------------- /9.md: -------------------------------------------------------------------------------- 1 | 题目:输出国际象棋棋盘。(8行*8列) 2 | ```c 3 | #include 4 | 5 | int main() 6 | { 7 | for (int i = 0; i < 8; ++i) 8 | { 9 | for (int j = 0; j < 8; ++j) 10 | { 11 | if (i % 2 == 0) 12 | { 13 | if (j % 2 == 0) 14 | { 15 | printf("%c", 219); 16 | } 17 | else 18 | { 19 | printf(" "); 20 | } 21 | } 22 | else 23 | { 24 | if (j % 2 == 0) 25 | { 26 | printf(" "); 27 | } 28 | else 29 | { 30 | printf("%c", 219); 31 | } 32 | 33 | 34 | } 35 | } 36 | printf("\n"); 37 | } 38 | 39 | return 0; 40 | } 41 | ``` 42 | -------------------------------------------------------------------------------- /90.md: -------------------------------------------------------------------------------- 1 | 题目:读结果。 2 | ```c 3 | #include 4 | #include 5 | 6 | #define M 5 7 | int main() 8 | { 9 | int a[M] = { 1,2,3,4,5 }; 10 | int i, j, t; 11 | i = 0; j = M - 1; 12 | while (i < j) 13 | { 14 | t = *(a + i); 15 | *(a + i) = *(a + j); 16 | *(a + j) = t; 17 | i++; j--; 18 | } 19 | for (i = 0; i < M; i++) { 20 | printf("%d\n", *(a + i)); 21 | } 22 | 23 | } 24 | ``` 25 | 结果: 26 | ``` 27 | 5 28 | 4 29 | 3 30 | 2 31 | 1 32 | ``` 33 | -------------------------------------------------------------------------------- /91.md: -------------------------------------------------------------------------------- 1 | 题目:时间函数举例。 2 | ```c 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | time_t rawtime; 9 | struct tm * timeinfo; 10 | 11 | time(&rawtime); 12 | timeinfo = localtime(&rawtime); 13 | printf("当前本地时间为: %s", asctime(timeinfo)); 14 | 15 | return 0; 16 | } 17 | ``` 18 | 输出: 19 | ``` 20 | 当前本地时间为: Sat Jun 8 17:34:22 2019 21 | ``` 22 | -------------------------------------------------------------------------------- /92.md: -------------------------------------------------------------------------------- 1 | 题目:时间函数举例。 2 | ```c 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | time_t start, end; 9 | start = time(NULL); 10 | for (int i = 0; i < 3000; i++) 11 | { 12 | printf("\n"); // 返回两个time_t型变量之间的时间间隔 13 | } 14 | end = time(NULL); 15 | 16 | // 输出执行时间 17 | printf("时间间隔为 %6.3f\n", difftime(end, start)); 18 | } 19 | ``` 20 | 结果: 21 | 时间间隔为 1.000 22 | -------------------------------------------------------------------------------- /93.md: -------------------------------------------------------------------------------- 1 | 题目:时间函数举例。 2 | ```c 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | long i = 10000000L; 9 | clock_t start, finish; 10 | double TheTimes; 11 | printf("做%ld次空循环需要的时间为", i); 12 | start = clock(); 13 | while (i--); 14 | finish = clock(); 15 | TheTimes = (double)(finish - start) / CLOCKS_PER_SEC; 16 | printf("%f秒。\n", TheTimes); 17 | return 0; 18 | } 19 | ``` 20 | 结果: 21 | ``` 22 | 做10000000次空循环需要的时间为0.024000秒。 23 | ``` 24 | -------------------------------------------------------------------------------- /94.md: -------------------------------------------------------------------------------- 1 | 题目:猜谜游戏。 2 | ```c 3 | #include 4 | #include 5 | #include 6 | 7 | void game(void) 8 | { 9 | int n; 10 | char begin; 11 | int count = 1; 12 | srand((int)time(NULL)); 13 | int m = (rand() % 100) + 1; 14 | puts("游戏开始,请输入数字:"); 15 | while (1) 16 | { 17 | scanf("%d", &n); 18 | if (n == m) 19 | { 20 | printf("猜中了,使用了 %d 次!\n", count); 21 | if (count == 1) 22 | { 23 | printf("你是神级人物了!膜拜\n"); 24 | getchar(); 25 | printf("你已经达到最高级别,还需要玩吗?Y/N \n"); 26 | scanf("%c", &begin); 27 | if (begin == 'Y' || begin == 'y') //重复玩的一个嵌套循环 28 | { 29 | game(); 30 | } 31 | else 32 | { 33 | printf("谢谢,再见!\n"); 34 | } 35 | } 36 | else if (count <= 5) 37 | { 38 | printf("你是王级人物了!非常赞\n"); 39 | getchar(); 40 | printf("需要挑战最高级别不?Y/N \n"); 41 | scanf("%c", &begin); 42 | if (begin == 'Y' || begin == 'y') 43 | { 44 | game(); 45 | } 46 | else 47 | { 48 | printf("谢谢,再见!\n"); 49 | } 50 | } 51 | else if (count <= 10) 52 | { 53 | printf("你是大师级人物了!狂赞\n"); 54 | getchar(); 55 | printf("需要挑战最高级别不?Y/N \n"); 56 | scanf("%c", &begin); 57 | if (begin == 'Y' || begin == 'y') 58 | { 59 | game(); 60 | } 61 | else 62 | { 63 | printf("谢谢,再见!\n"); 64 | } 65 | } 66 | else if (count <= 15) 67 | { 68 | printf("你是钻石级人物了!怒赞\n"); 69 | getchar(); 70 | printf("需要挑战最高级别不?Y/N \n"); 71 | scanf("%c", &begin); 72 | if (begin == 'Y' || begin == 'y') 73 | { 74 | game(); 75 | } 76 | else 77 | { 78 | printf("谢谢,再见!\n"); 79 | } 80 | } 81 | else 82 | { 83 | getchar(); 84 | printf("你的技术还有待提高哦!重玩? Y/N\n"); 85 | scanf("%c", &begin); 86 | if (begin == 'Y' || begin == 'y') 87 | { 88 | game(); 89 | } 90 | else 91 | { 92 | printf("谢谢,再见!\n"); 93 | } 94 | } 95 | break; 96 | } 97 | else if (n < m) 98 | { 99 | puts("太小了!"); 100 | puts("重新输入:"); 101 | } 102 | else 103 | { 104 | puts("太大了!"); 105 | puts("重新输入:"); 106 | } 107 | count++;//计数器 108 | } 109 | } 110 | 111 | 112 | int main(void) 113 | { 114 | game(); 115 | 116 | return 0; 117 | } 118 | ``` 119 | 结果: 120 | ``` 121 | 游戏开始,请输入数字: 122 | 50 123 | 太大了! 124 | 重新输入: 125 | 20 126 | 太小了! 127 | 重新输入: 128 | 35 129 | 太小了! 130 | 重新输入: 131 | 45 132 | 太小了! 133 | 重新输入: 134 | 48 135 | 太大了! 136 | 重新输入: 137 | 47 138 | 猜中了,使用了 6 次! 139 | 你是大师级人物了!狂赞 140 | 需要挑战最高级别不?Y/N 141 | n 142 | 谢谢,再见! 143 | ``` 144 | -------------------------------------------------------------------------------- /95.md: -------------------------------------------------------------------------------- 1 | 题目:简单的结构体应用实例。 2 | ```c 3 | #include 4 | 5 | struct programming 6 | { 7 | float constant; 8 | char *pointer; 9 | }; 10 | 11 | int main() 12 | { 13 | struct programming variable; 14 | char string[] = "hubojing https://hubojing.github.io"; 15 | 16 | variable.constant = 456.634; 17 | variable.pointer = string; 18 | 19 | printf("%f\n", variable.constant); 20 | printf("%s\n", variable.pointer); 21 | 22 | return 0; 23 | } 24 | ``` 25 | -------------------------------------------------------------------------------- /96.md: -------------------------------------------------------------------------------- 1 | 题目:计算字符串中子串出现的次数。 2 | ```c 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | char s[50], sChild[50]; 9 | scanf("%s", s); 10 | scanf("%s", sChild); 11 | 12 | int cnt = 0, j = 0, k = 0; 13 | for (int i = 0; i <= (strlen(s) - strlen(sChild)); ++i) 14 | { 15 | for (j = 0, k = i; j < strlen(sChild) && sChild[j] == s[k]; ++j, ++k) 16 | { 17 | continue; 18 | } 19 | 20 | if (j == strlen(sChild)) 21 | { 22 | cnt++; 23 | } 24 | } 25 | 26 | printf("%d\n", cnt); 27 | 28 | return 0; 29 | } 30 | ``` 31 | 结果: 32 | ``` 33 | abca 34 | a 35 | 2 36 | ``` 37 | -------------------------------------------------------------------------------- /97.md: -------------------------------------------------------------------------------- 1 | 题目:从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。 2 | ```c 3 | #include 4 | #include 5 | 6 | int main() 7 | { 8 | FILE*fp = NULL; 9 | char filename[25]; 10 | char ch; 11 | printf("输入文件名称:\n"); 12 | scanf("%s", filename); 13 | if ((fp = fopen(filename, "w")) == NULL) 14 | { 15 | printf("ERROR!\n"); 16 | exit(0); 17 | } 18 | printf("输入字符,以#结束:\n"); 19 | getchar(); 20 | while ((ch = getchar()) != '#') 21 | { 22 | fputc(ch, fp); 23 | } 24 | fclose(fp); 25 | 26 | return 0; 27 | } 28 | ``` 29 | 结果: 30 | ``` 31 | 输入文件名称: 32 | test.txt 33 | 输入字符,以#结束: 34 | hubojing.github.io 35 | # 36 | ``` 37 | -------------------------------------------------------------------------------- /98.md: -------------------------------------------------------------------------------- 1 | 题目:从键盘输入一个字符串,将小写字母全部转换成大写字母,然后输出到一个磁盘文件"test"中保存。 2 | ```c 3 | #include 4 | #include 5 | #include 6 | 7 | int main() 8 | { 9 | char s[50]; 10 | scanf("%s", s); 11 | for (int i = 0; i < strlen(s); ++i) 12 | { 13 | if (s[i] >= 'a' && s[i] <= 'z') 14 | { 15 | s[i] -= 32; 16 | } 17 | } 18 | FILE* fp = NULL; 19 | if ((fp = fopen("test", "w")) == NULL) 20 | { 21 | printf("ERROR!\n"); 22 | exit(0); 23 | } 24 | // printf("%s", s); 25 | fprintf(fp, "%s", s); 26 | fclose(fp); 27 | 28 | return 0; 29 | } 30 | ``` 31 | -------------------------------------------------------------------------------- /99.md: -------------------------------------------------------------------------------- 1 | 题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。 2 | 先创建a.txt写入xyz 3 | 再创建b.txt写入abc 4 | ```c 5 | #include 6 | #include 7 | #include 8 | 9 | void read(FILE *f, char s[50], char strName[50]) 10 | { 11 | if ((f = fopen(strName, "r")) == NULL) 12 | { 13 | printf("ERROR!\n"); 14 | exit(0); 15 | } 16 | fgets(s, 50, f); 17 | fclose(f); 18 | } 19 | 20 | int main() 21 | { 22 | FILE *fa = NULL, *fb = NULL, *fc = NULL; 23 | char strA[50], strB[50]; 24 | 25 | read(fa, strA, "a.txt"); 26 | read(fb, strB, "b.txt"); 27 | 28 | strcat(strA, strB); 29 | 30 | for (int i = strlen(strA) - 1; i > 1; --i) 31 | { 32 | for (int j = 0; j < i; ++j) 33 | { 34 | if (strA[j] > strA[j + 1]) 35 | { 36 | char tmp; 37 | tmp = strA[j]; 38 | strA[j] = strA[j + 1]; 39 | strA[j + 1] = tmp; 40 | } 41 | } 42 | } 43 | 44 | if ((fc = fopen("c.txt", "w")) == NULL) 45 | { 46 | printf("ERROR!\n"); 47 | exit(0); 48 | } 49 | 50 | fputs(strA, fc); 51 | fclose(fc); 52 | 53 | return 0; 54 | } 55 | ``` 56 | 57 | 结果: 58 | c.txt中已写入abcxyz 59 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # C-100Practice 2 | C语言经典100例 3 | --------------------------------------------------------------------------------