C语言博客作业05--指针
1.本章学习总结
1.1思维导图
1.2 本章学习体会及代码量学习体会
1.2.1学习体会
在本章的学习中,我了解到了指针的原理与应用,指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变。还学到了如何利用地址,找到它指向的存在电脑存储器中另一个地方的值,也学习了如何把指针和函数结合使用。但是指针的使用比较复杂,在使用的过程中容易漏写错写,比如在使用函数时容易忘记&、容易把(n)++或++n写成*n++,++优先级更高,导致不是对n所指内容加一。还有字符串的结束标志‘\0’也容易忘记加上。所以,平时对指针的练习就很重要,不然到考试的时候,真的容易忘记怎么使用,卡在题目半中间。
1.2.2代码累计
2.PTA总分
2.1截图
2.2我的总分
125
3.PTA作业
3.1PTA题目一
本题要求编写一个解密藏尾诗的程序。
3.1.1算法分析
定义二维数组poem[4][20],字符数组end[10];
定义 i,t;
for i=0 to i=3 do
t=strlen(poem[i]);
end[2*i]=poem[i][t-2];
end[2*i+1]=poem[i][t-1];
结束循环
end[2*i]='\0'; //结束符号
输出end;
end
3.1.2代码截图
3.1.3PTA提交列表及说明
- Q1.刚开始想把一行一行的诗倒过来,然后取第一个字,这样就相当于是取尾了。
- A1.发现行不通,因为每行诗的长度不一样。
- Q2.将poem数组的最后一个字赋值到end中,但是最后输不出来。
- A2.百度了才知道,要将最后两个单位都赋值过去,即一个汉字要赋值两次。
4.大作业
题目:实现小学四则运算。
4.1.改造函数介绍
1.函数一
定义整型数n,p;
定义字符x,y,op,temp;
srand(time(NULL));
x=(int(rand()%10)+'0'); //生成数字字符
strcat(A,&x);
A[1]='\0';
char a[]={'+','-','*','/'}; //生成运算符
n=rand()%4;
op=a[n];
temp等于op;
strcat(A,&op);
A[2]='\0';
for p=0 to flag!=1 do
y=(int(rand()%10)+'0');
if temp等于除号且y等于0,进入下一个循环;
if temp等于除号且y不等于0,flag=1;
if temp不等于除号 flag=1;
strcat(A,&y);
A[3]='=';
A[4]='\0';
return A;
2.函数二
定义整型数n,p,q;
定义字符x,y,op;
for q=0 to q<2 do
for p=0 to p=1 do{
x=(int(rand()%10)+'0');//生成数字字符
strcat(B,&x);
B[p+q*3+1]='\0';
}
char a[]={'+','-'}; //生成运算符
n=rand()%2;
op=a[n];
strcat(B,&op);
B[3+q*3]='\0';
for p=0 to p=1 do //生成数字字符
{
y=(int(rand()%10)+'0');
strcat(B,&y);
B[7+p]='\0';
}
B[8]='=';
B[9]='\0';
return B;
3.函数三
定义整型数n,p,q;
定义字符x,y,op;
for q=0 to q<2 do
for p=0 to p=2 do
x=(int(rand()%10)+'0');//生成数字字符
strcat(C,&x);
C[p+q*4+1]='\0';
char a[]={'+','-'}; //生成运算符
n=rand()%2;
op=a[n];
strcat(C,&op);
C[4+q*4]='\0';
for p=0 to p=2 do //生成数字字符
y=(int(rand()%10)+'0');
strcat(C,&y);
C[9+p]='\0';
C[11]='=';
C[12]='\0';
return C;
4.函数四
int ComputeExp(char *exp)
{
定义整型数 len,n=0;
定义整型数 i,flag=0;
定义字符 op;
定义浮点数 m=0,sum=0;
len等于strlen(exp);
for i=len-1 to i=0 do
if exp[i]<='9'并且exp[i]>='0' then
m=pow(10,n)*(exp[i]-'0')+m;
n++;
if exp[i]=='+'或者exp[i]=='-' then
flag=2;
if exp[i]等于加号
sum+=m;
else
sum-=m;
n=0;
m=0;
if flag等于1 或 exp[i]等于除号 或 exp[i]等于乘号 then
flag++;
if flag等于1 then
op=exp[i];
sum=m;
m=0;
n=0;
else
if op等于乘号 then sum=m*sum;
if op等于除号 then sum=m/sum;
return sum;
if i等于0 then sum=sum+m;
return sum;
4.3 与原有函数代码比较
开始页面
函数一
函数二
函数三
函数四
4.3改进大作业总结
-
1 因为当时搞不清如何把随机算式用字符串表示,所以干脆写了三个函数分别生成三个算式字符串,比较麻烦,还是要多看看别人的代码学习一下。
-
2 在写计算正确答案的函数时花了不少时间,总是小错误不断,但最后总算也能运行正确。
-
3 总的来说,指针这块内容没学好,代码没有做到简化,应该多向他人学习。