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

C博客作业--指针

时间:2017-12-17 01:04:45      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:不为   str   结构体   com   单词   strcmp   连接   strlen   技术   

一、PTA实验作业

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

1. 本题PTA提交列表

技术分享图片

2. 设计思路

技术分享图片

3.代码截图

技术分享图片

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

一开始k的初值设的为0,导致出错,计算有效长度k应从-1开始赋值

题目2:6-8 使用函数实现字符串部分复制

1. 本题PTA提交列表

技术分享图片

2. 设计思路

定义整型变量i,num=0
for(i 0 to *(t+i)不为0,i加一){
num加一
if(num大于等于m)//m小于字符串的长度 
*s++=*(t+i);//对*s赋值 
}
*s为0结束

3.代码截图

技术分享图片

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

这个题一开始以为只要把第m个字符的地址传给指针t,输出t就可以了,发现这样是错误的,要把m后的每个字符内容都一一赋给t才可以。

题目3:6-11 报数

1. 本题PTA提交列表

技术分享图片

2. 设计思路

定义整型变量i,j,num为0
for(i 0 to n-1)
out[i]赋值0//使数组out的每个元素都为0 
while(j<n){//j表示出局顺序 
  for(i 0 to n-1){//元素为0表示还没有出局 
   if(out[i]为0)
   num加一
   if(num等于m){
   out[i]=++j//使元素不为0,表示出局 
   num重新为0
   }
  }//当i=n时,i重新为0实现圆圈循环
}

3.代码截图

技术分享图片

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

一开始使数组out的每个元素都为1,发现后面的代码不好打,使数组out的每个元素都为0 的话,因为要使数组内容表示出局顺序,出局顺序都大于0,所以代码比较好打。

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

技术分享图片

三、阅读代码(找两篇优秀代码贴图展示,并说明该代码功能是什么,优点是什么?)

  • 代码一

    #include<stdio.h>
    int mate(char ch[],int n);
    int main(){
    int i,n;
    scanf("%d",&n);
    char ch[n];
    getchar();
    for(i=0;i<n;i++)
    scanf("%c",&ch[i]);
    if(mate(ch,n)) printf("True");
    else printf("False");
    return 0;
    } 
    int mate(char ch[],int n){
    int i,count1=0,count2=0;
    for(i=0;i<n;i++){
        if(ch[i]==‘(‘) count1++;
    
        else if(ch[i]==‘)‘){
            if(count1==0) return 0;//不匹配
            else count1--;//匹配
        }
    
        else if(ch[i]==‘{‘) count2++;
    
        else if(ch[i]==‘}‘){
            if(count2==0) return 0;//不匹配
            else count2--;//匹配
        }
    }
    if(count1==0&&count2==0&&n!=0) return 1;
    else return 0;
    }
    代码功能:判断括号是否遵循数学上括号的使用原则
    优点:引入两个变量count1,count2来判断,一个前括号与后括号配对,出现前括号使count加一,在此情况下出现后括号使count减一,只有最后count1,count2都为0才表示遵循数学上括号的使用原则。若在count为0时,出现后括号则直接返回0结束函数。
  • 代码二

    #include <stdio.h>
    #include<string.h> 
    int main(){
       char s[500001];
       gets(s);
       int i,count=0;
       i=strlen(s);//有效长度
       char *p;
       while(i>=0){
       if(s[i]==‘ ‘){
           if(s[i+1]!=‘ ‘&&s[i+1]!=‘\0‘){//判断是否多空格 
               p=s+i+1;//指针赋值
               count++;
               if(count>1) printf(" ");//count为1时不输出空格 
               printf("%s",p);
           }
           s[i]=‘\0‘; //输出一次后使输出的第一个字符为0,保证之后输出不输出之前的 
       }
       else if(i==0&&s[i]!=‘ ‘){//第一个单词前没有空格,用i=0判断 
        p=s;
        if(count>=1)printf(" ");
        printf("%s",p);
       }
       i--;//递减 
       } 
      return 0;
    }

    代码功能:将句中所有单词的顺序颠倒输出
    优点:使用strlen函数计算有效长度,并使用指针输出单词很灵活,在每次输出一次后使输出的第一个字符为0,保证之后输出不输出之前的,很巧妙,并使用count来控制是否输出空格。

    四、本周学习总结

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

    1.1字符串和字符指针

    字符指针是指向字符串首字符的地址。

    1.2字符串处理函数

  • 头文件stdio.h
    输入scanf("%s",s);getss(s);
    输出printf("%s",s);puts(s);
  • 头文件string.h
    字符串复制strcpy(s1,s2);
    字符串连接strcat(s1,s2);
    字符串比较strcmp(s1,s2);
    字符串长度strlen(s1);

    1.3结构的概念与定义

    结构是一个数据类型,由结果成员构成
    结构类型名=struct+结构名

    1.4结构类型变量的储存空间

    所占空间是各成员所占空间之和,

    1.5结构变量的引用与赋值

    引用格式:结构变量名.结构成员名
    若两个结构变量具有相同类型,可直接相互赋值。

    1.6结构数组

    结构数组格式与二维数组的格式类似
    引用格式:结构数组名[下标].结构成员名
    数组元素之间可以相互直接赋值

    1.7结构指针

    结构指针就是指向结构变量的指针。
    访问结构成员时(*p).等价于p->

    2.罗列本周一些错题。

  • 1
    技术分享图片
    技术分享图片
    一开始不懂new char这个数组是什么意思,就蒙的填了一个指针t
  • 2
    技术分享图片
    定义学生出生日期的结构体时成员类型没有定义好
    改正
    技术分享图片
  • 3
    技术分享图片
    不能对books[2]直接全部赋值
    改正
    技术分享图片

C博客作业--指针

标签:不为   str   结构体   com   单词   strcmp   连接   strlen   技术   

原文地址:http://www.cnblogs.com/wlc0116/p/8040075.html

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