指針的理解很抽象,對於指針的運用不太熟練,特別是指針不少時候是運用在函數裏面,和函數混合起來運用,指針爲參數時,就特別的亂,不知道怎麼傳參到函數,而後函數的傳參也沒學好。因此致使指針傳參時不知道怎麼傳,傳什麼東西進去。html
100算法
將N個字符串按從小到大排序的冒泡排序法數組
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
在devc上調試對了才提交的,後面提交的時候把百度來的一個語句也複製上去了,後面編譯錯誤。首先是定義的時候遇到問題,我一開始想的比較簡單,就是把這個題目當作一維數組來處理,我以爲行是變量,而後每行有一串字符串,後面發現這樣出來的結果亂七八糟,後面去百度找答案,才用了二維數組去作。本身用的輸入是scanf(「%s」,a[i])這樣的,後面看百度的答案用的是gets(a[i]),瞭解了gets函數,能夠無限讀取,不會判斷上限,以回車結束讀取,我就用上去了。還有後面的輸出,我一開始就是用的普通的printf,這樣還要本身打回車符。後面用了puts解決了這個問題。有了解到puts(a)==printf("a\n")
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.函數截圖
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;
}
}
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。可是不知道怎麼改。。
改造前函數1和改造後的函數1
等級函數,改造前用了三個函數來區分三個等級,改造以後只用了一個函數就包含了三個等級的運算。其餘好像沒什麼變更。。。
上一次的做業主要是卡在各類非法輸入上,而後解決了大部分,一些非法輸入仍是沒解決,這一次是卡在了三個等級封裝在一個等級函數上,每次要很少輸出了一個運算符,還有就是改動以後呢,運算符是不會多出來,可是算式的隨機數每次都出來的是0,並且計算也不太對,以前的話雖然多出來一個運算符,可是結果仍是對的,以前出來的是1+5/=這樣的答案是6。改了好屢次bug總算少了一點。