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

一、PTA实验作业

题目1:Jack cheng的烦恼2

流程图:

1. 本题PTA提交列表

2. 设计思路

定义变量n,i,t,n存放括号个数,i作为字符串的角标,t作为辅助的判断变量。
输入n的值
for i=0 to n
遍历字符串a[i]
end for
for i=0 to n
计算每个括号的数量
end for
if(count[0]!=count[1]||count[2]!=count[3])//判断能配对的括号个数是否相等
输出False
else
if(a[0]!='('||a[0]'{')//如果第一个括号为')'或者'}'
输出False
else
for i=0 to n
if(a[i-1]
'('&&(a[i]'}'||a[i]'{'))
else if(a[i-1]'{'&&a[i]')')
else if(a[i-1]'}'&&a[i]'{')
输出False
else
t=1,跳出循环
输出True

3.代码截图


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

  • 本题我写它的原因不是因为它调了很多次才正确,而是我现在写正确了,但是还是不明白,为什么正确,我打这道题有一点点的取巧合,所以希望老师讲解下。

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

1. 本题PTA提交列表

2. 设计思路

定义变量i,count,m,i作为字符串的角标,count存放计算后单词的数量,m存放输入字符串中字符的个数
定义变量ch[1000],存放字符
gets(ch);//输入字符串。
m=strlen(ch);
if(ch[0]' ') //判断第一个字符是否为空格
count=0;
else
count=1;
for i=0 to m-1
if(ch[i]
' ' && ch[i+1]!=' ')
计算单词的个数
printf("%d",count);

3.代码截图

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

  • 贴这道题,主要是为了记录下第一次自己使用函数的库函数的感觉,库函数非常的方便而且省时;在开始写这道题目的时候我并没有想到去用库函数,我只是想用学过的函数把答案给运行出来,但是写了很多次还是不行,知道星期四晚上作完预习作业后,我发现了库函数的妙用,于是我就用了库函数,很快就出来了。

题目3:删除字符串中的子串

1. 本题PTA提交列表

2. 设计思路

定义变量i,s,j,count,flag=0,t,n;i,j同为下角标,flag和count作为辅助的判断变量,s为字串中字符的个数
定义变量a[800],b[800]
gets(a);//遍历字符串
gets(b);
s=strlen(b);//计算字符数字b中元素个数。
n=strlen(a);
while(flag!=1)
for i=0 to n
判断连续的a[i]是否会等于b[i]
if(counts)
删除主串中含有的连续的字串,直到没有
end for
if(n
0)//如果主串中的字符删除完了
printf("");
else
输出删除完成的主串

3.代码截图

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

  • 本题同上题一样都使用了库函数,在Devc++上当我输入一个字符串和子串的时候,会出现死循环,我找了很久,才发现flag没有赋初值0,使得循环不断的进行,而且在循环的时候每次循环都没有把flag的值初始化,这使得死循环再次出现,然后有调试了下,发现了错误,最后改正过来。

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

三、同学代码结对互评

1.互评同学名称

  • 戴洁

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

  • 我的代码:

  • 戴洁的代码:

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

  • 从整体上来看,我的代码还是比较简洁的,那是因为我用了库函数,库函数相当一个计算字符串的循环函数,而且我们俩从俩个不同的角度分析出怎样计算单词数,虽然我的代码比较的简洁,但是我还是更喜欢戴洁的代码,因为我觉得她的代码十分的基础,很适合我们这总基础不好的人,而我我的代码就有点偏进阶了,虽然掌握了新的知识,但是希望下次还是可以用对方类似的代码解题的。

四、本周学习总结

1.你学会了什么?

1.1指针变量如何定义?

定义指针变量的一般形式: 类型名 *指针变量名
一个指针变量指向数组:p=a,让整型指针变量p等于数组a的首地址

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

指针指向数组时,递增表示指针下移
2个指针变量不能相加

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

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

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

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

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

int *p;
int a[80];

指针变量指向数组

  • p=&a[0]
  • p=a

用指针变量表示数组元素

  • p=a+i
  • p=&a[i]

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

char *p;
char a[80];

  • 初始位置:首地址。

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

  • 字符指针操作字符串的好处是,字符指针是不确定的,十分的灵活,如果在循环结束后没有将字符指针重新赋初值,那将会造成系统崩溃的后果。

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

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

  • 这道题答得有点离谱,我完全把它当成数型指针来看待了,所以得0分。

  • 在现在的我看来,这道题也是十分简单的,但是那时的我。。,哎!

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

  • 把不会的题目截图下来,去问学姐学长,然后把改过的过程也截图下来,同时放在一个文档里,在考试周可以拿出来看看,避免再犯错。

3.数组上机考试小结

3.1 那题错了,请罗列?

  • 这道IP地址的题目老师在上课的时候是讲过的,上课也写出来了,但是呢到了考试,就写不来了,在考试的时候我遇到的问题是输入的32位二进制数,在电脑中把他当成了一个数字,这使得我还再输入31个才可以输出,但是我却一直没发现是定义变量的时候把char定义成了int,这就使得做题一次又一次的错。

  • 这道题,我说了都不好意思,我知道可以用小x输出,但是就是没有试大X我以为没这么简单的,可是事实就是这么简单!!!

posted on 2017-12-10 22:16  不是本人  阅读(297)  评论(2编辑  收藏  举报

导航