第二次作业
一、学习内容总结
每个数组元素都在内存中占用存储单元,它们都有相应的地址。指针变量既可以指向变量,也可以指向数组元素。我们把某一元素的地址放到一个指针变量中,数组元素的指针就是数组元素的地址。对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的内容。在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针。一个指针是一个地址,是一个常量。而一个指针变量却可以被赋予不同的指针值,是变量。但常把指针变量简称为指针。为了避免混淆,指针”是指地址,是常量,“指针变量”是指取值为地址的变量。定义指针的目的是为了通过指针去访问内存单元。使用指针法能使目标程序质量高,占得内存少,行驶的速度快。
二、在课堂或课后编程学习遇到的问题及解决过程
问题一:对数组的概念模糊,不理解数组的作用,觉得使用指针使程序更加难懂
解决方法:通过阅读教材,知道了指针的作用是能够提高程序的质量,占用内存少,运行速度更快。
问题二:各类表达关系不明确,对*,&的运用混乱。
解决方法:反复的阅读教材,对*,&的概念进行理解,再通过网络查找,着重的去记忆。
问题三:指针类型的代码独立完成很吃力。
解决方法:课后多加练习,找一些例题反复的打,观看邹凯老师的教学视频进行学习。
三、作业
1.PTA代码
#include <stdio.h>
#include <string.h>
int main()
{
char ch,a[80];
int i,x=0;
gets(a);
ch=getchar();
for(i=0; a[i]!='\0'; i++)
{
if(a[i]==ch)
x++;
}
printf("%d",x);
return 0;
}
输出截图:
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;
}
输出截图
四、附加内容
1.注册中国大学Mooc,并参加浙江大学的”程序设计入门-C语言课程“的截图。