且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

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

更新时间:2022-10-12 08:19:08

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

【项目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文件中,而涉及到的自定义函数,分类别地保存到不同的源文件中。以此巩固用多文件组织的能力,体会这样组织程序的好处。