C语言—for循环

大部分我都是基于for循环做的,有少许while

1、计算n以内所有正奇数的和 ? n值通过键盘输入

有很多方法,我列了2种,看自己的想法,最终实现结果就好。

C语言—for循环_第1张图片

/*1、计算n以内所有正奇数的和 ? n值通过键盘输入*/

#include 

int main(void)
{
    int n,i,sum = 0;

    printf("请输入一个正整数n:");
    scanf("%d",&n);

    if(n <= 0)
    {
        printf("输入的不是正整数,请重新输入。\n");
        return 1;
    }

   /* for(i = 1;i <= n;i += 2)
    {
        sum += i;
    } */

    for(i = 1;i <= n;i++)
    {
        if(i % 2 != 0)
        {
            sum += i;
        }
    }

    printf("%d以内的所有正奇数的和是:%d\n",n,sum);

    return 0;

}

2、计算 1 + 1/(2 * 3) + 1/(3 * 4) + ...+ 1/(n * (n + 1)) = ?直到最后一项值小于0.00001为至。

C语言—for循环_第2张图片

/*2、计算 1 + 1/(2 * 3) + 1/(3 * 4) + ...+ 1/(n * (n + 1)) = ?直到最后一项值小于0.00001*/

#include 

int main(void)
{
    float term = 1.0,sum = 1.0;
    int n = 2;

    /* while(term >= 1.0e-5)
    {
        term = 1.0 / (n * (n + 1));
        sum += term;
        n++;
    } */

    for(n = 2;term >= 1.0e-5;n++)  //若值小于1.0e-5循环结束输出值
    {
        term = 1.0 / (n * (n +1));
        sum += term;
    }

    printf("数之和为:%f\n",sum);

    return 0;

3.打印输出所有的水仙花数,水仙花数是指一个 3 位数,它的每个位上的数字的3次幂之和等于它本身(例如:1^3 + 5^3+ 3^3 = 153)

C语言—for循环_第3张图片

/*3.打印输出所有的水仙花数,三位数,1^3 + 5^3+ 3^3 = 153)*/

#include 

int main(void)
{
    int num;
    int hunds,tens,ones;

    for(num = 100;num <= 999;num++)
    {
        hunds = num / 100;  //比如100 / 100 = 1拿到百位上的数
        tens = (num % 100) / 10;  //这里要先对100求余,比如71 % 100 = 71,71 / 10拿到十位上数
        ones = num % 10;  //这里要个位对10取余拿到个位上数


        if(num == (hunds * hunds * hunds) + (tens * tens * tens) + (ones * ones * ones))
        {
            printf("水仙花数: %d\n",num);
        }

    }

    return 0;

}

4. 打印乘法表

C语言—for循环_第4张图片

/*4.打印乘法表*/

#include 

int main(void)
{
    int r,c;

    printf("请输入乘法表的行数:");
    scanf("%d",&r);

    printf("请输入乘法表的列数:");
    scanf("%d",&c);

    if(r <= 0 || c  <= 0)
    {
        printf("输入的不是正整数,请重新输入!\n");
    }

    int i,j;

    for(i =1;i <= r;i++)
    {
        for(j = 1;j <= c;j++)
        {
            printf("%d*%d=%-3d",i,j,i*j);
        }
    printf("\n");
    }

    return 0;
}

5.判断一个数是不是回文数。(回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。)
   例如 12321 是一个回文数。

C语言判断回文数的几种方法。_c语言回文数判断-CSDN博客

这个我不是原创,好像是这么注明原创的,应该是这样弄得吧,我觉得他的逻辑思维好厉害

(只能用来确定整数)
任何一个数除以10的余数就是该数最后一位
任何一个数除以10的商就是排除掉最后一位后的数
新数=新数*10+余数
经过循环后,我们得到新数
如果是回文,那么新数应该等于原数,否则不是回文
假如有一个数字121

第一轮循环:
sum=0*10+121%10=1
temp=121/10=12
第二轮循环
sum=1*10+12%10=12
temp=12/10=1
第三轮循环
sum=12*10+1%10=121
temp=1/10=0
第四轮循环判断
temp=0 退出循环
最后判断 121=121是回文

若有个数字是123
第一轮循环:
sum=0*10+123%10=3
temp=123/10=12
第二轮循环:
sum=3*10+12%10=32
temp=12/10=1
第三轮循环:
sum=32*10+1%10=321
temp=1/10=0
第四轮循环判断
temp=0退出循环
321!=123不是回文
/*5.判断一个数是不是回文数。例如 12321 是一个回文数。*/

#include 

int main(void)
{
    int num,temp,sum = 0; //定义变量num,temp,sum;sum用于存储反转后的数

    printf("请输入一个正整数:");
    scanf("%d",&num);

    temp = num;   //将用户输入的整数赋值给临时变量temp

    while(temp > 0)
    {
        sum = sum * 10 + temp % 10;  //将temp对10取余的结果加到sum上,并*10,实现反转
        temp = temp / 10;  //去掉temp的最低位数字
    }

    if(sum == num)  //如果反转后的数 sum 等于原数num,则说明num是回文数
    {
        printf("%d是一个回文数\n",num);
    }

    else
    {
        printf("%d不是一个回文数:\n",num);
    }

    return 0;

}

C语言—for循环_第5张图片

1.24 1.计算n的阶乘 ?  n! = 1*2*3.....*n    n值通过键盘输入

C语言—for循环_第6张图片

/*1,计算n的阶乘 ? ?n! = 1*2*3.....*n ?n值通过键盘输入*/

#include 

int main(void)
{
    int n;

    printf("请输入一个整数来计算其阶乘:");
    scanf("%d",&n);

    if(n < 0)
    {
        printf("阶乘不适用于负数,请输入一个非负整数!\n");
        return 1;
    }

    else if(n == 0)
    {
        printf("0的阶乘是1\n");
        return 0;
    }

    int i;
    int fact = 1;

    for(i = 1;i <= n;i++)
    {
        fact *= i;      //fact *= i就等于fact * i = fact
    }

    printf("%d的阶乘是: %d\n",n,fact);

    return 0;

}

你可能感兴趣的:(c语言,算法,开发语言)