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 总的来说,指针这块内容没学好,代码没有做到简化,应该多向他人学习。

posted @ 2018-12-16 22:22  chianun  阅读(294)  评论(1编辑  收藏  举报