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\n",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\n",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\n",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\n",data[i]); } }
课下作业2
- 要求:把课上练习3的daytime服务器分别用多进程和多线程实现成并发服务器并测试