• 第二周 测试


    测试

    实验

    vi

    1. 每个.c一个文件,每个.h一个文件,文件名中最好有自己的学号;
    2. 用Vi输入图中代码,并用gcc编译通过;
    3. 在Vi中使用K查找printf的帮助文档,提交vi编辑过程截图。









    gcc

    1. 用gcc 进行预处理,编译,汇编,链接vi输入的代码;
    2. 生成的可执行文件中要有自己的学号;
    3. 提交预处理,编译,汇编,链接,运行过程截图。

    gdb

    1. 用gcc -g编译vi输入的代码;
    2. 在main函数中设置一个行断点;
    3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点。

    静态库

    除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?

    共享库

    除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?

    Makefile

    写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以。

    代码

    head.h

    #ifndef HEAD_H
    #define HEAD_H
    int add(int ,int);
    int sub(int ,int);
    int mul(int ,int);
    double div(int ,int);
    #endif
    

    add.c

    #include "head.h"
    int add(int a,int b){
    	return a+b;
    }
    

    sub.c

    #include "head.h"
    int sub(int a,int b){
    	return a-b;
    }
    

    mul.c

    #include "head.h"
    int mul(int a,int b){
    	return a*b;
    }
    

    div.c

    #include "head.h"
    double div(int a,int b){
    	return a/b;
    }
    

    main.c

    #include “head.h”
    int main(void){
    	int a,b;
    	printf("enter two numbers:");
    	scanf("%d %d",&a,&b);
    	printf("add:%d
    ",add(a,b));
    	printf("sub:%d
    ",sub(a,b));
    	printf("mul:%d
    ",mul(a,b));
    	printf("div:%lf
    ",div(a,b));
    	return 0;
    }
    

    Makefile

    testmymath:main.o add.o sub.o mul.o div.o
    	gcc main.o add.o sub.o mul.o div.o -o testmymath
    main.o: main.c head.h
    	gcc -c main.c -o main.o
    add.o: add.c head.h
    	gcc -c add.c -o add.o
    sub.o: sub.c head.h
    	gcc -c sub.c -o sub.o
    mul.o: mul.c head.h
    	gcc -c mul.c -o mul.o
    div.o: div.c head.h
    	gcc -c div.c -o div.o
    clean:
    	rm -f *.o testmymath
    

    main.c

    #include<stdio.h>
    #include<stdlib.h>
    int sum(int N,int arr []);
    int main (int argc ,char *argv[])
    {
    int result;
    int ch[argc];
    printf("%d
    ",argc - 1);
    for (int i = 0; i<argc; i++)
    {
    ch[i]=atoi(argv[i]);
    result = sum (argc,ch);
    }
    printf ("the result is %d
    ",result);
    return;
    
    }
    

    sum.c

    int sum(int N, int arr[])
    {
    int s = 0;
    for (int i = 0; i<N;i++)
    s +=arr[i];
    return s;
    
    }
  • 相关阅读:
    浏览器内核、webview内核
    移动端(h5)页面适配
    vue 开发多页面应用
    git 指令
    joomla多语言建站之默认前台语言设置
    初识node,原理与浏览器何其相似
    vue-cli下配置项目访问ip和服务器ip
    js中不容小觑的var声明
    vue中的事件监听之——v-on vs .$on
    用js的eval函数模拟Web API中的onclick事件
  • 原文地址:https://www.cnblogs.com/waxxx/p/11936989.html
Copyright © 2020-2023  润新知