C语言经典实例:11-20例:使用结构体输出学生成绩、编制万年历、验证哥德巴赫猜想、求二维数组最大最小值、数组求素数、数组元素排序、进制数的转换进制数的转换、找出次大值、重组数组(上)

简介: C语言经典实例:11-20例:使用结构体输出学生成绩、编制万年历、验证哥德巴赫猜想、求二维数组最大最小值、数组求素数、数组元素排序、进制数的转换进制数的转换、找出次大值、重组数组(上)

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项目设置为启动项目

如下所示

fe5d0fdf4f314c8e9e4c4dc119a5549a.png


2、新建一个Main.h头文件和Main.c源文件。

工程项目和文件如下所示。

8720895316934f8e999bcf4a25a026da.png


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);
}


调试结果如下


69fbe5486aa646269679b19d8137a178.png


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;             // 程序返回
}

其调试结果如下


88c5b8d06e63459fb8e3fc2bbc229d24.png


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()函数,其调试结果如下



12392add00964b7fa15bb3e10344883f.png

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()函数,其调试结果如下

8cc7f1f4508041d0a79a8ee0e18924bd.png

相关文章
|
3天前
|
存储 C语言
向函数传递结构体: C语言中的结构体参数传递详解
向函数传递结构体: C语言中的结构体参数传递详解
14 0
|
1天前
|
存储 算法 C语言
C语言中的结构体与共用体:深入探索与应用
C语言中的结构体与共用体:深入探索与应用
7 0
|
3天前
|
存储 C语言 索引
C语言一维数组与二维数组详解及代码实例
C语言一维数组与二维数组详解及代码实例
11 0
|
3天前
|
存储 大数据 程序员
实验验证C语言中结构体与共用体的差异
实验验证C语言中结构体与共用体的差异
12 0
|
3天前
|
存储 C语言
C语言中向函数传递二维数组的技术详解
C语言中向函数传递二维数组的技术详解
11 0
|
3天前
|
存储 C语言
C语言中的结构体与函数传递技术详解
C语言中的结构体与函数传递技术详解
14 1
|
3天前
|
存储 安全 C语言
C语言中的共用体与结构体的区别
C语言中的共用体与结构体的区别
17 3
|
3天前
|
C语言
C语言中返回指针值的函数
C语言中返回指针值的函数
12 0
|
4天前
|
算法 C语言 容器
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣(上)
从C语言到C++_18(stack和queue的常用函数+相关练习)力扣
14 0
|
23小时前
|
Serverless C语言
C语言函数详解与实战应用
C语言函数详解与实战应用
7 1