代码改变世界

第二次作业

2018-04-07 21:00  魏鹏5班  阅读(258)  评论(0编辑  收藏  举报

一、学习内容总结
1.指针事实上是一种数据类型,和int 基本类型一样。指针也是一种变量,占有内存空间,保存的是内存地址。
2.指针变量的加减运算并不是简单的加上或减去一个整数,而是跟指针指向的数据类型有关。
3.两个指针变量可以相减。若是两个指针变量指向统一个数组中的某个元素,那么相减的成效就是两个指针之间的元素个数。
4.数组参数 等效的指针参数
    一维数组 char a[30] 指针 char*
    二维数组 char a[10][30] 数组的指针 char(*a)[30]

二、在课堂或课后编程学习遇到的问题及解决过程
问题一:一直不明白&a在指针中是这么操作的。
问题一的解决方法:看了书才知道,是先进行&a运行运算,得到了a的地址,在去进行
的运算,也就是说,&a与a等价。
问题二:对于指针中的加加、减减。
问题二的解决方法:
(p--)先对p进行运算,再让p自减。
(++p)先让p自加,再做运算。
(--p)先让p自减,再做运算。
问题三:不理解a+1和
(a+1)的值为什么一样。
问题三的解决方法:虽然是内容与地址的差别,,但a+1是二维数组中序号为一的首地址,而*(a+1)就是的a[1],也是地址,指向a[1][0],所以是一样的。

1.完成PTA(指针字符串查找字符程序),粘贴代码,将输出截图(只截带结果的小图即可)。

#include<stdio.h>
#include<stdlib.h>

main()
{
	char a[100],ch,*p;
	p=a;
	int count=0,i;
	gets(a);
	ch=getchar();
	for(;*p!='\0';*p++)
	{
		if(*p==ch)
		count++;
		else continue;
	}
	printf("%d\n",count);
	
}

2.课后自行完成以二维数组形式对5个字符串进行排序(可冒泡可选择排序)

#include<stdio.h>
#include<string.h>
#define N 5
int main()
{
  char ptr[N][80]={ "to","happy","birthday","you"};
  char *p[N];
  char *temp;
  int i,j;
  for(i=0;i<N;i++)  
      p[i]=ptr[i];

   for(i=0;i<N-1;i++)
      for(j=i;j<N-1;j++)
          if(strcmp(p[j],p[j+1])>0)
          {
            temp=p[j];
            p[j]=p[j+1];
            p[j+1]=temp;
          }
  for(i=0;i<N;i++)
      puts(p[i]);
}

四、附加内容