一、PTA实验作业
题目1:7-2 统计一行文本的单词个数
1. 本题PTA提交列表
2. 设计思路
- 1.定义整形变量i=0,count=0,flag.
- 2.定义数组str[999]
- 3.输入str[i]=getchar())!='\n,i++数组
- 4.进入for(i=0;str[i]!='\0';i++)的循环.
- 5.判断输入的数组是否符合条件,若符合flag=1.
- 6.判断输入的数组是否符合条件并且str[i+1]=='\0',符合count++.
- 7.判断输入的数组是否str[i]==','||str[i]=='.'||str[i]=='!'||str[i]=='?,符合则flag=0.
- 8.判断输入的数组是否(str[i]==','||str[i]=='.'||str[i]=='!'||str[i]=='?')&&(str[i-1]>='a'&&str[i-1]<='z'||str[i-1]>='A'&&str[i]<='Z'||str[i-1]>='0'&&str[i-1]<='9').符合则count++.
- 9.判断输入的数组是否flag==1&&str[i]==' '&&str[i-1]!=' '.是,count++.
10.输出count的值.
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
没有考虑文本结尾标点符号前可能有空格,而导致部分正确.
题目2:7-5 统计大写辅音字母
1. 本题PTA提交列表
2. 设计思路
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
没有问题.
题目3:7-7 删除字符串中的子串
1. 本题PTA提交列表
2. 设计思路
- 1.定义整形变量 N,i,j,flag=0,m,count=0,b=0,l;
- 2.定义数组str[10000],hexad[10000],x[10000].
- 3.进入for(j=1;j<=2;j++)的循环,输入str[i]=getchar())!='\n'的两串数组字符.
- 4.如果输入的字符串为第一句,flag++.
- 5.如果输入的字符串为第二句,count++.
- 6.如果j=1,进入for(i=0;str[i]!='\0';i++)的循环,用新的数组hexad[i]来表示第一串字符串.
- 7.如果j=2,进入for(j=1;j<=flag;j++)的去嵌套循环
- 8.再进入for(i=0;hexad[i]!='\0';i++)的循环
- 9.进入for(m=0;m<count;m++)的循环
- 10.如果(hexad[i]!=str[m],break;
- 11.如果m<count-1,i++.
- 12.如果m!=count,x[b]=hexad[l];.
- 13.进入for(b=0;x[b]!=0;b++)的循环,用数组hexad[b]来表示x[b];
14.最后 putchar(x[b]).
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
只删除一个字符串,没有考虑到有重复的情况.
二、截图本周题目集的PTA最后排名。
三、同学代码结对互评
1.互评同学名称
吴军霖.
2.我的代码、互评同学代码截图
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
- 1.我和军霖同学的解题方法一点类似,都是通过规律来做,但是军霖方法是找出行列跟数组下表的关系,而我的方法是用规律每一行的每个字母都是相差4个单位.
2.我更喜欢军霖代码,只用了19行,而且方法创新.
四、本周学习总结
1.你学会了什么?
1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?
类型 *p
1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?
比如(*p)++,将指针所指的变量自增;俩个同类型的指针变量可以相减,但是不是相加
1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?
1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?
`#include<stdio.h> void big(float x,int *intpart,float *floatpart); int main(void) { int intpart; float number,floatpart; scanf("%f",&number); big(number,&intpart,&floatpart); printf("%d %f",intpart,floatpart); return 0; } void brek(float x,int *intpart,float *floatpart) { *intpart=x; *floatpart=x-*intpart; }
![](http://images2017.cnblogs.com/blog/1232392/201712/1232392-20171210212946646-1813415606.png)
###1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。
include<stdio.h>
void brek(float x,int intpart,float floatpart);
int main(void)
{
int intpart;
float number,floatpart;
scanf("%f",&number);
brek(number,&intpart,&floatpart);
printf("%d %f",intpart,floatpart);
return 0;
}
void brek(float x,int intpart,float floatpart)
{
intpart=x;
floatpart=x-*intpart;
}
####1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?
int a[100],*p;
p=a;
###1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?
char *p;
char a[10];
p=a;
```
1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?
比较好解题
2.本周你不会内容有什么?
- 不会指针的熟练运用
不会冒泡法.
2.1 课堂派错题罗列及如何订正。
- 通过devc编译
- &是个地址,*p是个值,两者不能合在一起.
- 把p当作值来做导致选了A,而p所指向的是个地址,故选D.
num p+10 max<*q
2.2 其他不会的?打算怎么解决
3.数组上机考试小结
3.1 那题错了,请罗列?
3.2 错题如何订正,为什么错了?
- 题目中定义的数组是整形数组,故不能b[i]!='\0'来结束循环,得用n<来判断.