C語言中的幾道練習題(四)-------水仙花數等

1.在屏幕上輸出一下圖案:

      *

     ***

    *****

   *******

  *********

 ***********

*************

 ***********

  *********

   *******

    *****

     ***

      *

#include<stdio.h>
#include<stdlib.h>

int main(){
//打印菱形
//設對角線的一半爲n,當前是7
//菱形的上半部分
//第一行:六個空格,一個星號
//第二行:五個空格,三個星號
//第三行:四個空格,五個星號
//第i行:n-i個空格,2*i-1星號
void PrintLine(int blank_count,int star_count){
    int i=0;
    for(;i<blank_count;++i){
        printf("");
    }
    for(i=0;i<star_count;++i){
        printf("*");
    }
    printf("\n");
}
void PrintLingXing(int n){
    //打印上半部分
    int i=1;  //i表示當前的行數,從1開始數
    for(i=1;i<n;++i){
        PrintLine(n-i,2*i-1);
    }
    //打印中間
    PrintLine(0,2*n-1);
    //打印下半部分
    for(i=n-1;i>0;--i){
        PrintLine(n-i,2*i-1);
    }
}
system("pause");
return 0;
}

2.求出0~999之間的所有“水仙花數”並輸出。

“水仙花數”是指一個三位數,其個位數字的立方和恰好等於該數

例如:153、370及407就是三位數的水仙花數,其各個數之立方等於該數

153=1^3+5^3+3^3。

370=3^3+7^3+0^3。

371=3^3+7^3+1^3。

407=4^3+0^3+7^3。

#include<stdio.h>
#include<stdlib.h>
#include<math.h>

//求0-999的水仙花數
//1000
int IsShuixian(int num) {
	//判斷是不是水仙花數:三位數,並且<999
	if (num < 100 || num>999) {
		return 0;
	}
	//是水仙花數
	int tmp = num;  //後邊要判斷是不是水仙花數,會改變num的值,所以要先將num的值賦給tmp保存下來
	//比如 701
	//取出個位
	int num1 = num % 10;  //701%10->70...1=1  /10表示的是取整  %10表示的是取餘
	//取出十位
	    num = num / 10; //701/10=70
		int num2 = num % 10; //70%10->7...0=0
       //取出百位
	   num = num / 10; //70/10=7
	   int num3 = num % 10; //7%10->0...7=7
	   if ( pow(num1, 3) + pow(num2, 3) + pow(num3, 3)==tmp) {
	   return 1;
  }
	return 0;
}

int main() {
	int i = 100;
	for (i = 100; i <= 999; i++) {
		if (IsShuixian(i)) {
			printf("%d\n", i);
		}
	}
	system("pause");
	return 0;
}

3.求Sn=a+aa+aaa+aaaa+aaaaa的前5項之和,其中a是一個數字,

例如:2+22+222+2222+22222。

#include<stdio.h>
#include<stdlib.h>
//求數列的和
//構造出第n項的數字(從1開始數)
//例如 22222=>2+20+200+2000+20000
//=>2*10^0+2*10^1+2*10^2+2*10^3+2*10^4
int CreateNum(int a,int n){
    if(a<=0||a>=10||n<=0){
        return 0;
    }
    int num=0; //要構造出的數字
    int i=0;  //i表示10的指數
    for(;i<n;++i){
        num+=a*pow(10,i);
    }
    return num;
}

int main(){
    int i=1;
    int a=2;
    int sum=0;
    for(;i<=5;++i){
        sum+=CreateNum(a,i);
    }
    printf("%d\n",sum);
    system("pause");
    return 0;
}

 

 

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