Work_4

1.在屏幕上输出以下图案:

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

int main(){
    int x = 0;
    printf("请输入该图案的行数:\n");
    scanf("%d", &x);
    int number = -1;
    for (int i = 1; i <= x; i++){
        if (i <= x / 2 + 1){
            number = number + 2;
            for (int m = 1; m <= number; m++){
                printf("*");
            }
            printf("\n");
        }
        else {
            number = number - 2;
            for (int n = 1; n <= number; n++){
                printf("*");
            }
            printf("\n");
        }
        
    }


    printf("\n");
    system("pause");
    return 0;
}

2.求出0~999之间的所有“水仙花数”并输出。
“水仙花数”是指一个三位数,其各位数字的立方和确好等于该数本身,如;153=1+5+3?,则153是一个“水仙花数”。 

在数论中,水仙花数(Narcissistic number)也称为自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong number),是指一N位数,其各个数之N次方和等于该数。
例如153、370、371及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。

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

int Cube(int number){
    int cube = 0;
    cube = number * number * number;
    return cube;
}

int Daffodil(int i){
    int sum = 0;
    int x1, x2, x3;
    x1 = x2 = x3 = 0;
    while (i > 0){
        x1 = i % 10;
        i = i / 10;
        x2 = i % 10;
        i = i / 10;
        x3 = i % 10;
        i = i / 10;
    }
    sum = Cube(x1) + Cube(x2) + Cube(x3);
    return sum;
}

int main(){
    printf("100~999之间的所有水仙花数为:\n");
    for (int x = 100; x < 999; x++){
        if (Daffodil(x) == x){
            printf("%4d", x);
        }
    }
    printf("\n");
    system("pause");
    return 0;
}


3.求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
例如:2+22+222+2222+22222

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

int Every_item(int number){
    int item = 0;
    for (int i = 0; i < number; i++){
        item = item + 2*(pow(10.0, i));
    }
    return item;
}

int main(){
    int item_number = 0;
    printf("请输入项数:\n");
    scanf("%d", &item_number);
    int Sn = 0;
    for (int i = 1; i <= item_number; i++){
        Sn = Sn + Every_item(i);
    }
    printf("Sn=%d\n",Sn);
    printf("\n");
    system("pause");
    return 0;
}

 

注释:

  多写函数,使问题模块化,让问题的层次和结构更加清楚。for()不多于三层,最好控制在两层。

 

posted @ 2018-12-06 14:25  lkimprove  阅读(98)  评论(0编辑  收藏  举报