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 在寫計算正確答案的函數時花了很多時間,老是小錯誤不斷,但最後總算也能運行正確。code

  • 3 總的來講,指針這塊內容沒學好,代碼沒有作到簡化,應該多向他人學習。blog

相關文章
相關標籤/搜索