C博客作业--指针
一、PTA实验作业
题目1:6-5 判断回文字符串
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(伪代码或流程图)
定义指针p、q,整型变量i用于循环,flag=1用于记录存在字母不相同的情况,n用来表示该字符串有多长
当s[i]!='\0'时,数出该字符串有多长
for p=s,q=s+n-1 to p<=q
如果*p!=*q
flag=1并结束循环
end for
如果flag==1
return false
否则
return true
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
最初q的位置找错了,造成运行超时
题目2:6-8 使用函数实现字符串部分复制
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(伪代码或流程图)
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
最开始还数了该字符串有多长,然后提交上去是部分正确,后面把计算字符串有多长的去掉了就对了
题目3:6-11 报数
1. 本题PTA提交列表(要提交列表,不是结果)
2. 设计思路(伪代码或流程图)
定义整型变量i用于循环,k=1,count用来记住报的数字是多少,number记录每次参与游戏的有几个人
定义数组a[n];
for i=0 to i<n
从1到n依次给每个人编号
参与游戏的人数number大于等于1时
for i=0 to i<n
如果a[i]等于0
跳过后面的语句,继续下一次循环
count++
如果count==m
a[i]赋值为0
out[i]=k++记录第几个退出游戏
count重新赋值为0
人数number少1
end for
3.代码截图(注意,截图,截图,截图。不要粘贴博客上。不用用···语法去渲染)
4.本题调试过程碰到问题及PTA提交列表情况说明。
这题想了很久都不知道要如何才能实现。后来参考了网上的代码,觉得豁然开朗,就模仿着写了。如果自己想,我估计想个好几天都想不出来。
二、截图本周题目集的PTA最后排名。
三、阅读代码
1.
#include<stdio.h>
#include<string.h>
int main(void)
{
char a[81];
gets(a);
char b[81];
gets(b);
char *p;
char c[81];
while((p=strstr(a,b)) != NULL) { //strstr 找不到返回 NULL
*p = '\0'; // 指定连接下一步(连接函数)之前 a 的终止位置;
strcpy (c, p+strlen(b)); // strcat 函数中的两个传入参数的内存地址不能重叠,所以这里用 c 当作 temp
strcat (a, c);
}
puts(a);
return 0;
}
用strstr判断是否存在子串,存在的话就用函数返回第一次匹配的字符串的地址,如果是自己做会用for语句来找出第一个字母相同的地方,然后判断后面的字母是不是也相同,如果都相同,就记住第一个字母的位置,然后再将子串删除,别人的做法明显方便简洁多了
2.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
char *Fun(char *s);
int main()
{
char s[80];
printf("Please input: ");
scanf("%s",s);
printf("\nThe result is: %s\n",Fun(s));
}
char *Fun(char *s)
{
int i, j, k, n;
char *p, *t;
n=strlen(s)+1; /* 字符串的长度,包括结束符标志 */
t=new char[n];
p=s;
j=0; k=0;
for(i=0; i<n; i++)
{
if(isdigit(s[i])) /* 如果是数字 */
p[j++]=s[i];
else
t[k++]=s[i];
}
p[j]=t[k]='\0';
strcat(p,t);
return p;
}
这题用到了isdigit这个函数判断是否为数字,在没学过这个函数之前,我们的做法都是判断是否大于0并且小于9,用这个函数,可以让我们的代码更加简洁,很值得学习
四、本周学习总结
1.自己总结本周学习内容。
1.这周新学了结构,结构的定义如下
struct 结构名 {
类型名 结构成员名1;
类型名 结构成员名2;
···
类型名 结构成员名n;
};
在定义嵌套的结构类型时,必须先定义成员的结构类型,再定义主结构类型
2.学了新的操作符“.”,结构变量可以通过结构成员操作符“.”对其某个成员进行引用。结构成员运算符的优先级属最高级别。
当两个结构变量的类型相同时,可以直接赋值,将一个结构变量的所有成员值都复制给另一个
3.学习了一些常见的字符串操作函数,如
strcar连接2个字符串
strcmp比较2个字符串的对应字符是否相等
strcpy将一个字符串复制到另一个字符串上
strlen计算字符串的长度
strchr在字符串中找到第一次出现要找的字符的首地址
strstr在母串中找到第一次出现子串的首地址
2.罗列本周一些错题。
第二处循环条件错误没改出来
第一空赋值错误,在做题的时候不是很清楚该赋值哪个