第八周编程总结

本次作业所属课程

C语言程序设计||

本次作业要求

https://edu.cnblogs.com/campus/zswxy/MS/homework/2829

我在这个课程的目标是

学会熟练使用结构数组

本次学习在哪些具体方面帮组我实现目标

利用几个新的函数可以大大减少代码行数

参考文献

C primer plus第六版

 

一、基础题

题目一:函数实现字符串逆序

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,j=0,h,temp;
while(p[i]!='\0') { i++; } h=i-1;
while(j<=h) { temp=p[j]; p[j]=p[h]; p[h]=temp; j++; h--; } }

2)设计思路

 

3)本题调试过程中遇到的问题及解决办法

这个题目经过何铭康的讲解后一遍过

4)运行结果截图

 

题目二:字符串的连接

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 *a=s;
    while(*s!='\0')
    {
        *s++;
    }
    while(*t!='\0')
    {
        *s=*t;
        s++;
        t++;
    }
    return a;
}

2)设计思路

 

 

3)本题调试过程中遇到的问题及解决办法

这两个函数题何铭康都讲了思路,一遍过

4)运行结果截图

 

题目三:输出学生成绩

1)实验代码

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n,i;
    int *p;
    double average=0,max,min;
    scanf("%d",&n);
    
    p = (int *) malloc (n * sizeof(int));  
    
    for(i=0;i<n;i++)
    {
        scanf("%d",p+i);   
    }
    
    max=min=*p;
     
    for(i=0;i<n;i++)
    {
        average+=*(p+i);
        
        if(max < *(p+i))
        { 
            max = *(p+i);
        } 
        if(min > *(p+i))
        { 
            min = *(p+i);
        } 
    }
    
    printf("average = %.2f\n",average/n);
    printf("max = %.2f\n",max);
    printf("min = %.2f\n",min);
    
    free(p); 
    
    return 0;
}

2)设计思路

 

 

3)本题调试过程中遇到的问题及解决办法

这个题目主要是动态内存分配那块的代码不懂,看了一下别人的代码,后面那些求平均值最大值最小值的我们以前就做过了,转化一下就可以了

4)运行结果截图

 

题目四:字符串排序

1)实验代码

#include<stdio.h>
int strcmp(char *p,char *q);
char *strcpy(char *s,char *t);
int main(void)
{
    int i,j;
    char a[5][80],b[80];
    for(i=0;i<5;i++)
    {
    scanf("%s",&a[i]);
    }
    for(i=0;i<5;i++)
 {
        for(j=i+1;j<5;j++)
  {
            if(strcmp(a[i],a[j])>0)
   {
               strcpy(b,a[i]);
               strcpy(a[i],a[j]);
               strcpy(a[j],b);
            }
        }
    }
    printf("After sorted:\n");
   
    for(i=0;i<5;i++)
    {
        printf("%s\n",a[i]);
    }
    return 0;
}
int strcmp(char *p,char *q)
{
    while((*p!='\0')&&(*p==*q))
 {
    p++;
    q++;
}
    return *p-*q;

char *strcpy(char *s,char *t)
{
    char *a=s;
   
    while(*t!='\0')
 {
    *s=*t;
    s++;
    t++;
    }
    *s='\0';
    return a;
}

2)设计思路

 

 

3)本题调试过程中遇到的问题及解决办法

 

这个题目一开始是用strcpy函数写的,后来发现不能使用这个函数,然后一直没有头绪,后来彭星文说可以使用自定义函数,我就尝试了一下。出现了很多问题,

详情请参考彭星文博客:https://www.cnblogs.com/leisidiya/p/10729657.html

4)运行结果截图

 

二、预习题

题目一:计算平均成绩

1)实验代码

 

#include<stdio.h>
struct student
{
    char number[10];  
    char name[10];  
    int grade;   
};
int main()
{
    
    int n,i;;
    double average=0;
    struct student students[10];   
    
    scanf("%d",&n);
    
    for(i=0;i<n;i++)
    {
        scanf("%s %s %d",&students[i].number,&students[i].name,&students[i].grade);
        average += students[i].grade;   
    }
    printf("%.2f",average/n);
    
    for(i=0;i<n;i++)
    {
        if(average/n > students[i].grade)
        {
            printf("\n%s %s", students[i].name, students[i].number);
        }
    }
    return 0;

2)设计思路

 

 

3)本题调试过程中遇到的问题及解决办法

结构看的不是特别懂,有关结构的流程图一开始也不会画,对于结构数组的输入存储也不是一头雾水,反反复复的看了书上P218的那个类似的代码看了好久才勉强写出来

4)运行结果截图

 

三、学习进度条

时间

这周所花时间

代码行数

学到的知识简介

目前比较迷惑的问题

第一周

5小时

80

初步了解数组

数组的引用

第二周

6小时

200

指针的了解

完全没听懂老师上课在讲什么,继续努力

第三周

7小时

200

文件与数组的使用

没看到代码运行后文件的内容发生改变

第四周

9小时

120

冒泡法,选择排序法

冒泡法不会

第五周

9小时

120+

字符型数组

把代码改成文件格式

第六周

4小时

130左右

指针

指针的调用

第七周

6小时+

200

指针与数组

指针与数组的连续有点模糊

第八周

10小时

200+

一些新的函数

结构那块有点迷

 四、累积代码行数及博客字数

五、结对编程感想

这次题目太难,鉴于上次的情况我们决定先写完再讨论一下各自的看法

 

总结:应老师的要求自己造工具用,前面几个题目还好,后面几个就完全是在找虐了,感觉大大加难了题目难度。

posted @ 2019-04-19 20:36  ღ阿ོ茶꧔ꦿ༊  阅读(257)  评论(1编辑  收藏  举报