码迷,mamicode.com
首页 > 其他好文 > 详细

C博客作业--指针

时间:2017-12-15 20:12:56      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:enum   分享   date   student   turn   sub   简单的   从右到左   个数   

一、PTA实验作业

题目1:6-3 统计大于等于平均分人数

1. 本题PTA提交列表

技术分享图片

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

int fun ( float *s, int n, float *aver )
     定义整型变量i,j;浮点型变量sum=0,ave
     遍历数组    sum=sum+*(s+i)
     求平均分    ave=sum/n*1.0
     n=0;
     遍历数组,若大于等于ave,n++
     *aver=ave
     返回n值

3.代码截图

技术分享图片

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

  • 一开始计算平均分ave的时候,用i-1作为个数,用Dev c验证的时候,答案是正确的,但是提交PTA时总是答案错误,想不明白为什么;
    技术分享图片
    技术分享图片
  • 后面找舍友帮忙解决,发现传过来的形参中n就表示成绩的个数,改用n后,答案依然正确,PTA提交也正确,和舍友讨论了很久,用i来表示的话最后值会莫名加1,本来i应该等于n的,但是用i答案错误,i-1答案正确,但PTA过不了,所以只能用n;
    技术分享图片

    题目2:6-5 判断回文字符串

    1. 本题PTA提交列表

    技术分享图片

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

    定义一个指针*a=s,定义i=0,j=0,k=0;
    遍历数组 i++,a++;i,j都为数组长度
    a--;
    while(*s!=‘\0‘)
    如果*s==*a    k++;
    否则 返回FALSE;
    s++;a--;
    如果k==i    表示对称,返回TRUE

    3.代码截图

    技术分享图片

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

  • 这一题遇到了一个很头疼的问题,在编译器上调试的时候,主函数编译不过去,提交PTA显示编译错误,但是我觉得代码是没问题的,可是没法调试了,这很尴尬,想了很久没想出什么问题;
    技术分享图片
  • 后来在q群上发求助,同学说把typedef enum {false, true} bool;里面的false、true、bool都改成大写,返回值也用大写,而且在PTA里函数之前还要重新写这段代码,编译才过得去;
    技术分享图片

    题目3:6-10 字符串串动变化

    1. 本题PTA提交列表

    技术分享图片

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

    技术分享图片

    3.代码截图

    技术分享图片

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

  • 这题虽然在PTA上面一次提交正确,但是在编译器上有过错误,主要是后移时j的初值取错了,应该是j=index,我开始用i=index-1;是一个不该犯的错误
    技术分享图片
  • 测试后重新看下代码,立马就发现问题了

    二、截图本周题目集的PTA最后排名

    技术分享图片

    三、阅读代码

    1.吴军霖古风排版代码

    #include<stdio.h>
    int main()
    {
    int n,m,sum;
    static char s[1111];
    scanf("%d ",&n);
    gets(s);
    for(sum=0; s[sum]; sum++);
    m=sum/n+(sum%n>0);
    for(int r=1;r<=n;r++){ 
        //n行m列. 
        for(int c=m;c;--c){
            if(s[n*(c-1)+r-1]) printf("%c",s[n*(c-1)+r-1]);
            else printf(" ");
        }
        printf("\n");
    }
    return 0;
    }
  • 这题代码量很少,但是方法很巧妙,也有点难理解,定义sum,用循环求出排版需要的列数m,m=sum/n+(sum%n>0)是最巧妙的地方,随后用嵌套循环逐列从右到左输出字符,这里巧妙的找到了行、列的值与下标之间的关系,遇到结束符输出空格,直到最后一行最后一列;

    2.删除字符子串的代码

    #include<stdio.h>
    int main()
    {
    char s[81],sub[81];
    gets(s);
    gets(sub);
    int i,j;
    do{
        for(i=0,j=0;s[i];i++){
            if(s[i]=sub[0]){
                for(int u=1;sub[u];u++)  if(s[i+u]!=sub[u]) break;
            if(sub[u]=‘\0‘)   i=i+u;
            }
        }
        s[u++]=a[i++];
    }while(u!=i);
    puts(s);
    return 0;
    }
  • 利用三个循环,对数组进行重新构建,遍历母串,如果找到一个字符等于子串的第一个字符,判断接下去的字符是否都跟子串对应相等,如果不等,跳出循环,都相等,i就跳过一个子串的长度,s[u++]=a[i++]为构建数组的操作,不断循环判断,直到u==i;

    四、本周学习总结

    1.自己总结本周学习内容

    (1) 用指针表示数组,可以通过指针对数组进行操作;

    int a[10];
    int *p;
    p=a;
    //可以通过指针p对数组赋值,*(p+1)=1;即a[1]=1

(2)将指针作为形参传入函数,可以在函数里用指针,对对应的实参进行操作,而且操作保留,可以返回多个值,例如;

void fun(int *p,int *q);
 int main()
 {int a,b;
  scanf("%d%d",&a,&b);
  fun(&a,&b);
  printf("%5d%5d\n",a,b);
  return 0;
 }
void fun(int *p,int *q)
{
    int m,n;
    m=*p%100;
    n=*q%100;
    *p=*p/100*100+n;
    *q=*q/100*100+m;
}

(3)初步了解了结构,结构大概就是自己定义的一个数据类型,里面可以包含很多成员,成员的类型也可以多种;

(4)如何定义结构类型(struct是关键字+结构名)

struct point{
   double x;
   int y;
};

(5)结构的嵌套定义:

struct date{
   int year,month,day;
};
struct student{
   int num;
   char name[10];
   int computer,english,math;
   double average;
   struct date addr;
};

(6)在main函数中可以定义结构变量,结构变量通过结构成员操作符“.”对某个成员进行引用,如果两个结构变量类型相同,也可直接赋值;如:


struct student{
   int num;
   char name[10];
   int computer,english,math;
   double average;
};
int main(){
   struct student s1,s2;
   s1.num=2;
   s1,average=60.5;
   s1=s2;

(7)上周第一次做流程图,一些简单的代码懂得用流程图来表示了,也学会了一些作图软件的基本操作;

2.罗列本周一些错题

技术分享图片
技术分享图片
技术分享图片

  • 这题主要对指针的运用还是不太熟练,指针p应该指向s,还有后面返回值应该返回p,a完全是我捏造出来的;
    技术分享图片
    技术分享图片
    技术分享图片
  • 调用函数需要一个返回值,所以要将结果赋给变量sum;
    技术分享图片
    技术分享图片
  • 这题对题目没有理解,导致都错了
    技术分享图片
    技术分享图片
  • 做得太急,这个函数不需要返回值,最后n=n-1表示删除后的最后一个元素;
    技术分享图片
    技术分享图片
  • 形参传的应该是n的地址,n表示地址,n++便是地址加1,应该用n=n+1;

C博客作业--指针

标签:enum   分享   date   student   turn   sub   简单的   从右到左   个数   

原文地址:http://www.cnblogs.com/mayifang/p/8035038.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!