2022-2023-1 20221309《计算机基础与程序设计》第十三周学习总结
这个作业属于哪个课程 |
<班级的链接> |
这个作业要求在哪里 |
<作业要求的链接>https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13 |
这个作业的目标 |
《C语言程序设计》第十二章 |
作业正文 |
教材学习内容总结
《C语言程序设计》第十二章:结构体数据类型,共用体数据类型,枚举数据类型,定义数据类型;结构体变量,结构体数组,结构体指针的定义与初始化;结构体成员的引用,成员选择运算符,指向运算符;向函数传递结构体变量,结构体数组,结构体指针;动态数据结构,动态链表。
教材学习中的问题和解决过程
问题1:结构体和共用体二者的区别是什么?
解决方案:
结构体和共用体的区别在于:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员。
结构体占用的内存大于等于所有成员占用的内存的总和(成员之间可能会存在缝隙),共用体占用的内存等于最长的成员占用的内存。共用体使用了内存覆盖技术,同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖掉。
代码调试中的问题和解决过程
问题1:找不出问题
解决方案:查找资料得
#include <stdio.h>
void Print(char **arr, int len); //*arr改成**arr
void main()
{
char *pArray[] = {"Fred","Barrey","Wilma","Betty"};
int num = sizeof(pArray) / sizeof(char*);
printf("Total string numbers = %d\n", num);
Print(pArray, num);
}
void Print(char **arr, int len) //*arr改成**arr
{
for (int i=0; i<len; i++)
{
printf("%s\n", arr[i]);//*arr[i]改成arr[i]
}
}
但还是不明白为什么char后加*,arr前面为什么加两个*。
查资料得:char*指字符指针;
1、char*的使用
//char*对应char变量的地址外,还 //一重指针对应的是一维数组
char str[] = "hello";
char* ch = str; //ch等同于str
printf(" %s",ch);
2、char**的使用
char**对应char* 变量的地址外,还//二重指针对应的是指针数组,而不是二维数组。
char *str[] = {"hello","world"};
char **ch = str ; //ch等同于str
printf("%s\n",ch[0]);
printf("%s\n",ch[1]);
————————————————
原文链接:https://blog.csdn.net/modi000/article/details/107154520
问题2:
如何将数字字符转化为整数?
解决方案:#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 100
int main()
{
char str[N];
printf("Please enter a string:");
gets(str);
printf("the result of output:\n");
int i,j,a[20],temp,num=0;
for(i=0;i<strlen(str);i++)
{
if(*(str+i)>='0'&&*(str+i)<='9')
{
temp=*(str+i)-'0';
for(j=i+1;j<strlen(str);j++)
{
if(*(str+j)>='0'&&*(str+j)<='9')
{
temp=temp*10+*(str+j)-'0';
i++;
}
else
break;
}
*(a+num)=temp;
num++;
}
}
for(i=0;i<num;i++)
printf("%10d\n ",*(a+i));
return 0;
}
可以通过数字字符的ASCALL码来进行计算。上面的s[i]与’0‘是字符,这两个相减其实就是他们的Ascall码相减的结果,这些数字字符Ascall码相减的结果和整型数字相减的结果是相同的。
'0’是一个char类型的字符,其ASCII码就是一个int型的数字48,在运算过程中等同于int。
所以将字符型数字 ’1‘ 转化为 整型数字 1 : ‘1’-‘0’=1 相当于49-48 = 1.
上周考试错题总结:
无
其他:无
解决方案:
学习进度条
|
代码行数(新增/累计) |
博客量(新增/累计) |
学习时间(新增/累计) |
重要成长 |
目标 |
3000行 |
20篇 |
200小时 |
|
第十三周 |
100/1200 |
1/28 |
15/180 |
|
|
|
|
|
|
|
|
|
|
|