《C语言及程序设计》实践项目——程序的多文件组织

简介: 返回:贺老师课程教学链接【项目1-程序的多文件组织】请将下面的程序中的代码分别保存在两个文件中,利用多文件的方式组织。* main.c(也可以是别的名字)#include <stdio.h>int max(int x,int y);int min(int x,int y);int main( ){ int a,b,c1,c2;

返回:贺老师课程教学链接

【项目1-程序的多文件组织】请将下面的程序中的代码分别保存在两个文件中,利用多文件的方式组织。

* main.c(也可以是别的名字)

#include <stdio.h>
int max(int x,int y);
int min(int x,int y);
int main( )
{
    int a,b,c1,c2;
    printf("输入两数:");
    scanf("%d %d", &a, &b);
    c1=max(a,b);
    printf("max=%d\n", c1);
    c2=min(a,b);
    printf("min=%d\n", c2);
    return 0;
}

* fun.cpp(也可以是别的名字)

//文件开头还可以根据需要写#include<>及其他声明(本程序不需要)
int max(int x,int y)
{
   int z;
   z=x>y?x:y;
   return(z);
}
int min(int x,int y)
{
   int z;
   z=x<y?x:y;
   return(z);
}

【项目2——带头文件的程序】建立下面由多个头文件和源文件组成的程序,并运行
* main.h

#ifndef MAIN_H
#define MAIN_H
#include <stdio.h>
#include <stdlib.h>
int *a;
int b;
#endif 

*main.cpp

#include "main.h"
#include "extern.h"
int main()
{
    a = (int *)malloc(sizeof(int));
    *a = 1;
    b = 2;
    printf("int a = %d\n",*a);
    printf("int b = %d\n",b);
    func();
    free(a);
    return 0;
}

* extern.h

#ifndef EXTERN_H
#define EXTERN_H
#include <stdio.h>
extern int *a;
extern int b;
static int c  =  8;
void func();
#endif

* extern.cpp

#include "extern.h"
void func()
{
    printf("Before:\n");
    printf("in func a = %d\n",*a);
    printf("in func b = %d\n",b);
    *a = 3;
    b = 4;
    printf("After:\n");
    printf("in func a = %d\n",*a);
    printf("in func b = %d\n",b);
    printf("only used in extern.h c = %d",c);
}

【项目3-随便改】保持下面程序主体for循环部分不变,用你能想到的办法修改程序,使下面程序的输出的a每次都能变化,输出1 2 3 4

#include<stdio.h>
void change(int a)
{
    a=a+1;
}
int main()
{
    int a=0;
    int n=4;
    int i=0;
    for(i=0; i<n; i++)
    {
        change(a);
        printf("%d ",a);//如何使这里a的值,每次都发生改变
    }
    return 0;
}

[参考解答]

【项目4-自选多文件组】
选择一个你在前面做过的一个“大程序”,将mian()函数保存在一个单独的源文件中,程序中所需要变量、类型、函数声明,保存到一个.h文件中,而涉及到的自定义函数,分类别地保存到不同的源文件中。以此巩固用多文件组织的能力,体会这样组织程序的好处。

目录
相关文章
|
5天前
|
C语言
第一章 C语言知识点(程序)
第一章 C语言知识点(程序)
16 0
|
4天前
|
存储 自然语言处理 编译器
“ Hello world ”中的秘密之【C语言程序编译和链接】
作为C语言最经典的代码,大家都可以轻易写出。但是代码的运行过程却很少有人清楚,接下来我将介绍代码运行的奥秘。
15 0
|
6天前
|
自然语言处理 编译器 C语言
C语言程序编译和链接
在ANSI C的任何⼀种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执⾏的机器指令(⼆进制指令)。 第2种是执⾏环境,它⽤于实际执⾏代码。
|
7天前
|
存储 算法 C语言
【C 言专栏】用 C 语言开发游戏的实践
【5月更文挑战第5天】本文探讨了使用C语言开发游戏的实践,包括选择适合的游戏类型(如贪吃蛇、俄罗斯方块),设计游戏框架、图形界面和逻辑,以及音效添加。文章还强调了性能优化、测试调试、跨平台挑战及未来发展趋势。对于热衷于C语言的开发者,这是一次挑战与乐趣并存的探索之旅。
【C 言专栏】用 C 语言开发游戏的实践
|
8天前
|
网络协议 物联网 数据处理
【C 言专栏】C 语言实现网络通信程序
【5月更文挑战第4天】本文探讨了使用C语言实现网络通信程序的方法,包括理解网络通信基本概念如协议和套接字,以及TCP/UDP通信的实现步骤。通过创建套接字、绑定端口、监听连接、数据传输和错误处理等关键环节,阐述了C语言在网络通信中的优势。文中还提到了实际应用案例、程序优化策略及未来发展趋势,旨在帮助读者掌握C语言在网络通信领域的应用技巧。
【C 言专栏】C 语言实现网络通信程序
|
11天前
|
并行计算 算法 测试技术
【C 言专栏】优化 C 语言程序性能的策略
【5月更文挑战第2天】本文探讨了优化C语言程序性能的策略,包括算法优化(选择合适的时间和空间复杂度)、代码结构优化(减少函数调用,合理使用循环)、内存管理优化(合理分配和及时释放内存)、编译器优化(选择优化级别,内联函数,循环展开)、数据结构优化(根据需求选择数组、哈希表或堆)、并行计算优化(多线程、多进程和MPI编程)以及性能测试与分析(使用性能分析工具、基准测试和分析执行路径)。通过这些方法,可以提升C语言程序的效率和运行速度。
|
12天前
|
存储 算法 程序员
【C言专栏】C 语言结构体的应用与实践
【4月更文挑战第30天】C语言中的结构体是自定义数据类型的关键,它组合不同类型的數據以创建新类型,尤其适合处理复杂对象如学生信息。通过定义结构体如`struct Student`,包含名字、学号和成绩,可以方便地实例化和访问成员。结构体在链表实现、函数参数传递和数组中都有广泛应用,如表示链表节点和处理批量数据。理解并熟练运用结构体对于C语言编程至关重要,能提升代码效率和可读性。
|
12天前
|
存储 Linux C语言
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)-2
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)
|
12天前
|
自然语言处理 Linux 编译器
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)-1
C语言进阶第十一节 --------程序环境和预处理(包含宏的解释)
|
13天前
|
存储 缓存 算法
C语言循环语句的探讨与实践
C语言循环语句的探讨与实践
22 1