WShit

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

一、PTA实验作业

题目1:删除字符串中的子串

1. 本题PTA提交列表

2. 设计思路

定义字符型数组s[81]储存主串,sub[81]储存子串.
输入主串和子串
do loop
   for(i=0,u=0; s[i] ;)
       如果s[i]==sub[0]
            for v=i+1 to s[v-i]=='\0'  如果 s[v]!=sub[v-i] ,break.
            end for.
            如果sub[v-i]=='\0',i=v.
       end if
       s[u++]=s[i++];    
   end for
   s[u]='\0'.
until u==i.
输出删除子串后的主串 s .

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

  • 提交的时候多粘贴了一次代码???

题目2:Left-pad

1. 本题PTA提交列表

2. 设计思路

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

  • 一开始数组设置得不够大

题目3:正整数A+B

1. 本题PTA提交列表

2. 设计思路

定义judge(char n[])函数判断A或B是否满足条件,正确时返回它的值.
定义变量sum储存n转化为数字后的值,flag=1标记是否符合要求
for n[i]=n[0] to n[i]=='\0'
   如果n[i]>='0'&&n[i]<='9',  sum=10*sum+n[i]-'0'; 
   否则 flag=0并推出循环
end for
如果 sum>1000 flag=0.
返回sum*flag.
main():
输入字符串A和B.
调用juge()函数判断A或B是否满足条件.

如果 judge(A)!=0 ,输出字符串A , 否则输出"?"
输出" + ".

如果 judge(B)!=0 ,输出字符串B , 否则输出"?"
输出" = ".

如果 judge(A)!=0&&judge(B)!=0 ,输出  judge(A)+judge(B) 的值,否则输出"?".

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。

  • 无问题

二、截图本周题目集的PTA最后排名。

三、同学代码结对互评

古风排版

我的代码
#include<stdio.h>
int main()
{
	int n,m,sum;
	static char s[1111];
	scanf("%d ",&n);
	gets(s);
	for(sum=0; s[sum]; sum++);
	m=sum/n+(sum%n>0);
	for(int r=1;r<=n;r++){ 
	    //n行m列. 
		for(int c=m;c;--c){
			if(s[n*(c-1)+r-1]) printf("%c",s[n*(c-1)+r-1]);
			else printf(" ");
		}
		printf("\n");
	}
	return 0;
}
炳辉的代码
#include<stdio.h>
int main(){
	int i=0,j,N,k=0,x,flag=0;
	scanf("%d",&N);
	getchar();
	char a[N][1000],b[1001];
	while((b[i]=getchar())!='\n') i++;
	b[i]='\0';
	int c;
	if(i%N==0) c=i/N-1;
	else c=i/N;
	int r=0;
	x=c;
	while(b[k]!='\0'){
		if(r<N) {a[r][c]=b[k];k++;r++;}
        if(r==N) {c--;
		r=0;
		}
	}
	for(i=r;i<N;i++) a[i][c]=' ';
	for(i=0;i<N;i++){
		for(j=0;j<=x;j++) printf("%c",a[i][j]);
		printf("\n");
	}
	return 0;
}

  • 我的代码利用行、列的值与输出的值(即数组下标)之间的关系求解.
  • 他用二维数组将字符串化成矩阵形式,将矩阵元素变为古风排版后输出矩阵.
  • 思路不同,总体上我的代码比较简短.所以我更喜欢我的代码.

四、本周学习总结

1.你学会了什么?

1.1指针变量如何定义?

  • 类型名 *指针名

1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?

  • 可以用于指针指向数组时,如 int *p=a; 则 *p为a[0] , *(p+1)为a[1].
  • 2个指针变量无法相加

1.3 指针不赋初值,直接使用,会出现什么情况,请用DEVC验证,并截图展示?

  • 程序将无法运行

1.4 课堂派上关于分离浮点数的整数部分和小数部分那题,请用DEVC验证实现,并在此贴图展示,同时说明哪句是指针变量做函数形参,函数实参应该怎么表示。指针变量做函数形参有什么用处?

  • int *i 和 float *f 将指针i和指针p]作为形参.
  • 实参用地址表示.
  • 可以直接修改内存改变实参的值.

1.5 请把课本的冒泡排序的函数改成指针变量做形参格式,并把代码写在底下,注意用markdown语法渲染。

void bubblde(int *p,int n)
{
    int i,j,t;
    for(i=1;i<=n;i++) 
	    for(u=0;u<n-i;u++)
            if(*(p+u)>*(p+u+1)){
                t=*(p+u);
				*(p+u)=*(p+u+1);
				*(p+u+1)=t;
            }
}

1.6 如何定义一个指针变量指向数组,如何用指针变量表示数组元素?

  • 定义指针时指向数组名. 如, int a[10],*p=a.
  • 用 *(p+i) 表示 a[i].

1.7 如何定义字符指针指向字符串?指针指向字符串后,初始位置在哪里?

  • 如 char *s="cpoint".
  • 初始位置为字符串首元素的地址,如char *s="cpoint" 中 , s 指向 c.

1.8 利用字符指针操作字符串,如设计函数实现字符串连接,请在此贴图展示代码。说明指针表示字符的方法好处是什么?

  • 可以实现对主函数的数据传递.

2.本周你不会内容有什么?

  • p+n错写成q+n
  • 刚做的时候不知道a是地址常量

3.数组上机考试小结

  • 出现了一些细节错误,如十六进制里的字符"F"写成了小写的,还有定义数组时类型名写错了.
posted on 2017-12-10 14:23  嗡嗡_嗡  阅读(410)  评论(5编辑  收藏  举报