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

一、PTA实验作业

题目1:7-3 找最长的字符串

1. 本题PTA提交列表

2. 设计思路

3.代码截图

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

在输入字符串时忘了加上a[j]='\0';,不过在提交时及时发现做了修改。

题目2:7-5 统计大写辅音字母

1. 本题PTA提交列表

2. 设计思路

定义循环变量 i,count赋初值为0;  //count用来计算题中所求的字符个数
 定义一个字符型数组a[80];
  i=0;
  while((a[i]=getchar())!='\n')
      i每次加1;
   end while.
  令字符后一个字符a[i]='\0';//在数组中输入字符串
  for i=0 to a[i]!='\0'
      如果 a[i]>='A'且a[i]<='Z'且a[i]!='A'且a[i]!='E'且a[i]!='I'且a[i]!='O'且a[i]!='U'都满足
           count逐次加1;//查找大写辅音字母的个数
  end i.
  输出count

3.代码截图

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

代码的判断大写辅音的语句有点错误,在大写字母那没有加单引号,其他没什么问题。

题目3:7-20 指定位置输出字符串

1. 本题PTA提交列表

2. 设计思路

 定义循环变量 i,j,整型变量front,end分别标记与第一个字符、最后一个字符匹配的下标
  定义字符型数组 a[80];b[2],c[2];
  gets(a);
  gets(b);
  gets(c);//分别输入三个字符串
  for i=0 to a[i]!='\0'
     如果a[i]等于b[0]
        i是匹配的第一个字符下标,即front=i;
    如果a[i]等于c[0]
        i为匹配的最后一个字符下标,即end=i;
 end i.
    for i=front to i<=end
    输出两个字符间的字符a[i]
 end i.

3.代码截图

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

这题在提交时提示运行时错误,刚开始不知道是哪错了,后来才发现在定义bc这两个数组时,我把他们的数组长度定义为1,忽略了字符串后面的‘
'\0',后来把长度改为2解决了这个问题。

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

PTA排名

三、同学代码结对互评

1.互评同学名称

唐川

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

我的代码

唐川代码

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

我的代码定义了三个数组,直接输出第一个代码中符合题意的部分字符串;唐川的代码定义了四个数组,在第一个数组中找出符合题意的字符再存放到第二个数组中,最后输出该数组。我觉的我的代码更简洁,我更喜欢我的代码。

四、本周学习总结

1.你学会了什么?

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

用“”表示定义的是指针变量,不是普通变量。例如:
Int p1,p2,
p3; 它定义指向整型数据的指针变量p1、p2、p3。

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

指针加法只能一个指针与一个数字相加,不能进行两个指针之间相加。

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

系统不能正常运行

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


指针变量做形参:void splitfloat(float x,int *intpart,float *fracpart);
实参:splitfloat(x,&intpart,&fracpart);
好处:可以直接改变地址,返回多个值。

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

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

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

p一般指向的数组的首地址,即p=a,或者p=&a[0];均指向同一单元,它们是数组a的首地址,也是0号元素a[0]的首地址。p+1,a+1,&a[1]均指向1号元素a[1]。类推可知p+i,a+i,&a[i]。

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

例如char *p;
char str[4] = "abc";
p = str;
指针p指向字符串str的首地址

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

void line(char *str1, char *str2)
{
    while(*str1)
    {
        str1++;
    }
    while(*str2)
    {
        *str1 = *str2;
        str1++;str2++;
    }
    *str1='\0';
}

好处:使用指针传递地址而不是实际数据,既提高传输速度,又节省大量内存。

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

2.1 课堂派错题罗列

这两题都是基础的题目,错误的原因是预习的时候不够细心。

3.数组上机考试小结

3.1 那题错了,请罗列?

6-1 数组循环右移
6-2 jmu-c-二维数组转置并按列排序

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

第一题我用两个数组来交换,把规律想错了,导致总是得不到正确答案。检查好久都没找出错误。
第二题的第二个函数对二维数组排序写不出来,对那几种排序还不太熟悉。

posted @ 2017-12-10 22:43  梁才玉  阅读(294)  评论(1编辑  收藏  举报