C学习第三天----循环语句

while循环(计算用户输入的为几位数)

复制代码
#include <stdio.h>
int main()
{
 
int x=0; int n=0; // 获取用户输入的值 printf("请输入任一整数\n"); scanf("%d",&x); //下面几行的作用是防止输入0时位数为0,所以先自增了,即使输入为0n也是1,为了不让后面的出错,x/10是使输入的值少了一位 n++; if(x<0){ //这个if判断的作用是让x取绝对值,能够计算负数的位数 x=-x/10; }else if(x>0){ x/=10; } while(x>0){ x=x/10; n++; } printf("您输入的这是一个%d位数",n); return 0; }
复制代码

do while循环(计算用户输入的为几位数)

复制代码
#include <stdio.h>
int main()
{
    int x=0;
    int n=0;
    
//    获取用户输入的值
    printf("请输入任一整数\n"); 
    scanf("%d",&x);
    
    do{
        x/=10;
        n++;
    }while(x>0);
    printf("您输入的这是一个%d位数",n); 
    
    return 0;
 } 
复制代码

课堂案例

1.计算平均值

复制代码
#include <stdio.h>
int main()
{
//    算平均值
    int num=0;
    int sum=0; 
    int i=0;
    
    while(num!=-1){
//        获取用户输入的数据 
        printf("请输入学生成绩(输入-1退出程序)\n");
        scanf("%d",&num);
        
        sum=sum+num;
        i++;
    } 
    double ave=1.0*(sum+1)/(i-1); //可以1.0×后面的整数,结果就是浮点数了 
    printf("平均值是%f",ave);
    
    return 0;
 } 
复制代码

2.数的逆序

复制代码
#include <stdio.h>
int main()
{
    /*
    思路:取余得到个位数 
    */ 

    int num=12345;
    int di=0; //个位数 
    int ret=0; //结果 
    
    while(num>0){
        di=num%10; //得到了个位数 5 4 3 2 1
        ret=ret*10+di; //得到了每次的结果 5 54 543 5432 54321 
         
        num/=10; //这一步为了让num每次都少一位 
    }
    printf("%d",ret); 
    return 0;
 } 
复制代码

 for循环(代码书写格式)

int i;
for
(i=1;i<=n;i++){ }

 小TIPS:

1.如果有固定次数,用for

2.如果必须执行一次,用dowhile

3.其他情况用while

break接力

复制代码
#include <stdio.h>
int main()
{
    //接力break,本题用接力break的作用是只输出一个符合规范的结果,不全部输出 
    /*
    问题:用1角硬币,2角硬币,5角硬币怎么排列组合出2元 
    */
    int one,two,five;
    int coin=2;
    int change=0;
    for(one=1;one<coin*10;one++){ //coin*10的意思是1元最多是10个1角硬币 
        for(two=1;two<coin*10/2;two++){
            for(five=1;five<coin*10/5;five++){
                if(one+two*2+five*5==coin*10){ //代表一个一角,两个一角,五个一角 
                    change=1;
                    printf("%d个一角硬币%d个两角硬币%d个五角硬币\n",one,two,five);
                    
                    // goto out;  这个goto的作用和那三个break是一样的,out:到哪他就从哪里跳出 
                }
                break; 
            }
            if (change==1){ //这里和下面的作用是一样的,加一个判断条件可以跳出循环 
                break;
            };
        } 
        if (change==1){
                break;
            }
    } 
//out:      从这里跳出 
    return 0;
 } 
复制代码

计算前n项和

复制代码
#include <stdio.h>
int main()
{
    /*
    要求:计算1+1/2+1/3+...+1/n 
    */
    int i;
    int n=0;
    double sum=0.0;
    
    scanf("%d",&n);
    
    for(i=1;i<=n;i++){  
        sum=sum+1.0/i;
    }
    
    printf("%f",sum);
    return 0;
 } 
复制代码

 

posted @   周周周777  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示