日常练习

1.在屏幕上打印菱形。

//     *
//    ***
//   *****
//  *******
// *********
//***********
// *********
//  *******
//   *****
//    ***
//     *
//规律:
//1.第一行5个空格,1个*号
//2.第二行4个空格,3个*号
//3.第三行3个空格,5个*号
//.....
//第i行,n-i个空格,2*i-1个*j号
//

#include <stdio.h>
#include <stdlib.h>
void PrintLine(int blank_count, int star_count){
    for (int i = 0; i < blank_count; ++i) {
        printf(" ");
    }
    for(int i = 0;i<star_count; i++ ){
        printf("*");
    }
    printf("\n");
}



void PrintLingXing(int n){
    //打印上半部分,n为菱形上半部分行数
    int 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);//打印下半部分
    }
}

int main(int argc, const char * argv[]) {
    printf("请输入打印菱形的行数的一半:");
    PrintLingXing(4);

    system("pause");
    return 0;
}

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

#include<stdio.h>
#include<stdlib.h>
int ShuiXianHua(int num){
    if( num<100 || num>999){
        return 0;
    }
    int tmp = num;
     //123
    //123 % 10 = 3。个位
    //123 / 10 = 12
    //12 % 10 = 2。十位
    //12 / 10 = 1
    //1 % 10 = 1  百位
    int num1 = num % 10;//取出个位
    num /= 10;
    int num2 = num % 10;//取出十位
    num /= 10;
    int num3 = num % 10;//取出百位
    if ( tmp == num1*num1*num1 + num2*num2*num2 + num3*num3*num3){
        return 1;
    }
    return 0;
}


int main(int argc, const char * argv[]) {
    int i =100;
    for( i = 100;i < 1000;i++){
        if(ShuiXianHua(i)==1){
            printf("%d\n",i);
        }
    }
    system("pause");
    return 0;
}

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

//求Sn=a+aa+aaa+aaaa+aaaaa的前5项之和,其中a是一个数字,
//例如:2+22+222+2222+22222
//规律:Sn=a*10^0+a*10^1+a*10^2+a*10^3+a*10^4;
//
#include<stdio.h>
#include<stdlib.h>
#include"math.h"
//首先利用函数构造出每一项的数字
int CreatNum(int a, int n){
    //a为例子中的a,n为第几项
    if(a<1||a>9||n<0){
        return 0;
    }
    int num = 0; //num为构造的数字,即Sn
    int i = 0; //i为例句中的指数
    for(i=0;i<=n;i++){
        num = a*pow(10,i) + num;
    }
    return num;
}


int main(int argc, const char * argv[]) {
//   printf("%d\n",CreatNum(2, 5))
    int a,n;
    printf("请输入俩个一位数字:");
    scanf("%d,%d",&a,&n);
    int i = 0;
    int Sn = 0;
    for(i = 0;i < n;i++){
        Sn += CreatNum(a,i);
    }
    printf("%d",Sn);
    system("pause");
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值