• C语言博客作业--字符数组


    一、PTA实验作业

    题目1:7-1 字符串转换成十进制整数

    1. 本题PTA提交列表

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

    int i,j;char a[80],b[80];int flag1=0,flag2=0;long number;其中flag2为是否有负号的判断标志,flag1为输出结果正负的判断标志
    输入以’#‘结束的字符串a[]
    遍历数组a[i],  滤去非16进制数
          如果a[i]=='-'&&flag2==0  flag1=1;
          如果为16进制数,b[j]=a[i] ;   flag2=1    ;  j++;
    结束符b[j]='';
    将新字符串逐个转换,存放在number中
    如果flag1==1,输出0-number
    否则    输出number
    end		  
    

    3.代码截图

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

    • 一开始没有设置判断其正负的标志,输出结果都为整数
    • 后来设置了一个标志flag,答案部分正确,通过思考发现,只要字符串中只要有负号,结果都是负的,因此,再设置另一个标志,判断负号是否出现在第一个16进制数前

    • 设置flag1和flag2,用两个if语句,如果在负号出现前已经有16进制数,flag2=1;要令flag1=1,需同时满足a[i]==’-‘且flag2=0;得到正确结果;

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

    1. 本题PTA提交列表

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

    3.代码截图

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

    • 提交显示段错误和运行时错误,试了很多改正,最后发现数组长度太小,导致错误
    • 改正后得到正确答案

    题目3:7-12 IP地址转换

    1. 本题PTA提交列表

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

    char s[32];int a[4]; int j=0,count=-1;sum=0,i
    输入数组s[]
    遍历数组s[]
         count++;
         sum=sum+(s[i]-48)*pow(2,7-count);
         如果count==7
              a[j]=sum;j++;count=-1;sum=0;
              continue;
    按格式输出a数组
    

    3.代码截图

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

    • 一开始输入字符串用gets(),在Dev c上运行可以,但是提交PTA是显示运行时错误

    • 后改用scanf("%s",)输入,答案就正确,鉴于两者的输入差别,应选择用scanf

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

    三、同学代码结对互评

    1.互评同学名称

    • 朱杰伟

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

    • 我的代码
    • 杰伟的代码

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

    • 区别:我是先判断每个元素是否在A到Z的范围,如果是,再判断它是否为元音,不是则count++; 而杰伟是判断元素是否为元音字母,否则,再判断它不是空格或感叹号,且又在A到Z之间,count++;
    • 我更喜欢自己的代码,缩小范围,逐步判断,杰伟的代码没什么错误,只是思路上不一样而已。

    四、本周学习总结

    1.你学会了什么?

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

    指针变量定义时要使用指针声明符*,例如

    int *p;        char *q;      char *p,*q;
    

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

    • 指针加法运用在其指向的地址元素时,例如输入数组时
    int *p,a[10];
    p=a;
    for(i=0;i<10;i++,p++)
        scanf("%d",*p);
    
    • 指针之间可以相减,但不可以相加:两个同一类型的指针变量是可以相减的,他们的意义表示两个指针指向的内存位置之间相隔多少个元素(注意是元素,并不是字节数)

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

    • 程序崩溃过不了

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

    • 指针变量做函数形参:void splitfloat(float x,int *intpart,float *fracpart)
    • 函数实参:splitfloat(number,&intpart,&fracpart)
    • 用处:可以在函数中对实参进行修改,同时可以返回多个返回值;

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

    #include<stdio.h>
    void bubble(int *a,int n);
    int main()
    {
    	int n,a[8];
    	int i;
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	   scanf("%d",&a[i]);
    	bubble(a,n);
    	for(i=0;i<n;i++)
    	   printf("%3d",a[i]);
    	return 0;
    }
    void bubble(int *a,int n)
    {
    	int i,j,t;
    	for(i=1;i<n;i++)
    	   for(j=0;j<n-1;j++)
    	      if(*(a+j)>*(a+j+1)){
    	      	t=*(a+j);
    	      	*(a+j)=*(a+j+1);
    	      	*(a+j+1)=t;
    		  }
    }
    

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

    int a[10];
    int *p;
    p=a;
    

    此时p为指向数组a的指针。*(p+n) (n=0,1,2......9)可表示数组元素。

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

    char *p;
    char str[10] = "afjkfdhsjk";
    p = str;
    

    指针p指向字符串str的首地址.

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

    • 字符串指针只占用一个可以存放地址的内存单元,存储字符串首字符的地址,而不是将字符串放到字符指针变量中去,总之,字符串指针可以指向一个不需要分配内存的地址

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

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

    • 拆分实数和整数的部分,自定义函数void splitfloat(float x,int *intpart,float *fracpart)
      对指针的应用不熟练,后来看翁恺视频和书本订正;

    • *p=a+3;表示p的首地址是a[3],++p后,应该指向a[4]

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

    • 查看书本,巩固基础知识,自己尝试着去做,实在没办法再请教同学,老师。

    3.数组上机考试小结

    3.1 那题错了,请罗列

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

    • 时间不够,在前两题函数题耗费了太多时间,导致后面两题题目都没来得及看,编程第二题题目没有看透,思路没正确,整题也就废了,希望考完后,冷静思考可以做出来,感觉自己无论是从思维还是编程能力还是找错能力都很差,这些没提高,成绩也就没戏了吧。
  • 相关阅读:
    [唐诗]禅-虞世南
    监考
    弄了一个数学论坛,感觉不错,欢迎加入讨论
    中国科学院大学2016年高等代数考研试题
    中国科学院大学2016年数学分析考研试题
    北京大学2016年高等代数与解析几何考研试题
    北京大学2016年数学分析考研试题
    pedagogical
    2012年度江西省科学技术奖授奖项目名单
    2013年度江西省科学技术奖授奖项目名单
  • 原文地址:https://www.cnblogs.com/mayifang/p/8011298.html
Copyright © 2020-2023  润新知