1.求出0~999之間的所有“水仙花數”
問題分析:
因爲是0~999,所以先來一個循環,再進行判斷,水仙花數”是指一個三位數,其各位數字的立方和確好等於該數本身,如;153=13+53+3^3,則153是一個“水仙花數”。
代碼:
int main() {
int n, m, k,t;
for (int i =1; i < 1000; i++) {
n = i / 100; //n是百位
m = (i / 10) % 10; //m是十位
k = i % 10; // k是個位
if(i == n * n * n + m * m * m + k * k * k){
printf("%d\n",i);
}
}
return 0;
}
運行結果:
2.計算類似2+22+222+2222+22222的前五項累加和
問題分析:
首先是累加和所以是一層循環,其次每一項都在規律的變化,完整這種變化又是一層循環,所以要兩層for循環.
代碼:
int main(){
int num ;
printf("請任意輸入一個1~9的數字:\t");
scanf("%d",&num);
int t = 0;
int k = 0;
int sum = 0;
for (int i = 1; i < 6; i++) {
for (int j = 0; j < i;j++) {
t = num*pow(10,j);
}
k = k + t;
printf("%d\n",k);
sum = sum + k;
}
printf("%d\n",sum);
return 0;
}
運行結果:
輸出下面這個圖案
問提分析:
首先,一共要輸出13行,所以要使用一層雲環,其次吧這個圖案一分爲二,前半段是每次遞增兩個,後半段每次遞減兩個,所以我們要做一個判斷是遞增還是遞減,然後用一個數字去記錄當前的數字用做判斷的條件,最後規律的遞增和遞減也是一層循環,所以這個問題就是兩層的判斷for循環.
代碼:
int main() {
int t=1;
for (int i = 1; i <= 13; i++) {
if (i<7) {
for (int j=1; j <= t; j++) {
printf("*");
}
t = t + 2;
printf("\n");
}
else {
for (int j = 1; j <= t; j++) {
printf("*");
}
t = t - 2;
printf("\n");
}
}
return 0;
}
運行截圖: