求出0~999之間的所有“水仙花數”,計算類似2+22+222+2222+22222的前五項累加和,輸出最後那個圖案

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;
	}

運行截圖:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章