91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中怎么用簡單粗暴的方法找水仙花數

發布時間:2022-02-13 09:42:53 來源:億速云 閱讀:224 作者:iii 欄目:開發技術

這篇文章主要介紹了C語言中怎么用簡單粗暴的方法找水仙花數的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇C語言中怎么用簡單粗暴的方法找水仙花數文章都會有所收獲,下面我們一起來看看吧。

什么是水仙花數:

指一個n位數,其各位數字的n次方之和確好等于該數本身

例如:   

1         1^1=1;

153      3^3+5^3+1^3=153;

問題:求0~100000之間的水仙花數,并打印出來

看題目,找突破口:

  • 0~100000  我可以想到用循環來判斷0~10000間的數字

  • 由栗子可知:我們需要求數字是幾位

  • 要用到次方,則我們需要引用math函數庫里的pow函數

  • 求和,依舊要使用循環

那么開始寫代碼,走一步思考一步:

#include <stdio.h>
#include <math.h>
 
int main()
{
	int i = 0;
	for (i = 0; i <= 100000; i++)
	{
		int n = 1;                // n 為位數
		int z = i;                //經過while后i改變,i未變前賦值給z,代替原值i進行后面的計算
		while (z / 10 != 0)          //這里剛開始直接用i進行運算  死循環
		{
			n++;
			z=z / 10;                //用i運算的話,當i=10時 i=i/10 直接等于1 ,死循環,所以用變量z代替i
		}
		if (i == Sum(i, n))        //判斷和是否等于原值
			printf("%d ",i);
	}
	return 0;
}

看代碼一定要看后面的注釋,這里要注意的點:

用了n代表位數,求n時while循環會改變i值,不利于后面的計算,所以用z代替

設置函數Sum來計算和,函數代碼如下:

int Sum(int x, int y)               //x接收i,y接收n
{
	int k = 0;
	int num = 0;
	int sum = 0;
	for (k=0;k<y;k++)             //循環求和
	{
		num = pow(x % 10, y);      //取出每一位的數字,求次方
		sum += num;                    //累加求和
		x/=10;                  //去掉最低位的數字
	}
	return sum;               //返回和
}

完整代碼如下:

#include <stdio.h>
#include <math.h>
 
int Sum(int x, int y)
{
	int k = 0;
	int num = 0;
	int sum = 0;
	for (k=0;k<y;k++)
	{
		num = pow(x % 10, y);
		sum += num;
		x/=10;
	}
	return sum;
}
 
int main()
{
	int i = 0;
	for (i = 0; i <= 100000; i++)
	{
		int n = 1;
		int z = i;
		while (z / 10 != 0)
		{
			n++;
			z=z / 10; 
		}
		if (i == Sum(i, n))
			printf("%d ",i);
	}
	return 0;
}

運行結果:

C語言中怎么用簡單粗暴的方法找水仙花數

關于“C語言中怎么用簡單粗暴的方法找水仙花數”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“C語言中怎么用簡單粗暴的方法找水仙花數”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

塘沽区| 穆棱市| 应城市| 天峻县| 潮州市| 南华县| 呼玛县| 鹤岗市| 弥渡县| 盘锦市| 房山区| 金昌市| 水城县| 南靖县| 静海县| 武隆县| 曲周县| 东莞市| 承德县| 根河市| 商城县| 额尔古纳市| 尼勒克县| 南平市| 瑞丽市| 乳源| 迭部县| 临清市| 白河县| 宁强县| 若羌县| 达日县| 合川市| 洛南县| 泸溪县| 延津县| 屏南县| 双鸭山市| 尉犁县| 巴中市| 惠州市|