第二次作业

一、学习内容总结
这学期学习了有关指针的知识,指针的作用是用来存放地址的,无论定义的是哪种数据类型占用的内存空间都是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;
}

输出截图

四、附加内容

posted on 2018-04-07 23:25  CJ丶Madlife  阅读(92)  评论(0编辑  收藏  举报