一、PTA实验作业(4分)

题目1:7-5 查验身份证

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(伪代码或流程图)

定义变量身份证个数n,合法个数count=0,flag=0,sum=0,及数组quan[],a[999][999],z[]
  quan[]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}
    z[]={'1','0','X','9','8','7','6','5','4','3','2'}
     输入n
 for i=0 to n {
      输入字符串到a[i];
 end}

   for  i=0  to  n{  
     for j=0 to 17 {
       判断a[i][j]中是否有不是数字的字符,有的话输出a[i],且count++,flag=1,break
   end }
          if (flag){flag=0;continue; }//直接判断下一个身份证
        for  j=0 to 17 {
         sum+=quan[j]*(a[i][j]-'0');
        end   }
        判断z[sum%11]!=a[i][17]为真printf("%s\n",a[i]);count++;
        sun=0;//重置sum=0
   end}
       如果count==0则 printf("All passed\n");
    end

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

这道题我题目都看不懂,不知道权是什么,后来百度了这道题,参考了网上的代码后发现了用二维数组储存字符的用法,且十分快捷,如定义一个二维数组a[i][j],我们要是要输入一个字符数组时可以直接数到a[1]中,则这些字符就储存于a[1][j]中,调用或者输出也可以直接a[i]来使用,十分快捷。且用在这道题十分的方便。

题目2:7-6 Jack cheng的烦恼2

1. 本题PTA提交列表(要提交列表,不是结果)

2. 设计思路(伪代码或流程图)

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

这题我很快就有了大部分的思路,但是提交后却总是7分,后来我更改了方法,原先是用A做为标志来判断是否
输入对的符号,后来我是用来记录输入的个数,接下来输入的正确的话则减去。最后得到了正确结果,但是我
有一个疑问,就是{(})实际上是错的但是我的代码运行是对的,且测试点也通过了。

题目3:7-7 删除字符串中的子串

1. 本题PTA提交列表(要提交列表,不是结果)


2. 设计思路(伪代码或流程图)

 定义变量i,j,l,k及数组S1[99],S2[99]
 gets(S1) gets(S2);//输入数组S1,S2
  for(i=0;S1[i]!='\0';i++){
    for(j=i,k=0;S1[j]==S2[k];j++,k++){//当字符相等时开始进入循环
       如果S2[k+1]=='\0'
         for(l=i;S1[l]!='\0';l++){
            S1[l]=S1[l+k+1];//将删除后的字符存放如原来的字符中
         end}
         S1[l]='\0';i=-1;
    end}
  end}
输出字符数组S1

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

第一就是判断含有子串的问题,原先我把题目想的很复杂,也不知道怎么判断是否存在子串,后来恰巧在
课堂派上老师讲解了这类题目, 且for(j=i,k=0;S1[j]==S2[k];j++,k++)这个表达式是十分新颖的,还有遇到的
第二个问题是在删除了数组后重新定义i的时候我把它定义成了0,但是我忽略了这实在一个循环里头,当重
新定义后会使i+1所以应该为-1,这是一个小细节,但是我相信这也是这类题目的小陷阱所以很有意义。

二、截图本周题目集的PTA最后排名。(2分)

三、同学代码结对互评(1分)

1.互评同学名称

徐宏伟

2.我的代码、互评同学代码截图(此处截图核心代码就好,不一定截图全部代码,图上指明是谁的代码。)

徐宏伟:

陈张鑫:

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。

我和他代码不同之处在于输入多行身份证的方法,他是运用一个外循环将代码多次输出,而我是运用二维数组可以直接输入
也可以直接输出,如你要输出第i串可以直接用a[i],当对一串字符中的元素进行处理时就可以用a[i][j],所以我觉得这种方法
很巧妙!

四、本周学习总结(3分)

1.你学会了什么?

1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?

   int *p   char*p

1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?

    运用在数组的位置变化,如P+2表示p在内存中前移两个int的距离。   2个指针变量不能相加

1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?

1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?


1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。

 void bubble(int *p,int n)
 {
    int *i,*j,t;
    for(i=1+p;i<p+n;i++)
    for(j=p;j<p+n-1;j++)
    if(*j>*(j+1))
    {
        t=*j;
        *j=*(j+1);
        *(j+1)=t;
    }
 }

1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?


int *a[i]   *a+i

1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?

char *a[i]
  或   
char *a=" asdfsaf"

初始位置在a[0]

1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?

好处是相当于全局变量 可以返回多个值

2.本周你不会内容有什么?

对于地址的了解不是很深,对于指针与地址相联系时还是不太熟练地使用,还是需要多花点时间来巩固一下。

2.1 课堂派错题罗列及如何订正。

这题其实是指针没赋值

这道题是a是常量不能自增

这题是地址向前进了一位,而我误以为是数组第一个数数值加1

2.2 其他不会的?打算怎么解决

基本上都已经掌握了

3.数组上机考试小结

3.1 那题错了,请罗列?

7-3 jmu-c-输出字符间的字符子串

7-4 数组元素的删除(15 分)

3.2 错题如何订正,为什么错了?

7-3 我是在一个点就是相同的字符,我在上级时2完全不知道什么意思....,后来出来后才知道是如 adfsaa a a 这样的情况。后来调试一下就可以了,还是题目理解部透彻。

7-4 是我时间不够没时间调试了。回宿舍后完成了这题。

 posted on 2017-12-10 22:33  陈张鑫  阅读(363)  评论(4编辑  收藏  举报