为了账号安全,请及时绑定邮箱和手机立即绑定

作业社区

探索学习新天地,共享知识资源!

0 提交作业
0 布置作业
0 满分作业
得分 100
学习任务

慕尼黑0001808 的学生作业:

/* 练习 int a[2][3] = {10,20,30,40,50,60}; int (*p)[3] = a; 要求通过多种方式输出a数组中的数据 */ /* 个人总结: 指针与数组有很高的相似性(基本数据类型变量的指针,可以理解为一维一个元素的数组): 都是引用类型;* 都是用来取下级的0索引值;[] 都是用来取下级指定索引值;& 取本身的地址值;它们各级代表的数据类型相同;各级相同数据类型的偏移量是相同的。 数组取索引越界报错,指针取索引越界不会报错;它们的声明语法结构不同,数组声明:int a[3][2],指针:int (*p)[2];指针没有实际的数据,它需要依赖于变量来产生数,数组中有实际的数据。 */ #include int main() { int a[2][3] = {10,20,30,40,50,60}; int (*p)[3] = a; printf("a=%p\n",a); printf("a[0]=%p\n",a[0]); printf("&a=%p\n",&a); printf("&a[0]=%p\n",&a[0]); printf("*a=%p\n",*a); printf("**a=%d\n",**a); printf("========================================\n"); printf("sizeof(a)=%d\n",sizeof(a)); printf("sizeof(a[0])=%d\n",sizeof(a[0])); printf("sizeof(&a)=%d\n",sizeof(&a)); printf("sizeof(&a[0])=%d\n",sizeof(&a[0])); for(int i = 0;i < 2;i++) { for(int j = 0;j < 3;j++) { printf("==============================================\n"); printf("a[%d][%d]=%d\n",i,j,a[i][j]); printf("(*(a+%d))[%d]=%d\n",i,j,(*(a+i))[j]); printf("*(a[%d]+%d)=%d\n",i,j,*(a[i]+j)); printf("*(*(a+%d)+%d)=%d\n",i,j,*(*(a+i)+j)); printf("p[%d][%d]=%d\n",i,j,p[i][j]); printf("*(p[%d]+%d)=%d\n",i,j,*(p[i]+j)); printf("*(*(p+%d))+%d)=%d\n",i,j,*(*(p+i)+j)); } } return 0; }

得分 100
学习任务

史啦啦 的学生作业:

TCP 面向流的传输特性 TCP 协议本身是无消息边界的字节流传输协议。发送方的数据在传输层会被拆分成多个 TCP 段(Segment),接收方重组时仅保证字节顺序,不保留原始数据包的划分边界。 发送端优化机制 Nagle 算法:为减少小数据包的网络开销,发送端会合并多个小数据包(如多次 send() 调用)再发送。 缓冲区机制:应用层的数据先写入发送缓冲区,若缓冲区未满或未超时,可能延迟发送导致数据堆积。【图片】 #include #include #include #include #include #include #include #include int main(int argc,char *argv[]) { int sfd,ret; ssize_t sbytes = 0,rbytes = 0; char sbuffer[1024] = {0}; char rbuffer[1024] = {0}; struct sockaddr_in svr_addr; if (argc != 3){ fprintf(stderr,"Usage : %s < ip > < port >.\n",argv[0]); return -1; } sfd = socket(AF_INET,SOCK_STREAM,0); if (sfd == -1){ perror("[ERROR] socket(): "); exit(EXIT_FAILURE); } printf("sfd = %d\n",sfd); bzero(&svr_addr,sizeof(svr_addr)); svr_addr.sin_family = AF_INET; svr_addr.sin_port = htons(atoi(argv[2])); svr_addr.sin_addr.s_addr = inet_addr(argv[1]); ret = connect(sfd,(const struct sockaddr *)&svr_addr,sizeof(struct sockaddr)); if (ret == -1){ perror("[ERROR] connect():"); exit(EXIT_FAILURE); } for(;;){ strcpy(sbuffer,"hello,abcde"); sbytes = send (sfd,sbuffer,strlen(sbuffer),0); if (sbytes == -1){ perror("[ERROR] send(): "); exit(EXIT_FAILURE); } usleep(100); } close(sfd); return 0; } #include #include #include #include #include #include #include #include #define LISTEN_SZ 10 int main(int argc,char *argv[]) { if (argc != 3){ fprintf(stderr,"usage : %s < ip > < port >.\n",argv[0]); exit(EXIT_FAILURE); } int sfd,ret,cfd; struct sockaddr_in svr_addr,cli_addr; ssize_t sbytes,rbytes; char buffer[1024] = {0}; sfd = socket(AF_INET,SOCK_STREAM,0); if (sfd == -1){ perror("[ERROR] socket(): "); exit(EXIT_FAILURE); } bzero(&svr_addr,sizeof(struct sockaddr_in)); svr_addr.sin_family = AF_INET; svr_addr.sin_port = htons(atoi(argv[2])); svr_addr.sin_addr.s_addr = inet_addr(argv[1]); ret = bind(sfd,(const struct sockaddr *)&svr_addr,sizeof(struct sockaddr_in)); if (ret == -1){ perror("[ERROR] bind(): "); close(sfd); exit(EXIT_FAILURE); } ret = listen(sfd,LISTEN_SZ); if (ret == -1){ perror("[ERROR] listen(): "); close(sfd); exit(EXIT_FAILURE); } socklen_t len = sizeof(struct sockaddr_in); bzero(&cli_addr,sizeof(struct sockaddr)); cfd = accept(sfd,(struct sockaddr *)&cli_addr,&len); if (cfd == -1){ perror("[ERROR] accept(): "); exit(EXIT_FAILURE); } printf("ip : %s,port : %d\n",inet_ntoa(cli_addr.sin_addr),ntohs(cli_addr.sin_port)); for(;;) { memset(buffer,sizeof(buffer),0); rbytes = recv(cfd,buffer,sizeof(buffer),0); if (rbytes == -1){ perror("recv(): "); exit(EXIT_FAILURE); }else if (rbytes == 0){ printf("The client is offline.\n"); exit(EXIT_FAILURE); }else if (rbytes > 0){ printf(" %s\n",buffer); } sleep(1);// 服务器间隔 1s 接收一次数据 } close(cfd); close(sfd); return 0; }

得分 100
学习任务

史啦啦 的学生作业:

【图片】 #include #include #include #include #include #include #include #include #define LISTEN_SZ 10 int main(int argc,char *argv[]) { if(argc != 3) { fprintf(stderr,"Usage : %s .\n",argv[0]); exit(EXIT_FAILURE); } int sfd,ret,cfd; struct sockaddr_in svr_addr,cli_addr; ssize_t sbytes,rbytes; char buffer[1024] = {0}; sfd = socket(AF_INET,SOCK_STREAM,0); if(sfd == -1) { perror("[ERROR] socket():"); exit(EXIT_FAILURE); } bzero(&svr_addr,sizeof(struct sockaddr_in)); svr_addr.sin_family = AF_INET; svr_addr.sin_port = htons(atoi(argv[2])); svr_addr.sin_addr.s_addr = inet_addr(argv[1]); ret = bind(sfd,(const struct sockaddr *)&svr_addr,sizeof(struct sockaddr_in)); if(ret == -1) { perror("[ERROR] bind():"); close(sfd); exit(EXIT_FAILURE); } ret = listen(sfd,LISTEN_SZ); if(ret == -1) { perror("[ERROR] listen():"); close(sfd); exit(EXIT_FAILURE); } socklen_t len = sizeof(struct sockaddr_in); bzero(&cli_addr,sizeof(struct sockaddr)); cfd = accept(sfd,(struct sockaddr *)&cli_addr,&len); if(cfd == -1) { perror("[ERROR] accept():"); exit(EXIT_FAILURE); } printf("ip : %s,port : %d\n",inet_ntoa(cli_addr.sin_addr),ntohs(cli_addr.sin_port)); //接收客户端的数据 while(1) { memset(buffer,0,sizeof(buffer)); rbytes = recv(cfd,buffer,sizeof(buffer),0); if(rbytes == -1) { perror("[ERROR] recv():"); exit(EXIT_FAILURE); } else if(rbytes == 0) { printf("The client is offline.\n"); exit(EXIT_FAILURE); } else if(rbytes > 0) { //接收到客户端数据回传给客户端 sbytes = send(cfd,buffer,sizeof(buffer),0); if(sbytes == -1) { perror("[ERROR] send():"); exit(EXIT_FAILURE); } } if(strncmp(buffer,"quit",4) == 0) { break; } } return 0; }

得分 100
学习任务

Hee_cryLQ0 的学生作业:

seqlist.h #ifndef __SEQLIST__ #define __SEQLIST__ #include #include #include #define MAX 10 typedef struct student { char name[20]; int id; int age; }datatype_t; typedef struct { datatype_t buf[MAX]; //buf[10]:顺序表中有10个学生 int n; }seqlist_t; seqlist_t *create_empty_seqlist(); int is_full_seqlist(seqlist_t *list); void insert_data_seqlist(seqlist_t *list, datatype_t data); void printf_data_seqlist(seqlist_t *list); #endif //__SEQLIST__ seqlist.c #include "seqlist.h" /*创建一个空的顺序表*/ seqlist_t *create_empty_seqlist() { seqlist_t *list = NULL; //list本身是局部变量 list = (seqlist_t *)malloc(sizeof(seqlist_t));//而list保存的地址在堆区 if(NULL == list) { printf("malloc seqlist failed!\n"); return NULL; } memset(list, 0, sizeof(seqlist_t)); list->n = 0; return list; } /*检查顺序表是否已经存满数据MAX=10*/ int is_full_seqlist(seqlist_t *list) { return list->n == MAX ? 1 : 0; } /*向顺序表中插入学生信息,传入学生对象data*/ void insert_data_seqlist(seqlist_t *list, datatype_t data) { strcpy(list->buf[list->n].name, data.name);//数组名是数组首地址,不能对数组名进行=赋值,所以需要使用strcpy list->buf[list->n].id = data.id; list->buf[list->n].age = data.age; list->n = list->n + 1; //list->n++; return ; } /*打印顺序表中的学生信息*/ void printf_data_seqlist(seqlist_t *list) { printf("name\tid\tage\n"); for(int i = 0; i < list->n; i++) { printf("%s\t%d\t%d\n",list->buf[i].name, list->buf[i].id, list->buf[i].age); } return ; } main.c #include "seqlist.h" int main() { seqlist_t *list = NULL; list = create_empty_seqlist();//创建一个空表 datatype_t data; //创建学生对象 printf("请输入学生的信息,最多输入%d个。\n", MAX); while(!is_full_seqlist(list)) { scanf("%s%d%d", data.name, &data.id, &data.age); insert_data_seqlist(list, data); } printf_data_seqlist(list); free(list); list = NULL; return 0; }

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号