一、PTA实验作业
题目一.找最长的字符串
1.本题PTA提交列表
2. 设计思路
- (1)定义N为下面要输入字符串的个数,定义i为循环控制变量来遍历每个字符串,定义输入的字符串为op 保留最大字符串的数组为most,
定义最大字符串的字符个数为max并且赋初值0,定义变量s来遍历op将op赋给most,定义变量j用来每一个字符串的输入。 - (2)输入N
- (3)for(i=0;i<N;i++){让j等于0;
- (4)用getchar输入每一个字符串并且用j记录字符个数
- (4)若max<j,则让max=j;并且遍历这时候的op将op赋值给most end
- (5)输出The longest is: %s\n,most
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
答案错误的两次好像是括号没有对准漏了一个括号。
题目二.Jack cheng的烦恼2
1.本题PTA提交列表
2.设计思路
这题的设计思路是将括号分成一个个的块每一个用来判断。
- (1)定义两个变量c1和c2分别为每一个块的开始和结果并且赋予初值0,定义N用来记录括号个数,定义j用来遍历每一个块,flag1=0用来记录每一个块结束的字符数组下标,flag2用来判断每一个块是否满足数学的括号使用方法,定义数组op用来保存括号内容
- (2)输入N,并用getchar消除换行符的影响,并用getchar输入括号字符串。
- (3) while(1){flag1=0,flag2=0; c2=c;
- (4) for(j=c;j<N;j++){当op[j]等于}或者)flag1=1标志标志这进站
如果(flag1==1&&(op[j]==‘(‘||op[j]==‘{‘)){c=j;break;end - (5)若(j==N)c=N;这一步是为了最后一个快的判断确定结束的下标
- (6)for(j=c2;j<(c2+c)/2;j++)
因为前半部分全部是左括号,后半部分是右括号下面进行括号配对
if(op[j]==‘(‘){
if(op[(c2+c)-j-1]==‘)‘)continue;
else{flag2=1; break;}
}
else if(op[j]==‘{‘){
if(op[(c2+c)/2]==‘}‘)continue;
else{flag2=1; break;}
}
else {flag2=1; break;} - (7)如果flag2==1或者c==N则结束循环 end
- (8)若N%2!=0则输出False
(9)若flag2=0则输出True
-(10)反之输出False3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
本题一开始我没懂括号的正确使用认为(())()这类有两个块以上的是错误的使用方法还很苦恼为什么自己一直提交错误,后来询问老师后发现错误。
题目三.古风排版
1.本题PTA提交列表
2.设计思路
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
本题难点在于审题,思路比较简单。
二、截图本周题目集的PTA提交列表及最后排名。
PTA排名
三、同学代码结对互评
1.互评同学名称
钟文杰
2.我的代码、互评同学代码截图
他
我
3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
他调用了库函数里面原本就存在的函数,我则没有,他的更简单方便,但需要记忆,我的复杂一些。我更喜欢他那种简洁的风格。
四、本周学习总结
1.你学会了什么?
1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?
int a; int *i=&a;
1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?
运用在指针加上常量,两个指针无法相加就像宾馆门牌号一样503加607 没有意义。
1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?
程序崩溃
1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?‘
指针变量做函数形参:
函数实参应该怎么表示:
可以对主函数的变量进行操作实现多个值得返回。
1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染
void bubble(int *a,int n)
{
int i,j,t;
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++){
if(*(a+j)>*(a+j+1)){
t=*(a+j);
*(a+j)=*(a+j+1);
*(a+j+1)=t;
}
}
}
}
1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?
让该指针指向数组首地址即数组名字或者数组的第一个元素。
(1)将指针当成数组操作
(2)将指针加上数字i使指针遍历数组每个元素地址。
1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?
在c语言中定义一个指针
char *p;
char str[10] = "afjkfdhsjk";
p = str;
指针p指向字符串str的首地址
1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?
#include<stdio.h>
#include<string.h>
void connect(char*op,char*cpunt);
int main()
{ int k=0,i=0,j=0;
char op[20];
char count[20];
gets(op);
gets(count);
connect(op,count);
printf("%s",op);
return 0;
}
void connect(char*op,char*count)
{
strcat(op,count);
}
可以指向一个不需要分配内存的地址,通信协议中用的比较多,一般指向消息内容。
2.本周的内容,你还不会什么?
2.1 课堂派错题罗列及如何订正。
指针与数组第二题第二个空,应该填写的是地址不是数字因此要写的是p+n
指针作业中的选择第七题选择C项,*p是数值不是地址。
2.2 其他不会的?打算怎么解决
指针思想没有熟练,多做题,多解决。
3.数组上机考试小结
3.1 那题错了,请罗列?
题目没做错就是矩阵哪一题用了选择排序法去做比较low
3.2 错题如何订正,为什么错了?
无