C語言博客05--指針

1.本章學習總結(2分)

1.1 思惟導圖

 

1.2.1 學習體會

 

指針的理解很抽象,對於指針的運用不太熟練,特別是指針不少時候是運用在函數裏面,和函數混合起來運用,指針爲參數時,就特別的亂,不知道怎麼傳參到函數,而後函數的傳參也沒學好。因此致使指針傳參時不知道怎麼傳,傳什麼東西進去。html

 

1.2.2 代碼累計

2.PTA總分(2分)

2.1截圖PTA中函數題目集的排名得分

2.2 個人總分:

 100算法

3.PTA實驗做業(1分)

3.1 PTA題目1

N個字符串按從小到大排序的冒泡排序法數組

3.1.1 算法分析

char a[100][12];      定義數組長度函數

getchar();         讀取下一個字符學習

int b;           定義中間變量 spa

b=strcmp(a[j],a[j+1]);    比較字符串大小長度3d

if(b>0)          a【j】的長度長於a【j+1】指針

a【j】<——>a【j+1】   對換調試

for(i=0;i<n;i++)
puts(a[i]);          輸出變換後的數組htm

3.1.2 代碼截圖

3.1.4 PTA提交列表及說明

 

在devc上調試對了才提交的,後面提交的時候把百度來的一個語句也複製上去了,後面編譯錯誤。首先是定義的時候遇到問題,我一開始想的比較簡單,就是把這個題目當作一維數組來處理,我以爲行是變量,而後每行有一串字符串,後面發現這樣出來的結果亂七八糟,後面去百度找答案,才用了二維數組去作。本身用的輸入是scanf(「%s」,a[i])這樣的,後面看百度的答案用的是gets(a[i]),瞭解了gets函數,能夠無限讀取,不會判斷上限,以回車結束讀取,我就用上去了。還有後面的輸出,我一開始就是用的普通的printf,這樣還要本身打回車符。後面用了puts解決了這個問題。有了解到puts(a)==printf("a\n")

4.大做業(5分)

題目:實現小學四則運算

 

1.僞代碼介紹函數思路


void mathcaculate 函數
各類int 各類 double
printf                輸出選擇界面
scanf("%d",level)            讀者輸入等級選擇
if(level!=1&&level!=2&&level!=3)   判斷等級選擇是否出錯
printf(" 你的輸入有誤,結束計算");  錯誤輸入提示
return 錯誤輸入以後結束計算
printf("\n");
printf(" 偏差容許在0.01以內\n\n");     給予友好提示
CreateExp(level);         調用函數,可是我不太會使用exp參數,因此這裏只用了level
scanf("%d",&response)      讀者輸入答案
if if(s-response<=0.01)       答案符合要求
rightMessage( );         進入正確提示函數
                不然進入錯誤提示函數
s=0;              初始化系統隨機生成的算式的結果
system("pause");
system("cls");           清屏+暫停函數
if(i==n)
break;                當i=n時直接跳出循環
printf(" 1:繼續 2:退出 請選擇:");      友好提示
printf(" \n ");
scanf("%d",&flag);        輸入是否繼續
printf("\n");
if(flag==1)           繼續
continue;
else
{
printf("系統結束運算\n\n");        系統結束運算
break;
}
}
percent=right*1.00/((right+wrong)*1.00)*100;    正確率計算
printf(" 你的正確率爲%.2f\n\n",percent);

2.函數截圖

2.函數2

  • 僞代碼介紹函數思路
    • void rightMessage( )函數 
      switch ( rand() % 4 )                                     隨機生成鼓勵語句
      {
      case 0:
      printf( " 你可真是個小機靈鬼!\n" ); break;
      case 1:
      printf( " 你真優秀!\n" );break;
      case 2:
      printf( " 真棒的回答!\n" );break;
      case 3:
      printf( " 這題對了別驕傲,還有下一題!\n" );break;
      void wrongMessage( void )  提示錯誤語句
      {
      switch ( rand() % 4 )
      {
      case 0:
      printf( "\n 答案是%.2f\n\n 這題錯了,繼續努力吧!\n" ,s); break;
      case 1:
      printf( "\n 答案是%.2f\n\n 錯了,你能再作一題嗎?\n",s );break;
      case 2:
      printf( "\n 答案是%.2f\n\n 這題錯了別沮喪,還有下一題!\n",s );break;
      case 3:
      printf( "\n 答案是%.2f\n\n 你作錯了哦!\n",s );break;
      }
      }

  • 截圖函數代碼。
  •  

3.函數3

void createExp(int level)函數

各類int定義

switch (level)                判斷等級

case 1: m=10;n=4;k=3;break;                                m用於產生隨機數

case 2:m=100;n=2;k=5;break;         n用於產生運算符

case 3: m=1000;n=2;k=5;break;         k用於控制循環

而後循環產生隨機數放入數組str

y=rand()%n;

switch(y)

{

case 0:printf("+");s=s+str[j-1];break;

case 1:printf("-");s=s+str[j-1];break;

case 2:printf("*");s=str[j-1]*str[j+1];break;

case 3:printf("/");s=str[j-1]/str[j+1];break;

}

 這個有bug。可是不知道怎麼改。。

 

4.3 與原有函數代碼比較

改造前函數1和改造後的函數1

等級函數,改造前用了三個函數來區分三個等級,改造以後只用了一個函數就包含了三個等級的運算。其餘好像沒什麼變更。。。

4.4 改進大做業總結

上一次的做業主要是卡在各類非法輸入上,而後解決了大部分,一些非法輸入仍是沒解決,這一次是卡在了三個等級封裝在一個等級函數上,每次要很少輸出了一個運算符,還有就是改動以後呢,運算符是不會多出來,可是算式的隨機數每次都出來的是0,並且計算也不太對,以前的話雖然多出來一個運算符,可是結果仍是對的,以前出來的是1+5/=這樣的答案是6。改了好屢次bug總算少了一點。

相關文章
相關標籤/搜索