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

    一、PTA实验作业

    题目1:查验身份证

    1. 本题PTA提交列表

    2. 设计思路

    定义i,flag=1,z,m[11],a[19]
    输入次数n
    for i=1 to n+1
       gets(a)
       加权求和在取余计算z
       switch(z)
       对应查看a[17]与校验码是否一致
       若不一致,flag=0,输出错误身份证
    若flag=1,则说明全对
    

    3.代码截图

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

    • 部分正确 :将x改为大写x

    题目2:藏头诗

    1. 本题PTA提交列表

    2. 设计思路

    3.代码截图

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

    本题题目很好理解,在DEV上写的时候发现了自己两个问题

    1.对一个汉字占两个字节没理解。存储一个汉字需要两个字节,而char类型是一个字节,所以一个中文字占用2个字节来存储及输出。

    • 调试过程:

    本想通过调试看变量,但发现调试看不出毛病在哪里。再浏览了一遍发现自己只在定义时保证了储存空间足够,而在对新诗赋值时却没有意识到要两个字节来表示一个汉字。

    pome_[2*i]=pome[i][0];//对新诗赋值 
    pome_[2*i+1]=pome[i][1];
    

    2.忽略了字符数组结束标志

    • 调试过程:

    pome_[2*i]='';//标志结束
    

    题目2:辅音大写字母

    1. 本题PTA提交列表

    2. 设计思路

    定义i,num=0,a[80]
    输入字符串,接收到
    以结尾
    for i=0 to a[i]=''
       if a[i]是大写字母
           if a[i]不是A,E,I,O,U  num++
    输出num
    

    3.代码截图

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

    没什么大问题,题目没看清

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

    三、同学代码结对互评

    1.互评同学名称

    王宵莹

    2.我的代码、互评同学代码截图

    我的代码

    宵莹的代码

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

    这道题麻烦在对多种情况的空格进行判别,我的代码分类很多:开头多个空格,中间多个空格,结尾多个空格。我是把它特殊的都判断出来;而宵莹的代码则是找出了判断单词最关键条件,只要满足一个条件就判断是一个单词。
    我更喜欢宵莹的代码,确实会比较难想到,但是含金量很高。

    四、本周学习总结

    1.你学会了什么?

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

    int *p1 *p2;
    p1=&a;
    p2=p1;
    

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

    指针+常数=常数*指针所指类型大小
    指针相当于一个地址,两个指针求和无意义。

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

    • 指针的初始值必须是一个地址,决不允许赋予任何其他数据,通常是一个数据的地址或地址变量或空指针。未初始化的指针,它指向的内存的值是不可预知的,很多时候程序崩溃都因为指针未被初始化或指向了错误的地方。

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

    #include<Stdio.h>
    void splitfloat (float x, int *intpart,float *fracpart);
    int main()
    {
        float x,fracpart;//定义拆分数,小数 
        int intpart;//定义整数 
        scanf("%f",&x);//输入拆分数 
        splitfloat (x,&intpart,&fracpart);//调用函数 
        printf("该实数的整数部分为:%d
    ",intpart);//输出 
        printf("该实数的小数部分为:%f
    ",fracpart);
        return 0;
    } 
    void splitfloat (float x, int *intpart,float *fracpart)
    {
        float k;
        k=x-(int)x;
        *intpart=(int)x;
        *fracpart=k;
    }
    

    void splitfloat (float x, int *intpart,float *fracpart)
    ```这句是指针变量做函数形参,函数实参为地址(指针变量)。
    
    - 用指针变量作函数参数可以将函数外部的地址传递到函数内部,使得在函数内部可以操作函数外部的数据,并且这些数据不会随着函数的结束而被销毁。利用它也可以使函数返回多个值。并且像数组、字符串、动态分配的内存等都是一系列数据的集合,没有办法通过一个参数全部传入函数内部,只能传递它们的指针,在函数内部通过指针来影响这些数据集合。
    
    ###1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。
    

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

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

    int a[],p;
    p=a<=>p=&a[0];//指针变量指向数组第一个元素的地址
    a[99]<=>
    (p+99)<=>p[99]//三者等价

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

    char *sp="point";

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

    void line(char p1, char p2)
    {
    while(
    p1)
    {
    p1++;
    }
    while(
    p2)
    {
    *p1 = *p2;
    p1++;
    p2++;
    }
    *p1='';
    }

    - 通过指针能实现所谓的“传引用”而不是“传值”,本质上节约了数据传输性能
    
    ##2.本周你不会内容有什么?
    
    ###2.1 课堂派错题罗列及如何订正。
    ![](http://images2017.cnblogs.com/blog/1233559/201712/1233559-20171210112835255-451306603.png)
    
    订正:
    这个主要错误是最后指针还要在赋一次值,以免程序崩溃。这个确实像字符串那个''一样很容易被遗漏。
    
    ###2.2 其他不会的?打算怎么解决
    对于刚学的指针尤其是字符指针还有点模糊,主要是不清楚什么情况下用它比较省事,再加上新学所以不太敢用。打算多练一些指针的经典题目来熟悉它。
    
    ##3.数组上机考试小结
    ![](http://images2017.cnblogs.com/blog/1233559/201712/1233559-20171210112929677-7342713.png)
    
    
    ###3.1 那题错了,请罗列?
    前两个函数题没做出来,刚开始看第一题没什么思路,就开始倒着写,等写到倒数第2题那个输出字符间字符子串时,一直卡在那里,后来打算先放下继续做,等做到函数题时时间已经没剩下多少了。
    ###3.2 错题如何订正,为什么错了
    6-1,6-2:还没来得及订正。
    7-3:这道题类似于字符数组里那道删除子串,我会把这两题放在一起解决。
  • 相关阅读:
    384. 最长无重复字符的子串
    406. 和大于S的最小子数组
    159. 寻找旋转排序数组中的最小值
    62. 搜索旋转排序数组
    20. 骰子求和
    125. 背包问题 II
    92. 背包问题
    1295. 质因数统计
    471. 最高频的K个单词
    1339. 最大区间
  • 原文地址:https://www.cnblogs.com/lmb171004/p/8003804.html
Copyright © 2011-2022 走看看