zoukankan      html  css  js  c++  java
  • C语言第八次博客作业字符数组

    一、PTA实验作业

    题目1:7-2 统计一行文本的单词个数

    1. 本题PTA提交列表

    2. 设计思路

    定义变量i=0,count=0,flag
          char str[999]
          输入字符串。
          for  i=0  to  str[i]=='\0'
               若str[i]为字母数字,则flag=1
               若str[i]为字母数字且str[i+1]!='\0',则count++
               若str[i]为符号,则flag=0
               若flag==0且str[i-1]为数字字母,则count++
               若flag==1且str[i]==' '且str[i-1]!=' ',则count++
             end
          输出count.
    

    3.代码截图

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

    • 部分正确,在空格问题上一直解决不来。
      解决方法:借鉴了同学的思路,在其基础上简化。

    题目2:7-4 查验身份证

    1. 本题PTA提交列表

    2. 设计思路

    3.代码截图

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

    • 1.一开始数组的长度设置的不够,导致部分正确。
      解决方法:增大数组上限。
    • 2.不懂得什么是加权求和。
      解决方法:通过百度搜索,查找资料。

    题目3:7-9 说反话-加强版

    1. 本题PTA提交列表

    2. 设计思路

               char s[500001]
              输出字符串。
              定义i=strlen(s)-1,count=0。
              char*p
              while(i>=0)
                  若s[i]为空格
                     若s[i+1]不为空格且不为结束符
                         p=s+i+1,count++
                        若count>1,则输出空格
                        输出p
                    s[i]='\0'
                  若i==0且s[i]!=' '
                     则p=s
                     若count>1,则输出空格
                     输出p
                 i--
    

    3.代码截图

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

    • 一开始对保存单词使用方法复杂,后来学了指针就使用了指针,可读性高。

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

    三、同学代码结对互评

    1.吴军霖

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

    吴某代码

    	char s[511111],temp,c;
    	while( (c=getchar())==' ' );
        if(c=='\n') return 0;
        s[1]=c;
        int mark=1,i;
    	for(i=2; ;i++){
    		c=getchar();
    		if(c==' '||c=='\n'){ //完成一个单词 
    			for(int u=mark,up=i-1; u<=(i+mark-1)/2 ;u++,up--) {
    				temp=s[u];
    				s[u]=s[up];
    				s[up]=temp;
    			}
                if(c=='\n') break;
                
    			while( (c=getchar())==' '  ); //吸收多余空格 
    			
    			if(c=='\n') break;
    			
    			s[i]=' '; 
    			s[++i]=c;
    			mark=i; //记录单词头部 
    		}
    		else s[i]=c;
    	}
    	for(--i; i ;--i) printf("%c",s[i]);
    	printf("\n"); 
    }
    

    我的代码

        char s[500001];
        gets(s);
       int i=strlen(s)-1,count=0;
       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(" ");
                   printf("%s",p);
               }
           }
    	   else if(i==0&&s[i]!=' '){
               p=s;
               if(count>=1)  printf(" ");
               printf("%s",p);
           }
           i--;
       } 
    

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

    • 我们对单词的处理方法不同。因为我比较晚做所以我使用指针,方法更简洁,他使用数组可读性较高。我更喜欢我的,总体方法更好。

    四、本周学习总结

    1.你学会了什么?

    1.1指针变量如何定义?

    • 类型名 *指针名

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

    • 用于指针指向数组,指针自增表示数组的下一个。不能。

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

    • 程序将无法运行

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

    • 指针变量做函数形参 void spllitfloat(double x,int* intpart,double * fracpart)
    • 实参用地址表示.
    • 可以直接修改内存里的值从而改变实参的值.

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

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

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

    • 定义指针时指向数组名. 如, int a[10],*p=a.
    • 用 *(p+i) 表示 a[i].

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

    • char *s="cpoint".
    • 初始位置为字符串首元素的地址.

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

    • 可以实现对主函数的数据传递.

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

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

    • *p表示的是变量a的值,而不是变量a的地址。
    • 一开始不知道a是地址常量。

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

    • 对字符的处理有点迷茫,多阅读题目。

    3.数组上机考试小结

    • 一开始有点紧张没有状态所以第二题卡了有点久,后面有感觉了就速度比较快,不过最后一题时间来不及没做。还是得多做题目,多和同学老师交流。
  • 相关阅读:
    java Vamei快速教程02 方法和数据成员
    java Vamei快速教程01
    二叉树
    高效通信模型之
    高效通信模型之
    线程间通信与同步
    线程
    进程
    C++面试知识点总结
    windows下UDP服务器和客户端的实现
  • 原文地址:https://www.cnblogs.com/oracler0103/p/8016467.html
Copyright © 2011-2022 走看看