一、PTA实验作业
题目1:6-5 判断回文字符串
1. 本题PTA提交列表
2. 设计思路
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
一开始k的初值设的为0,导致出错,计算有效长度k应从-1开始赋值
题目2:6-8 使用函数实现字符串部分复制
1. 本题PTA提交列表
2. 设计思路
定义整型变量i,num=0
for(i 0 to *(t+i)不为0,i加一){
num加一
if(num大于等于m)//m小于字符串的长度
*s++=*(t+i);//对*s赋值
}
*s为0结束
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
这个题一开始以为只要把第m个字符的地址传给指针t,输出t就可以了,发现这样是错误的,要把m后的每个字符内容都一一赋给t才可以。
题目3:6-11 报数
1. 本题PTA提交列表
2. 设计思路
定义整型变量i,j,num为0
for(i 0 to n-1)
out[i]赋值0//使数组out的每个元素都为0
while(j<n){//j表示出局顺序
for(i 0 to n-1){//元素为0表示还没有出局
if(out[i]为0)
num加一
if(num等于m){
out[i]=++j//使元素不为0,表示出局
num重新为0
}
}//当i=n时,i重新为0实现圆圈循环
}
3.代码截图
4.本题调试过程碰到问题及PTA提交列表情况说明。
一开始使数组out的每个元素都为1,发现后面的代码不好打,使数组out的每个元素都为0 的话,因为要使数组内容表示出局顺序,出局顺序都大于0,所以代码比较好打。
二、截图本周题目集的PTA最后排名。
三、阅读代码(找两篇优秀代码贴图展示,并说明该代码功能是什么,优点是什么?)
代码一
代码功能:判断括号是否遵循数学上括号的使用原则#include<stdio.h> int mate(char ch[],int n); int main(){ int i,n; scanf("%d",&n); char ch[n]; getchar(); for(i=0;i<n;i++) scanf("%c",&ch[i]); if(mate(ch,n)) printf("True"); else printf("False"); return 0; } int mate(char ch[],int n){ int i,count1=0,count2=0; for(i=0;i<n;i++){ if(ch[i]==‘(‘) count1++; else if(ch[i]==‘)‘){ if(count1==0) return 0;//不匹配 else count1--;//匹配 } else if(ch[i]==‘{‘) count2++; else if(ch[i]==‘}‘){ if(count2==0) return 0;//不匹配 else count2--;//匹配 } } if(count1==0&&count2==0&&n!=0) return 1; else return 0; }
优点:引入两个变量count1,count2来判断,一个前括号与后括号配对,出现前括号使count加一,在此情况下出现后括号使count减一,只有最后count1,count2都为0才表示遵循数学上括号的使用原则。若在count为0时,出现后括号则直接返回0结束函数。代码二
#include <stdio.h> #include<string.h> int main(){ char s[500001]; gets(s); int i,count=0; i=strlen(s);//有效长度 char *p; while(i>=0){ if(s[i]==‘ ‘){ if(s[i+1]!=‘ ‘&&s[i+1]!=‘\0‘){//判断是否多空格 p=s+i+1;//指针赋值 count++; if(count>1) printf(" ");//count为1时不输出空格 printf("%s",p); } s[i]=‘\0‘; //输出一次后使输出的第一个字符为0,保证之后输出不输出之前的 } else if(i==0&&s[i]!=‘ ‘){//第一个单词前没有空格,用i=0判断 p=s; if(count>=1)printf(" "); printf("%s",p); } i--;//递减 } return 0; }
代码功能:将句中所有单词的顺序颠倒输出
优点:使用strlen函数计算有效长度,并使用指针输出单词很灵活,在每次输出一次后使输出的第一个字符为0,保证之后输出不输出之前的,很巧妙,并使用count来控制是否输出空格。四、本周学习总结
1.自己总结本周学习内容。
1.1字符串和字符指针
字符指针是指向字符串首字符的地址。
1.2字符串处理函数
- 头文件stdio.h
输入scanf("%s",s);getss(s);
输出printf("%s",s);puts(s); 头文件string.h
字符串复制strcpy(s1,s2);
字符串连接strcat(s1,s2);
字符串比较strcmp(s1,s2);
字符串长度strlen(s1);1.3结构的概念与定义
结构是一个数据类型,由结果成员构成
结构类型名=struct+结构名1.4结构类型变量的储存空间
所占空间是各成员所占空间之和,
1.5结构变量的引用与赋值
引用格式:结构变量名.结构成员名
若两个结构变量具有相同类型,可直接相互赋值。1.6结构数组
结构数组格式与二维数组的格式类似
引用格式:结构数组名[下标].结构成员名
数组元素之间可以相互直接赋值1.7结构指针
结构指针就是指向结构变量的指针。
访问结构成员时(*p).等价于p->2.罗列本周一些错题。
- 1
一开始不懂new char这个数组是什么意思,就蒙的填了一个指针t - 2
定义学生出生日期的结构体时成员类型没有定义好
改正
3
不能对books[2]直接全部赋值
改正