第七周编程总结

 

本次作业所属课程

C语言程序设计||

本次作业要求

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

我在这个课程的目标是

理解指针与数组的关系

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

学会画流程图

参考文献

C primer plus第六版

 

一、基础题

题目一:每个单词的最后一个字母改成大写

1)实验代码

#include <stdio.h>
void fun( char *p );
int main()
{
  char chrstr[64];  
  int d ;
  gets(chrstr);
  d=strlen(chrstr) ;
  chrstr[d] = ' ' ;
  chrstr[d+1] = 0 ;
  fun(chrstr);
  printf("\nAfter changing:   %s\n", chrstr);
  
  return 0;
  
}
void fun( char *p )
{

    int i;

    for(i=0;*(p+i)!='\0';p++)
    {

        if(*(p+i+1)==' ')

        *(p+i)=*(p+i)-32;

    }

}

2)设计思路

 

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

这题主要卡在了那个大小写转变的问题,查了一下百度,对比了书上后面的ASCII码集,就差不多解决了

 

4)运行结果截图

 

题目二:自动售货机

1)实验代码

#include<stdio.h>
int main(void)
{
  char a[10][20] = {"Table-water","Table-water","Table-water","Coca-Cola","Milk","Beer","Orange-Juice","Sprite","Oolong-Tea","Green-Tea"};
  int static b[11];
  int c[100];
  int i=1,sum=0,money,j=0,change,flag=0;
  
  scanf("%d",&money);                 

  while((money!=-1)&&(money<=10))
  {
    sum += money;
    scanf("%d",&money);
  }
  
  scanf("%d",&c[i]);
  while(c[i]!=-1)        
  {
    switch(c[i])
    {
    case 1: j = j + 1;break;
    case 2: j = j + 1;break;
    case 3: j = j + 1;break;
    case 4: j = j + 2;break;
    case 5: j = j + 2;break;
    case 6: j = j + 3;break;
    case 7: j = j + 3;break;
    case 8: j = j + 3;break;
    case 9: j = j + 4;break;
    case 10: j = j + 4;break;
    default:break;
    }
    if(j>sum)
    {
      printf("Insufficient money");
      flag = 1;
      break;
    }
    i++;
    scanf("%d",&c[i]);
  }
  change = sum-j;
  i = 1;
  while(c[i]!=-1)
  {
    switch(c[i])
    {
      case 1: b[1]++;break;
      case 2: b[2]++;break;
      case 3: b[3]++;break;
      case 4: b[4]++;break;
      case 5: b[5]++;break;
      case 6: b[6]++;break;
      case 7: b[7]++;break;
      case 8: b[8]++;break;
      case 9: b[9]++;break;
      case 10:b[10]++;break;
      default:break;
    }
    i++;
  }
  if(flag==0)              
  {
    printf("Total:%dyuan,change:%dyuan\n",sum,change);
    for(i=1;i<=10;i++)
    {
      if(b[i]==0)
        continue;
      else
      {
        printf("%s:%d;",a[i-1],b[i]);
      }
    }
  }
  return 0;
}

2)设计思路

   

 

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

这题有点难,借鉴了别人的思路,一开始数组长度小了,后面在输出的if语句的判断条件又出了点问题,不过最后还是解决了,只是调试的过程有点漫长

4)运行结果截图

二、预习题

题目一:使用函数删除字符串中的字符

1)实验代码

#include<stdio.h>
void delchar(char str[],char op);
int main()
{
    int repeat;
    char str[80],op;

    scanf("%d\n",&repeat);  
    while(repeat--)
    {
        gets(str);  
        scanf("%c",&op); 
        printf("result: ");
        delchar(str,op);
    }

    return 0;
}

void delchar(char str[],char op) 
{
    while(*str!='\0')  
    {
        if(*str!=op)  
        {
            putchar(*str);  
        }
        str++;  
    }
}

2)设计思路

 

 

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

这一题在PTA上的正确答案到Dev答案又变成错误的了,调试的过程中各种问题都出来了,主要是这题在自定义函数里面输出不是特别理解,借鉴了下别人的思路

 

4)运行结果截图

三、挑战题

题目一:子数组” 并不要求是一个矩形, 而是联通的元素即可 (上下或左右相邻即视为联通), 那解法会是怎么样呢?

自己有几把刷子心里还是有点逼数的,挑战题不会写,大概的写点思路吧:逐个查找,将他们的路径连接起来在逐个判断

四、学习进度条

时间

这周所花时间

代码行数

学到的知识简介

目前比较迷惑的问题

第一周

5小时

80

初步了解数组

数组的引用

第二周

6小时

200

指针的了解

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

第三周

7小时

200

文件与数组的使用

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

第四周

9小时

120

冒泡法,选择排序法

冒泡法不会

第五周

9小时

120+

字符型数组

把代码改成文件格式

第六周

4小时

130左右

指针

指针的调用

第七周

6小时+

200

指针与数组

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

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

六、结对编程感想

这次的题目就充分体现了我们两个人自身能力不足的缺点,题目难度偏大,两个人都做不出,思路也是乱七八糟,互相拖后腿

总结:这次的题目自我感觉偏难,做了很久效果还不明显

posted @ 2019-04-12 20:18  ღ阿ོ茶꧔ꦿ༊  阅读(131)  评论(2编辑  收藏  举报