天天看點

面向對象程式設計 第二次作業<1>一、解題二、上傳代碼三、總結

Github連結:https://github.com/zora02/object-oriented/tree/master/1001.A%2BB%20Format%20(20)

一、解題

題目

面向對象程式設計 第二次作業<1>一、解題二、上傳代碼三、總結

解題過程

這是一道簡單的a+b的問題,可是說簡單也不簡單,題目對輸出的結果有要求,這才是這道題要考我們的地方吧。我一開始的想法就是把a+b的結果變成一個字元串,然後在其中加入逗号。這是我最開始的想法,然後我開始做題了。

我第一個遇到的問題就是怎樣将整數變成字元串(感覺自己好弱T^T):

我去找度娘了,知道了有sprintf這個函數可以實作這一功能。我就去百度百科裡認真的看了一遍有關sprintf這個函數的知識,雖然還是有看不懂的地方,但是至少我又多知道了一種函數,在以後的學習中肯定還會遇到,慢慢的應該就知道該如何很好的使用這個函數了。

springf函數的百度百科

第一次調試遇到的問題

這是我寫完代碼以後拿樣例調試的結果

面向對象程式設計 第二次作業<1>一、解題二、上傳代碼三、總結

問題一下子就出來了,我沒有考慮負号的情況,我把負号也當作一個數了。

這是我第一次寫出來的代碼:

#include <stdio.h>
 #include <string.h>
int main()
{
    int a,b,c,i;
    int l=0;
    char s[100];
    scanf("%d%d",&a,&b);
    c=a+b;
    sprintf(s,"%d",c);
    l=strlen(s);
    if(l>4)
    {for(i=0;i<l;i++){
        printf("%c",s[i]);
        if(i==l-1) continue;
        if((i+1-l%3)%3==0)
            printf(",");
    }
    }
    else if(l<=4) printf("%s",s);
    return 0;
}
           

第二次嘗試 修改代碼

這是我第二次寫出來的代碼:

#include <stdio.h>
 #include <string.h>
int main()
{
    int a,b,c,i;
    int l=0;
    char s[100],s1[100];
    scanf("%d%d",&a,&b);
    c=a+b;
    sprintf(s,"%d",c);
    l=strlen(s);
    if(l>4)
    {if(s[0]=='-') {printf("%c",'-');
        for(i=1;i<l;i++) {s1[i-1]=s[i];}
        for(i=0;i<l;i++){
        printf("%c",s1[i]);
        if(i==l-1) continue;
        if((i+1-l%3)%3==0)
            printf(",");
    }
    }
        else for(i=0;i<l;i++){
                printf("%c",s[i]);
                if(i==l-1) continue;
                if((i+1-l%3)%3==0)
                    printf(",");
            }

    }
    else if(l<=4) printf("%s",s);
    return 0;
}
           

我拿了樣例去調試,過了!超級開心的,就趕緊拿到pat上面送出。沒想到送出了有一個錯誤。

面向對象程式設計 第二次作業&lt;1&gt;一、解題二、上傳代碼三、總結

最開始我以為是自己開的數組s、s1沒有初始化的原因,可是改了以後去交還是同樣的錯誤。我感覺蠻奇怪的,也嘗試了其他的例子,都可以過。就去問了學姐。學姐剛開始建議我把對負号的判斷提出來,然後将剩下的數字指派到另一個數組進行判斷,這樣思路會比較清晰。想想我的代碼确實有點冗長。

第三次嘗試 再次修改代碼

這是我第三次寫出來的代碼

#include <stdio.h>
#include <string.h>
int main()
{
    int a,b,c,i;
    int l=0;
    int t=0;
    char s[100]={'/0'};
    char s1[100]={'/0'};
    scanf("%d%d",&a,&b);
    c=a+b;
    sprintf(s,"%d",c);
    l=strlen(s);
    if(s[0]=='-') {printf("%c",'-');
        for(i=0;i<l-1;i++) {s1[i]=s[i+1];}}
    else for(i=0;i<l;i++) {s1[i]=s[i];}
    t=strlen(s1);
    if(t>4)
    for(i=0;i<t;i++){
        printf("%c",s1[i]);
        if(i==t-1) continue;
        if((i+1-t%3)%3==0)
            printf(",");
        }
    else if(t<=4) printf("%s",s1);
    return 0;
}
           

沒想到後來交上還是同一點錯誤!我開始想我是不是有哪個情況沒有考慮,後來在認真看了一遍題目才發現,原來我的判斷條件錯了。當結果是4位數的時候也是要加逗号的,還是太粗心了。原來是這個錯誤。但是我在改代碼過程中還是學到了很多。

成功ac!!!

終極版代碼:

#include <stdio.h>
#include <string.h>
int main()
{
    int a,b,c,i;
    int l=0;
    int t=0;
    char s[100]={'/0'};
    char s1[100]={'/0'};
    scanf("%d%d",&a,&b);
    c=a+b;
    sprintf(s,"%d",c);
    l=strlen(s);
    if(s[0]=='-') {printf("%c",'-');
        for(i=0;i<l-1;i++) {s1[i]=s[i+1];}}
    else for(i=0;i<l;i++) {s1[i]=s[i];}
    t=strlen(s1);
    if(t>=4)
    for(i=0;i<t;i++){
        printf("%c",s1[i]);
        if(i==t-1) continue;
        if((i+1-t%3)%3==0)
            printf(",");
        }
    else if(t<4) printf("%s",s1);
    return 0;
}
           

PAT送出紀錄:

面向對象程式設計 第二次作業&lt;1&gt;一、解題二、上傳代碼三、總結

終于給過了!!!

小結

其實感覺這是一道蠻基礎的題目,可是我還是遇到各種問題。哎,感覺自己c真的沒有好好學啊T^T。但是在寫代碼和修改代碼的過程中,我都覺得是一個學習的過程。在寫代碼的時候會可能學到新的解題思路和新的函數,在修改代碼的過程中我可以知道自己解題思路和方法不好的地方,知道了自己不足之處。以後還是應該多多做題,讓自己好好學習。

二、上傳代碼

(其實這部分内容并不在作業的要求範圍内。但是我還是想講一下。因為它花了我更多的時間去解決(´・_・`))

看到作業要求裡說要把代碼送出到Github裡,我最開始以為不就是上傳一下代碼而已,有什麼難的。

But!真的好難啊,首先是全英文的界面,這都是什麼專業術語啊,我看不懂>_<。然後開始了各種百度,由于我的電腦是MacBook,好多百度出來的方法都是在windows下的操作方法,我看群裡面大家讨論的也都是windows下的操作。我也隻能看看,還是繼續我自己的搜尋之路吧。然後在百度了各種教程以後我搞定了ssh key,然後開始打算上傳代碼了。可是我還是不知道改怎麼上傳orz。。。後來在各種搜尋中,我發現了sourcetree這個神器,然後就成功上傳了!這喜悅不比我ac了少啊!

最後我想說其實我還是不知道該怎麼使用Github,我看到班導師說要用指令行什麼的,我什麼都看不懂啊,到最後我也是沒有用。不過我覺得這些東西好像要我們親自去實踐了才會真正的弄明白,光聽别人講并不能學到什麼。

三、總結

通過完成這項作業我學到了不少東西:

  1. 知道了Github這個神器的網站,雖然我都不怎麼會用(´・_・`)
  2. 學會了Markdown的一些基本用法,慢慢學會用Markdown碼字。
  3. 知道了成為一名合格的程式猿需要學習很多,路漫漫啊,我能做的就是一步一步的學好。
  4. 感受到了實踐出真知真是個偉大的真理啊!!!

Ps.感覺我這篇随筆寫的像在記流水賬一樣,我不知道這樣對于閱讀者來說會不會很糟糕(╥﹏╥),希望能夠見諒。這些都是我想說的話,也許有些廢話,可能還有一些邏輯混亂的話。這是我寫的第一篇随筆,so不足之處希望能夠指出,我将感激不盡( ^ω^ )

轉載于:https://www.cnblogs.com/perhap-s/p/5167058.html