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
- 完成家庭作业4.47,4.48,4.49
- 相应代码反汇编成X86-64汇编
- 把上述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服务器分别用多进程和多线程实现成并发服务器并测试