C语言程序设计

李永宁 李志慧 王荣福 郭艳宏 蔡荣贵 王露 康高厉 夏雨 赵东琛

目录

  • 1 第一章 C语言概述
    • 1.1 教学材料
      • 1.1.1 课程纲要
      • 1.1.2 授课计划
      • 1.1.3 课内实训指导书
      • 1.1.4 教案
    • 1.2 C语言概述
      • 1.2.1 学习目标
      • 1.2.2 学习视频
      • 1.2.3 学习效果检测
      • 1.2.4 练习及作业
    • 1.3 C语言基本程序结构
    • 1.4 C程序的编辑、编译、连接和运行
    • 1.5 PPT
  • 2 第二章 C程序设计基础
    • 2.1 C语言数据类型
      • 2.1.1 数据类型
      • 2.1.2 学习视频
    • 2.2 运算符和表达式
      • 2.2.1 学习视频
    • 2.3 顺序结构程序设计
    • 2.4 数据的输入与输出
    • 2.5 上机实践
    • 2.6 章节测试
  • 3 第三章  选择结构程序设计
    • 3.1 关系运算符和关系表达式
    • 3.2 逻辑运算符和逻辑表达式
    • 3.3 if语句
      • 3.3.1 学习视频
    • 3.4 Switch语句
    • 3.5 上机实践
    • 3.6 PPT
  • 4 第四章   循环结构程序设计
    • 4.1 whiile语句和do while语句
      • 4.1.1 学习视频
    • 4.2 for语句循环结构
    • 4.3 break 、continue语句
    • 4.4 goto语句
    • 4.5 嵌套循环结构
    • 4.6 循环小结
    • 4.7 实训3-循环结构程序设计
    • 4.8 PPT
  • 5 第五章   数组
    • 5.1 一维数组
      • 5.1.1 微课视频-冒泡排序法
    • 5.2 二维数组与字符数组
      • 5.2.1 预习任务
    • 5.3 字符数组与字符串
    • 5.4 项目实训4-数组的应用
    • 5.5 PPT
    • 5.6 数组学习效果检测
  • 6 第六章  函数
    • 6.1 函数概述
      • 6.1.1 预习任务
      • 6.1.2 微课视频
      • 6.1.3 知识点思维导图
      • 6.1.4 课后作业
    • 6.2 函数的参数和返回值
      • 6.2.1 预习效果检测
      • 6.2.2 微课视频
      • 6.2.3 学习效果检测
    • 6.3 函数的调用
    • 6.4 函数的嵌套和递归调用
    • 6.5 数组作为函数的参数
    • 6.6 局部变量和全局变量
    • 6.7 内部函数和外部函数
    • 6.8 项目实训5
    • 6.9 PPT
  • 7 第7章 编译预处理
    • 7.1 宏定义
      • 7.1.1 不带参数的宏定义
      • 7.1.2 带参数的宏定义
    • 7.2 “文件包含”处理
    • 7.3 条 件 编 译
    • 7.4 电子课件
  • 8 第8章 指针
    • 8.1 指针的基本概念
      • 8.1.1 变量的地址
      • 8.1.2 指针变量的定义
      • 8.1.3 指针变量的引用
    • 8.2 指针与一维数组
      • 8.2.1 指向一维数组的指针变量
      • 8.2.2 通过指针引用一维数组元素
      • 8.2.3 指针使用的几个细节
    • 8.3 指针与字符串
      • 8.3.1 使用指针处理字符串
      • 8.3.2 字符型指针变量作函数参数
      • 8.3.3 字符指针变量与字符数组的区别
    • 8.4 指针与二维数组
      • 8.4.1 二维数组的指针
      • 8.4.2 行指针变量
      • 8.4.3 二维数组的指针作函数参数
    • 8.5 指针数组与多级指针
      • 8.5.1 指针数组
      • 8.5.2 多级指针的概念
    • 8.6 指针与函数
      • 8.6.1 指针变量作为函数的参数
      • 8.6.2 函数的指针
      • 8.6.3 返回指针值的函数
    • 8.7 main函数的参数
      • 8.7.1 main函数参数的概念
      • 8.7.2 main函数参数的处理
    • 8.8 程序设计举例
    • 8.9 课内实训
    • 8.10 PPT
    • 8.11 学习效果检测
  • 9 第9章 结构体与其他数据类型
  • 10 文件
  • 11 24级软件工程、网络工程、物联网工程等专业C语言课程设计
    • 11.1 实训指导书
    • 11.2 项目一 学生信息管理系统.PPT
    • 11.3 项目二 图书管理系统PPT
    • 11.4 实训报告电子版下载
  • 12 21级软件工程-C语言程序设计
    • 12.1 21级软件工程-C语言程序设计-实训预备项目指导书下载
    • 12.2 新建目录
    • 12.3 21级软件工程-C语言程序设计-实训指导书下载
    • 12.4 ​视频:C语言打造学生信息管理系统
    • 12.5 视频:学生成绩管理系统的设计
    • 12.6 视频:指针
    • 12.7 实训报告电子版
程序设计举例

    例:某蔬菜公司销售N种蔬菜,分4个季度统计每年蔬菜销售量。输入每种蔬菜编号存放在数组num[N][10]中(假设编号小于10个字符),输入每种蔬菜4个季度的销售量(千克)存放在数组sale[N][5]中(sale的前4列存放各季度销售量,最后一列用来存放4个季度的销售总和),编写程序完成下面的任务。

  (1)输入每种蔬菜编号、每种蔬菜4个季度的销售量存放数组num和sale中。

  (2)计算每种蔬菜4个季度的销售总和,存放在数组sale的最后一列。

  (3根据给定的蔬菜编号和季度数,找出与之对应的销售量。

  (4)根据给定的季度数,找出该季度销售量最大、最小的两种蔬菜。

#include <stdio.h>

#include <string.h>

  #define  N   60         /*假设蔬菜品种为60*/

  #define  M   5

  char  num[N][10];     /*存放每种蔬菜编号,每行放一个编号*/

  float  sale[N][M];    

         /*每行可存放一种蔬菜的4个季度的销售量及销售总和*/

 void  fun1( )   

          /*功能是将每种蔬菜编号和4个季度的销售量存放数组中*/

  {int i,k;

   float (*p)[5];  /*定义行指针变量p,指向有5个元素的一维数组*/

   p= sale;       /*让p指向sale的首地址,即指向sale的首行*/

   for (i=0; i<N; i++) 

       /*将每种蔬菜编号和销售量存放在num和sale数组的同一行*/

      { printf("请输入第%d种蔬菜的编号:",i+1);

         scanf("%s",num[i]);

         printf("请输入4个季度的销售量\n");

         for (k=0; k<4; k++)

            scanf("%f", *(p+i )+k);  /*相当于执行“scanf("%f",&sale[i][k]);”*/

       }

    return;

  }

 void  fun2( )      /*功能是计算每种蔬菜4个季度的销售总和*/

  {int i,k;

   char (*p)[10];  /*定义行指针变量p,指向有10个元素的一维数组*/

   p=num;      /*让p指向num的首地址,即指向num的首行*/

   for (i=0; i<N; i++)

       { sale[i][4]= 0;;   

         for (k=0; k<4; k++)  

             sale[i][4]= sale[i][4]+ sale[i][k];

       }

   for (i=0; i<N; i++) 

      /*输出每种蔬菜编号和4个季度的销售量以及销售总和*/

     { printf("%s   ", p+i);     /*相当于执行“printf("%s   ", num[i]);”*/

       for (k=0; k<5; k++)

            printf("%f   ", sale[i][k]);

       printf("\n");

      }

   return;

  }

void  fun3( ) 

  /*功能是根据给定的季度数,找出该季度销售量最大、最小的蔬菜*/

  {int qu,i,k1,k2;  float max,min;

   printf("请输入季度数(1或2或3或4):");

   scanf("%d",&qu);     /*该季度销售量对应数组sale的第qu-1列的值*/

   max=sale [0][qu-1];   /*假设sale [0][qu-1]是最大值,暂时存放max中*/

   min= sale [0][qu-1];   /*假设sale [0][qu-1]是最小值,暂时存放min中*/

   for (i=1; i<N; i++)  

       /*通过与第qu-1列的其它数组元素比较,找最大、最小值*/

       {if (sale [i][qu-1]>max)

             {max= sale [i][qu-1];  k1=i; }

        if (sale [i][qu-1]<min)

             {min= sale [i][qu-1];  k2=i; }

       }

   printf("\n在第%d季度所有蔬菜销售量中,", qu);

   printf("\n蔬菜编号%s的销售量%f千克最大;", num[k1],max);

   printf("\n蔬菜编号%s的销售量%f千克最小。", num[k2],min);

   return;

  }

 void  fun4() 

 /*功能是根据给定的蔬菜编号和季度数,找出与之对应的销售量*/

  {char *seek;  int qu,i,j,k,n; ;

   printf("请输入蔬菜编号:");

   scanf("%s", seek);

   for (i=0; i<N; i++)

       if (strcmp(seek, num[i])==0) 

            k=i;          /*k值存放给定的蔬菜编号在num中的行数*/

   printf("请输入季度数(1或2或3或4):");

   scanf("%d", &qu); 

       /*sale数组的第k行,第(qu-1)列位置的值就是要找的销售量*/

   printf("\n编号为%s的蔬菜在第%d季度销售量为%f。\n",

                seek, qu , sale[k][qu-1]);

   return;

  }