2019春第八周作业

这个作业属于那个课程 C语言程序设计II
这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/MS/homework/3080
我在这个课程的目标是 学会使用动态内存分配来解决问题
这个作业在哪个具体方面帮助我实现目标 理解和掌握动态内存分配的具体使用
参考文献 C语言程序设计II第八章

一、本周完成作业

基础作业1

1.实验代码

#include <stdio.h>
#define MAXS 20

void f( char *p );
void ReadString( char *s );

int main()
{
    char s[MAXS];

    ReadString(s);
    f(s);
    printf("%s\n", s);

    return 0;
}
void f( char *p )
{
int i=0,m=0,n,temp;
while(p[i]!='\0')
i++;
n=i-1;
while(m<=n)
{
temp=p[m];
p[m]=p[n];
p[n]=temp;
m++;
n--;
}
}

2.设计思路

3.本题调试过程碰到的问题及解决办法 

本题比较简单基本没什么问题

4.运行结果截图

基础作业2

1.实验代码

#include <stdio.h>
#include <string.h>

#define MAXS 10

char *str_cat( char *s, char *t );

int main()
{
    char *p;
    char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'};

    scanf("%s%s", str1, str2);
    p = str_cat(str1, str2);
    printf("%s\n%s\n", p, str1);

    return 0;
}
char *str_cat(char *s, char *t)
{
    char*m=s;
while(*s!='\0'){
s++;
}
while(*t!='\0'){
*s=*t;
t++;
s++;
}
return m;
}
2.设计思路
3.本题调试过程碰到的问题及解决办法
一开始没有定义一个指针等于s,出现了错误,然后自己问同学得以解决
错误截图
4.运行结果截图
基础作业3
1.实验代码
#include<stdio.h>
#include<stdlib.h>
int main ()
{
    int n,i,*p;
    double max,min,sum=0,average;
    scanf("%d",&n);
    if((p=(int*)calloc(n,sizeof(int)))==NULL){
        printf("Not able to allocate memory.\n");
        exit(1);
    }
    for(i=0;i<n;i++){
        scanf("%d",p+i);
    }
    max=min=*(p+0);
    for(i=0;i<n;i++){
        sum=sum+*(p+i);
        if(*(p+i)>max){
        max=*(p+i);
        }
        if(*(p+i)<min){
        min=*(p+i);
    }
    }
    average=sum/n;
    printf("average = %.2f\nmax = %.2f\nmin = %.2f",average,max,min);
    free(p);
    return 0;
}
2.设计思路
3.本题调试过程碰到的问题及解决办法 
一开始想的太复杂,找max和min时用一个中间数来跟*(p+i)交换导致部分正确,然后换了一个方法就对了
错误截图
4.运行结果截图
基础作业4
1.实验代码
#include<stdio.h>
#include<string.h>
int main()
{
int i,j;
char a[5][80], t[80];
for (i = 0; i < 5; i++)
{
scanf("%s",&a[i]);
}
for (i=1;i<5;i++)
{
for (j =0; j < 5-i ;j++)
if (strcmp(a[j], a[j+1]) > 0)
{
strcpy(t,a[j]);
strcpy(a[j], a[j + 1]);
strcpy(a[j + 1], t);
}
}
printf("After sorted:\n");
for (i = 0; i < 5; i++){
    printf("%s\n",a[i]);
    }
return 0;
}
2.设计思路
3.本题调试过程碰到的问题及解决办法
本题都是一些小错误,经过自己检查和问同学之后改正
4.运行结果截图
预习作业
1.实验代码
#include<stdio.h>
struct student
{
char num[6],name[10];
int sore;
};
int main()
{
int N,i,sum=0;
double average;
struct student s[10];
scanf("%d",&N);
for(i=0;i<N;i++)
{
scanf("%s %s %d",&s[i].num ,&s[i].name ,&s[i].sore );
sum=sum+s[i].sore ;
}
average=sum*1.0/N;
printf("%.2f\n",average);
for(i=0;i<N;i++)
{
if(s[i].sore<average)
printf("%s %s\n",s[i].name,s[i].num);
}
}
2.设计思路
3.本题调试过程碰到的问题及解决办法 
主要难点在于不知道前面要加一个 struct student 来定义,后面基本比较简单,算出总和跟平均值,再按要求输出一些同学的name跟sore
数组s【5】导致部分正确,经过自己多次检查后改正
错误截图
4.运行结果截图
挑战作业实在太难,不会做
学习感悟
总之就是还是要靠自己多钻研,老师只是辅助,要靠自己多找资料和问同学来学习,继续加油吧
结对编程优缺点
总的来说还是优点大于缺点的,能够相互学习共同进步取长补短,毕竟人多力量大嘛,2个人总比自己一个人解决问题好,好的队友也算自己半个老师了
posted @ 2019-04-19 21:30  lyp82ndlfjh  阅读(86)  评论(1编辑  收藏  举报