C语言—for循环(1)

 for 语句在语法格式上,降低了提供循环结构时,遗忘循环三要素的几率。

 for语句的应用场景:对循环次数预先可以获知的情况,如果预先无法获知次数时,推荐使用while语句
1.当型循环:(while)  特点: 先判断后执行

 2.直到型循环:(do...while)  特点: 先执行后判断

3.提前结束整个循环 (break语句):1. 结束switch...case 分支2. 结束循环
4.提前结束本次循环进入下一次循环,不结束整个循环 (continue 语句):提前结束本次循环进入下一次循环

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

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

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

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

#include <stdio.h>

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为至。

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

#include <stdio.h>

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)

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

#include <stdio.h>

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. 打印乘法表

/*4.打印乘法表*/

#include <stdio.h>

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 <stdio.h>

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;

}

  • 19
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值