C语言经典实例:11-20例:使用结构体输出学生成绩、编制万年历、验证哥德巴赫猜想、求二维数组最大最小值、数组求素数、数组元素排序、进制数的转换进制数的转换、找出次大值、重组数组
0、前言
学习C语言最好的方式是练习C语言的经典实例,小编带领大家,通过本文的“C语言经典实例:11-20例“的手把手教会你使用VS2019创建C语言项目、一步一步编写C语的过程,最后达到我们学习C语言各种知识点的目的:C语言基础、C语言for、while循环的运用、相同类型的多变量采用数组存放,指针的运用、malloc函数为指针开辟内存的运用、混乱类型的数据类型:结构体的运行、结构体指针的运用等。
1、程序的编写工具
本C语言的实例:11-20例程序,使用Visual Studio 2019软件进行编写。
2、项目的创建
1、在“C语言经典实例:1-10例”中创建的“C语言经典实例”的空白解决方案中新建一个名为“C语言经典实例11-20”的C语言项目。
2、将C语言经典实例11-20项目设置为启动项目
如下所示
2、新建一个Main.h头文件和Main.c源文件。
工程项目和文件如下所示。
3、C语言经典实例11-20编写的过程
3.1、C语言经典实例11-求二维数组最大最小值
在Main.h头文件中声明一个func11函数,然后再Main.c源文件中定义func11函数,并实现相关的功能。
Main.h头文件中的代码如下
#ifndef MAIN_H #define MAIN_H //包含相应的系统头文件 #include <stdio.h> #include <stdlib.h> #define MAXN 20 int a[MAXN][MAXN]; // 函数的声明 // 实例11:求二维数组最大最小值 void func11(); #endif
Main.c源文件中的代码如下
#include "Main.h" int main() { system("color 3E"); // 实例11:求二维数组最大最小值 func11(); system("pause"); return 0; } // 实例11:求二维数组最大最小值 void func11() { int min, max; int row, col, n; /* 输入方阵的阶次 */ printf("Please input the order of the matrix:\n"); scanf_s("%d", &n); printf("Please input the elements of the matrix,\n from a[0][0] to a[%d][%d]:\n", n - 1, n - 1); for (row = 0; row < n; row++) { for (col = 0; col < n; col++) { scanf_s("%d", &a[row][col]); } } for (min = a[0][0], row = 0; row < n; row++) { for (max = a[row][0], col = 1; col < n; col++) /*从 row 行选出大数 */ { if (max < a[row][col]) { max = a[row][col]; } } /* 保存至 row 行的小数 */ if (min > max) { min = max; } } printf("The minimum of maximum number is %d\n", min); for (max = a[0][0], row = 0; row < n; row++) { /* 从 row 行选出小数 */ for (min = a[row][0], col = 1; col < n; col++) { if (min > a[row][col]) { min = a[row][col]; } } /*保存至 row 行的大数 */ if (max < min) { max = min; } } printf("The maximum of minimum numbers is %d\n", max); }
调试结果如下
3.2、C语言经典实例12-数组求素数
在Main.h头文件中声明一个func12函数和primeJudge函数,然后再Main.c源文件中定义func12函数和rimeJudge函数,并实现相关的功能。
Main.h头文件添加的代码如下
// 实例12:数组求素数 void func12(); int primeJudge(int n);
Main.c源文件添加的代码如下
// 实例12:数组求素数 void func12() { int s = 0; int a[100], b[100] = { 0 }; int primeIndex = 0; for (int i = 1750, j = 0; j < 100; i++, j++) { a[j] = i; } for (int i = 0; i < 100; i++) { if (primeJudge(a[i])) { b[primeIndex] = a[i]; s += a[i]; primeIndex++; } } printf("1750到1850之间的素数有\n"); for (int i = 0; i < primeIndex; i++) { printf("%d\t", b[i]); } printf("\n1750到1850之间的素数和为:%d\n", s); } int primeJudge(int n) { int i; for (i = 3; i <= n / 2; i += 2) { if (n % i == 0) return 0; } return 1; }
然后在main()函数中只调用func12()函数,如下所示
int main() { system("color 3E"); // 改变控制台输出的颜色 // 实例1:两个实数比较大小 //func1(); // 实例2:字符输出 func2(); system("pause"); // 使程序暂停 return 0; // 程序返回 }
其调试结果如下
3.3、C语言经典实例13-编制万年历
在Main.h头文件中声明一个func13函数和judgeLeapYear函数,然后再Main.c源文件中定义func13函数和judgeLeapYear函数,并实现相关的功能。
Main.h头文件添加的代码如下
// 实例13:编制万年历 void func13(); // 闰年判断 int judgeLeapYear(int y);
Main.c源文件添加的代码如下
// 实例13:编制万年历 void func13() { int y; int i, j, sum = 0; int begin, week; int days[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 }; printf("请输入年份:"); scanf_s("%d", &y); for (i = 1; i < y; i++) sum += judgeLeapYear(i); week = (sum + 1) % 7; //表示该年1月1日为星期几 if (judgeLeapYear(y) == 366) days[1] = 29; printf("\n%d年日历如下:\n\n", y); for (i = 0; i < 12; i++) { printf(" %d月 \n", i + 1); printf(" 7 1 2 3 4 5 6\n"); printf("=====================\n"); begin = 1; for (j = 0; j < week; j++) printf(" "); while (begin <= days[i]) { printf("%3d", begin); begin++; week = (week + 1) % 7; if (week % 7 == 0) printf("\n"); } printf("\n\n"); } } // 闰年判断 int judgeLeapYear(int y) { if ((y % 4 == 0) && (y % 100 != 0) || y % 400 == 0) return 366; else return 365; }
然后在main()函数中只调用func13()函数,其调试结果如下
3.4、C语言经典实例14-数组元素排序
在Main.h头文件中声明一个func14函数,然后再Main.c源文件中定义func14函数,并实现相关的功能。
Main.h头文件添加的代码如下
// 实例14:数组元素排序 void func14();
Main.c源文件添加的代码如下
// 实例4:自增自减运算 // 实例14:数组元素排序 void func14() { int a[10] = { 10,2,3,4,5,6,9,18,7,12 }; int i, j, t; printf("原数组为: "); for (i = 0; i < 10; i++) { printf("%d ", a[i]); } for (j = 0; j < 10; j++) { for (i = 0; i < 9 - j; i++) { if (a[i] > a[i + 1]) { t = a[i]; a[i] = a[i + 1]; a[i + 1] = t; } } } printf("\n排序的数组为: "); for (i = 0; i < 10; i++) { printf("%d ", a[i]); } printf("\n"); }
然后在main()函数中只调用func4()函数,其调试结果如下