您的位置:首页 > 编程语言 > C语言/C++

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

2017-12-10 22:16 363 查看

一、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(count==s)

删除主串中含有的连续的字串,直到没有

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我以为没这么简单的,可是事实就是这么简单!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: