# 20155224课上测试补完+课下作业

20155224课上测试补完+课下作业

测试1

  • 要求:

参考 http://www.cnblogs.com/rocedu/p/6766748.html#SECCLA 在Linux下完成“求命令行传入整数参数的和”

测试代码传入自己的8位学号

上方提交代码

附件提交运行测试截图

import java.util.*;

public class CLSum {
    public static void main(String [] args) {

        int sum = 0;

        for(String arg: args)
            sum += Integer.parseInt(arg);//将老师代码中的 Interger改为 Integer

    // 打印
        System.out.println(sum);
    }
}
  • 结果:
#include <stdio.h>
void main(int argc,char** argv)
{
        int i,a,sum=0;
        for(i=1;i<argc;i++)
        {
                a=atoi(argv[i]);
                sum = sum +a;
        }
        printf("%d
",sum);
}

测试2

  • 要求:

把第一个练习中的代码在X86-64(Ubuntu)中反汇编,给出汇编代码和机器码的截图

把X86-64汇编翻译成Y86-64汇编,并给出相应机器码的截图(使用附件中的Y86-64模拟器)

  • 结果:

测试3

  • 要求:

基于socket 使用教材的csapp.h csapp.c,实现daytime(13)服务器(端口我们使用13+后三位学号)和客户端
服务器响应消息格式是

客户端IP:XXXX
服务器实现者学号:XXXXXXXX
当前时间: XX:XX:XX

上方提交代码
提交一个客户端至少查询三次时间的截图测试截图
提交至少两个客户端查询时间的截图测试截图

  • 结果:

课下作业1

  1. 完成家庭作业4.47,4.48,4.49
  2. 相应代码反汇编成X86-64汇编
  3. 把上述X86-64汇编翻译成Y86汇编,并给出相应机器码
  • 4.47
    • 要求:书写一个C版本的冒泡排序法,用指针引用数组元素,而不是数组索引。书写并测试这个函数和测试代码组成的Y86-64程序。
    • 结果:
#include<stdio.h>
void bubble_a(int *data, int count){
    int i,next;
    for(next = 1; next < count; next++){
        for(i = next - 1; i >= 0; i--)
            if(*(data + i + 1) < *(data + i)){
                int t = *(data + i + 1);
                *(data + i + 1) = *(data + i);
                *(data + i) = t;
            }
    }
}
void main()
{
    int data[5]={4,90,2,6,0};
    int i;
    bubble_a(data,5);
    for(i=0;i<5;i++)
    {
        printf("%2d
",data[i]);
    }
}

  • 4.48
    • 要求:实现冒泡排序,要求不使用跳转,且最多使用3次条件传送。
    • 结果:
#include<stdio.h>
void bubble_a(int *data,int count)
{
    int i , next;
    int pre_ele,next_ele;
    for(next = 1;next < count;next++)
    {
        for(i = next -1;i >= 0;i--)
        {
            pre_ele = *(data + i);
            next_ele = *(data + i + 1);
            *(data + i) = next_ele < pre_ele ? next_ele : pre_ele;//三目运算符号
            *(data + i + 1) = next_ele < pre_ele ? pre_ele : next_ele;//使用两次条件传送
        }
    }
}
void main()
{
    int data[5]={4,90,2,6,0};
    int i;
    bubble_a(data,5);
    for(i=0;i<5;i++)
    {
        printf("%2d
",data[i]);
    }
} 

  • 4.49
    • 要求:实现冒泡排序,要求不使用跳转,且最多使用1次条件传送。
    • 结果:
#include<stdio.h>
void bubble_c(int *data,int count)
{
    int i , next;
    int pre_ele,next_ele;
    for(next = 1;next < count;next++)
    {
        for(i = next -1;i >= 0;i--)
        {
            pre_ele = *(data + i);
            next_ele = *(data + i + 1);
            *(data + i) = next_ele < pre_ele ? next_ele : pre_ele;
            *(data + i + 1) = pre_ele;
        }
    }
}
void main()
{
    int data[5]={4,90,2,6,0};
    int i;
    bubble_a(data,5);
    for(i=0;i<5;i++)
    {
        printf("%2d
",data[i]);
    }
}  

课下作业2

- 要求:把课上练习3的daytime服务器分别用多进程和多线程实现成并发服务器并测试
原文地址:https://www.cnblogs.com/nxy970408/p/7816915.html