C语言博客作业--字符数组

一、PTA实验作业

题目1:7-2 统计一行文本的单词个数

  1. 本题PTA提交列表

  2. 设计思路

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明。
第一次我以为最后的句号不算单词,后来找做对的同学用不同的几组数据试了一下才知道句号也算单词,然后又是段错误,我就把开始定义的数组长度弄长点就过了

题目2:7-6 Jack cheng的烦恼2

  1. 本题PTA提交列表

  2. 设计思路

int n,i,j,flag=0;
输入n的值
char bra[n];
输入数据
i for 0 to n-1
if 为左括号,变为字符0
  j for 0 to n-1 
    if  为右括号,变为字符0,跳出循环
	end
end
大括号处理方法同上
 i for 0 to n-1//遍历数组,若不全为0,则未完全匹配
 if 不为0,flag=1
 if flag=0 输出True
 else 输出false

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明
开始我的思路是用一个标记遇到左括号就自增,遇到右括号就自减,最后判断该标记是否为0,后面发现这样不能正确配对,然后看了同学的思路,重新设计了一个思路

题目3:7-10 正整数A+B

  1. 本题PTA提交列表

  2. 设计思路

	char A[80],B[80];
	int i,j,flag1=0,flag2=0,x=0,y=0,k=0;
	输入加数和被加数
	历数A,B字符个数i,j
	 i for i-1 to 0
	 if A[i]不为数字,flag=1;跳出循环
	 x=x+(A[i]-'0')*pow(10,k++);//将字符型数字转为整型 
	 if x不在1~1000内 flag1=1;//界定范围
	 k=0
	 B数组处理同上
	 if flag1=0且flag2=0  正常输出 
	  else if  flag1=1且flag2=0
	左边不正常输出 
	else if  flag1=0且flag2=1
    右边不正常输出
	else
	全不正常输出

3.代码截图

4.本题调试过程碰到问题及PTA提交列表情况说明
一开始没有看到数有范围,所以做的时候没给它界定范围,后来用临界条件试的时候发现问题,又仔细看了题目才恍然大悟

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

三、同学代码结对互评

1.互评同学名称
张志鑫
2.我的代码、互评同学代码截图(此处截图核心代码就好,不一定截图全部代码,图上指明是谁的代码。)
我的代码:

张志鑫的代码:

3.我和同学代码不同在哪里?有哪些各自优势?你更喜欢哪种代码风格?如果同学代码有错的也请帮忙指出来哪里出问题。
这题原先他是错的,我帮他改了一下

他的思路就是先把第一行字符串给str2,记下他的长度,然后下面每一行字符串记下长度后与str2比较,如果比str2长,那么就将这个字符串赋给str2
他这个思路有点类似找最大值,思路很简单,就是麻烦点

四、本周学习总结
1.你学会了什么?

1.1指针变量如何定义(设计代码可以用markdown代码符号渲染)?

int *p
char *p
float *p
double *p

1.2 指针加法运算运用在哪种情况,2个指针变量能否相加?
数组中,比如int *p,a[10];p=a,这时p可以加上整型数,p+1,就是a[1]的地址,.指针之间可以相减,但不可以相加,两个同一类型的指针变量是可以相减的,他们的意义表示两个指针指向的内存位置之间相隔多少个元素

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

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

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

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

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

int a[10],*p;
p=a;

p表示a[0],(p+1)表示a[1]以此类推

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

char *p;
char str[10] = "afjkfdhsjk";
p = str;

初始位置指向字符串的首个字符

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

#include <stdio.h>
#define MAXN 80
char *strmcat( char *str1,  char *str2 );
int main()
{
    char s[MAXN], t[MAXN];
    int m;
    gets(s);
    gets(t);
    strmcat(s,t);
    printf("%s\n",s);
    return 0;
}
char *strmcat( char *str1,  char  *str2)
{
   while(*str1)
    str1++;
   while(*str2)
   {
   	*str1=*str2;
   	str1++;
   	str2++;
   }
  *str1='\0';

}

可以直接对地址内的元素进行操作

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

2.1 课堂派错题罗列及如何订正。
拆分实数的小数与整数部分那题,将指针赋了空指针,所以不能往里写东西

2.2 其他不会的?打算怎么解决
pta身份证那题有一个测试点不懂

	int n,i,j=0,k,z,sum=0,flag1=0,flag2=0,a[17]={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};
	scanf("%d",&n);
	char Z,id[n*19],M[11]={'1','0','x','9','8','7','6','5','4','3','2'};
	getchar();
	for(i=1;i<=n;i++)
	{
	    j=0;
		flag1=0;
		flag2=0;
		Z=0;
		z=0;
		sum=0;
		while((id[j]=getchar())!='\n')
		{
			if(id[j]<'0'||id[j]>'9')
			flag2=1;
			j++;
		}
		Z=id[j-1];
		if(flag2==0)
		{
		for(k=0;k<17;k++)
		sum=sum+a[k]*(id[k]-'0');
		z=sum%11;
		}
		if((Z!=M[z])||flag2==1)
		{
		    flag1=1;
			for(k=0;k<18;k++)
			printf("%c",id[k]);
			putchar('\n');
		}
		
	}
	if(flag1==0)printf("All passed");
	return 0;

3.数组上机考试小结

3.1 那题错了,请罗列?
除了ip地址转换那题

3.2 错题如何订正,为什么错了?
6-1

6-2

7-2

7-3

7-4

posted @ 2017-12-10 10:26  夜雨生虹  阅读(359)  评论(3编辑  收藏  举报