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 错题如何订正,为什么错了?
第一题我用两个数组来交换,把规律想错了,导致总是得不到正确答案。检查好久都没找出错误。
第二题的第二个函数对二维数组排序写不出来,对那几种排序还不太熟悉。