題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=2006
思路:先用一個數去確定后面需要進行運算的整數個數宇植,然后再用for語句進行奇數的判斷和奇數的累乘继蜡,最后輸出結果币狠。
這題的關鍵是要寫出第一行輸入的表示后面有多少個整數的代碼毙沾,我不知道怎么去寫,就一直在干想挺峡,想了很久也想不出來,也沒有去嘗試寫担钮,就想著要找一個模板來輸入那個數橱赠,但事實不可以,這也是我的一個大弊端了箫津,要改過來才行病线。
干想很久以后寫下了代碼,運行出來有問題鲤嫡,代碼是錯誤的送挑。
錯誤代碼:
#include "stdio.h"
void main()
{
? ? int n,a[100],i,m;
? ? while(scanf("%d%d",&a[n],&n)!=EOF)
? ? {
? ? for(i=0;i<100;i++)
? ? ? ? if (a[i]%2!=0)
? ? ? ? ? {
? ? ? ? ? m=a[i];
? ? ? ? ? a[i]=a[i+1];
? ? ? ? ? a[i+1]=m;
? ? ? ? ? }
? ? ? ? ? printf("\n");
? ? }
? ? return 0;
}
錯誤之處:1.想著是用a[]來讓我可以控制輸入多少個整數,殊不知已是亂用了冒泡法
2.賦值錯誤:只有一個賦值暖眼,無法實現先輸入一個代表后邊有多少個整數的那個數
3.printf處出現基本錯誤惕耕,況且沒有是在運算全部結束后才輸出
4.沒有寫出累乘的步驟
解決方法1.多定義一個變量來與a[]結合實現先輸入一個整數代表后邊有多少整數進入運算的題目要求
2.進行二次賦值,讓后面所需要進行運算的整數可以進去電腦緩沖區(qū)
3將printf移出循環(huán)之外诫肠,讓其能輸出最后結果
4.將if后的語句重新寫過司澎,定義要累乘的原始值為1,重寫累乘步驟栋豫,讓其可以實現累乘
改后正確代碼:
#include "stdio.h"
void main()
{
? ? int n,i,m,num,a[100];
? ? while(scanf("%d",&m)!=EOF)
? ? {
? ? num=1;
? ? for(i=0;i<m;i++)
? ? scanf("%d",&a[i]);
? ? for(i=0;i<m;i++)
? ? ? ? {
? ? ? ? if (a[i]%2!=0)
? ? ? ? ? {
? ? ? ? ? num=num*a[i];
? ? ? ? ? }?
? ? ? ? }
? ? ? ? printf("%d\n",num);
? ? }
}
筆記:1.如果題目要求要輸入一個數確定后面所輸入數的數目挤安,要進行兩次賦值,并且使用一個for語句對后面的數進行下一步賦值
2.要注意for語句后的基本用法
3.要充分理解累乘或者累加的用法