第二次作业
一、学习内容总结
这学期学习了有关指针的知识,指针的作用是用来存放地址的,无论定义的是哪种数据类型占用的内存空间都是8字节。学习了指针特有的运算符 * 和 & 。在学习指针的过程中,我觉得指针与上学期学习的数组有点相似。把某一元素的地址放到一个指针变量中,数组元素的指针就是数组元素的地址,这个地址不仅可以是变量的地址, 也可以是其它数据结构的地址。指针可以自加或自减,而数组名是指针常量,不能自加或自减
二、编程学习遇到的问题及解决过程
问题一:
经常将指针中的 * 与 & 符号的位置弄错,在定义的时候总是忘记*号。
解决方法:一直在看有相关案例的书,也看慕课,询问程度好的同学,搞懂地址和变量,反复练习
问题二:
在定义函数时传参总是失败。
解决方案:请教程度好的同学,了解到数组传参时要传数组名或者首地址。
问题三:
函数头文件的拼写总是出错,有时还忘记写。
解决方案:这个问题只能是从自身找突破口吧,尽量多的练习应该会得到改善。
三、作业
(1)PTA代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
char a[80],ch,*p;
int count=0,i;
p=a;
gets(a);
ch=getchar();
for(;*p!='\0';*p++)
{
if(*p==ch)
count++;
else continue;
}
printf("%d\n",count);
system("pause");
}
输出截图:
(2)以二维数组形式对5个字符串进行排序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int n=5,i,j;
char **str;
char s[100];
str=(char**)malloc(sizeof(char*)*n);
for(i=0;i<n;i++)
{
str[i]=(char*)malloc(sizeof(char)*100);
printf("请输入第%d个字符串\n",i+1);
gets(str[i]);
}
puts("排序后的字符串为:");
for(i=0;i<n;i++)
{
for(j=i;j<n-1;j++)
{
if(strcmp(str[j+1],str[j])<0)
{
strcpy(s,str[j+1]);
strcpy(str[j+1],str[j]);
strcpy(str[j],s);
}
}
}
for(i=0;i<n;i++)
{
puts(str[i]);
}
for(i=0;i<n;i++)
{
free(str[i]);
str[i]=NULL;
}
free(str);
str=NULL;
return 0;
}
输出截图
四、附加内容