• C语言中的循环语句练习


    注:练习题目均出自《明解C语言 入门篇》

    一、do语句

    1,求多个整数的和及平均值

    #include<stdio.h>
    int main(void)
    {
        int sum = 0;  //
        int cnt = 0;  //整数个数 
        int retry;  //判断是否继续
        do{
            int t;
            printf("请输入一个整数:");
            scanf("%d",&t);
            sum = sum + t;
            cnt = cnt + 1;
            printf("是否继续?<Yes...0/No...9:");
            scanf("%d",&retry);
        } while(retry == 0);
        
        printf("和为%d,平均值为%.2f。
    ",sum,(double)sum / cnt);
        return 0;
    }

    二、whie语句

    1,递增显示从0到输入的正整数为止的各个整数

    #include<stdio.h>
    int main(void)
    {
        int i,n;
        printf("请输入一个正整数:");
        scanf("%d",&n);
        i = 0;
        while(i <= n)
            printf("%d ",i++);  //i的值在显示之后递增
        printf("
    ");
        
        return 0; 
     } 

    2,编写一段程序,按照升序显示出小于输入值的所有正偶数

    #include<stdio.h>
    int main(void)
    {
        int i,n;
        printf("请输入一个正整数:");
        scanf("%d",&n);
        i = 0;
        while(i <= n){
            i = i + 2;
            if(i < n)  //应先对递增后的值进行判断,看是否越界 
            printf("%d ",i);         
        }
    
        printf("
    ");
        
        return 0; 
     } 

    3,编写一段程序,使之交替显示+和-,总个数等于所输入的整数值

    #include<stdio.h>
    int main(void)
    {
        int num;
        int i=0;
        printf("正整数:");
        scanf("%d",&num);
        while (i<num) {
            if (++i%2)
                putchar('+');
            else
                putchar('-');
        }
        return 0;
    }

    4,逆向显示正整数

    #include<stdio.h>
    int main(void)
    {
        int n;
        do{
            printf("请输入一个正整数:");
            scanf("%d",&n);
            if(n <= 0)
                puts("请不要输入非正整数。");
        }while(n <= 0);
        
        printf("该整数逆向显示的结果是 ");
        while(n > 0){
            printf("%d", n % 10);
            n /= 10;
        }
        puts("");
        
        return 0;    
    }

    三、for语句

    1,编写一段程序,根据输入的整数,循环显示1234567890,显示的位数和输入的整数值相同

    #include <stdio.h>
    int main(void)
    {
            int i,j,n;
            j=1;
            printf("请输入一个整数:");
            scanf("%d",&n);
            for(i=0;i<n;i++) {
                    printf("%d",j);
                    j++;
                    if(j>9)
                            j-=10;
            }
            printf("
    ");
            return 0;
    }

    2,编写一段程序,显示出身高和标准体重的对照表。注:显示的身高范围和间隔由输入的整数值进行控制,标准体重精确到小数点后两位。

    #include <stdio.h>
    int main() {
         int beginHigh = 0, endHigh = 0;
         float weight = 0;
         int margin = 0;
         printf("开始数值(cm):");
         scanf("%d", &beginHigh);
         printf("结束数值(cm):");
         scanf("%d", &endHigh);
         printf("间隔值(cm):");
         scanf("%d", &margin);
         for (int i = beginHigh;i <= endHigh; i+=margin) {
                 weight = (i - 100)*0.9;  //这是一个计算标准体重的公式 
                printf("%d cm		%.2f
    ", i, weight);  // 	代表制表符,相当于按下一次Tab键 
         }
         return 0;
    }

    3,显示输入的整数值的所有约数

    #include<stdio.h>
    int main(void)
    {
        int i,n;
        printf("整数值:");
        scanf("%d",&n);
        for(i = 1;i <= n;i++)
            if(n % i == 0)
                printf("%d ",i);
        putchar('
    ');
        
        return 0; 
     } 

    4,编写一段程序,输入一个整数值,显示该整数值个' * '。每显示5个就进行换行。

    #include<stdio.h>
    int main()
    {
        printf("请输入整数:");
        int a;
        scanf("%d",&a);
        int b=0;
        for(int i=0;i<a;i++)
        {
            if(b==5)
            {
                printf("
    ");
                b=0;
            }
        printf("*");
        b=b+1;
        }    
     } 

     

    四、多重循环

    1,显示九九乘法表

    #include<stdio.h>
    int main(void)
    {
        int i,j;
        for(i = 1;i <= 9;i++){
            for(j = 1;j <= 9;j++)
                printf("%3d",i * j);
            putchar('
    ');
        }
        
        return 0;
     } 

    2,编写一段程序,为九九乘法表增加横纵标题

    #include <stdio.h>
    int main()
    {
        int i, j ;
        //打印第一行
        printf("   |") ;
        for(i = 1; i <= 9; i++)
        {
            printf("  %d", i) ;
        }
        printf("
    ") ;
        //打印第二行
        for(i = 1; i <= 32; i++)
            printf("-") ;
        printf("
    ") ;
        //开始打印99乘法表,每行开头要有行号
        for(i = 1; i <= 9; i++)//
        {
            printf(" %d |", i) ;
            for(j = 1; j <= 9; j++)//
            {
                printf(" %2d", i*j) ;
            }
        printf("
    ") ;
        }
        return 0 ;
    }

    3,画一个长方形

    #include<stdio.h>
    int main(void)
    {
        int i,j;
        int height,width;
        
        puts("让我们来画一个长方形。");
        printf("高:");   scanf("%d",&height);
        printf("宽:");   scanf("%d",&width);
        
        for(i = 1;i <= height;i++) { //长方形有height行 
            for(j = 1;j <= width;j++)  //每行显示width个 
                putchar('*');
            putchar('
    ');  //换行
        }
        return 0;    
     } 

    4,(1)显示直角在左下方的等腰直角三角形

    #include<stdio.h>
    int main(void)
    {
        int i,j,len;
        puts("直角在左下方的等腰直角三角形。");
        printf("边长:");
        scanf("%d",&len);
        
        for(i = 1;i <= len;i++){
            for(j = 1;j <= i;j++)
                putchar('*');
            putchar('
    ');
        }
        
        return 0;
     } 

     

    (2)显示直角在右下方的等腰直角三角形

    #include<stdio.h>
    int main(void)
    {
        int i,j,len;
        puts("直角在左下方的等腰直角三角形。");
        printf("边长:");
        scanf("%d",&len);
        
        for(i = 1;i <= len;i++){
            for(j = 1;j <= len-i;j++)
                putchar(' ');
            for(j = 1;j <= i;j++)
                putchar('*');
            putchar('
    ');
        }
        
        return 0;
     } 

    (3)显示直角在左上方的等腰直角三角形

    #include <stdio.h>
    int main()
     {
        int i,j,len;
        puts("直角在左下方的等腰直角三角形。");
        printf("边长:");
        scanf("%d",&len);
        
         for (int i = 1; i<=len; i++) {
            for (int j = 1; j <=len-i+1; j++) {
                putchar('*');
            }
              putchar('
    ');
    
        }
        return 0;
     }

    (4)显示直角在右上方的等腰直角三角形

    #include <stdio.h>
    int main()
     {
        int i,j,len;
        puts("直角在左下方的等腰直角三角形。");
        printf("边长:");
        scanf("%d",&len);
       
        for (int i = 1; i<=len; i++) {
             for (int j = 1; j <=i; j++) {
                putchar(' ');
            }
            for (int j=1; j<=len-i+1; j++) {
                 putchar('*');
            }
            putchar('
    ');
         }
        return 0;
    }

    5,编写一段程序,输入一个整数,显示出输入整数层的金字塔形状

    提示:第 i 行显示 (i - 1)* 2 + 1 个 ' * '

    #include "stdio.h"
    int main(int argc, char const *argv[])
    {
        int n;
        puts("让我们来描绘一个金字塔。");
        printf("金字塔有几层:"); scanf("%d",&n);
        for (int i = 1;i<=n; i++) {
            for (int j = 1; j<=n-i; j++) {
                putchar(' ');
            }
            for (int j=1;j<=i ; j++) {
                putchar('*');
            }
            for (int j=1; j<i; j++) {
                putchar('*');
            }
        putchar('
    '); 
         }
        return 0;
    }

    金字塔变形(1)

    #include<stdio.h>
    int main()
    {
        int i,j,n;
        puts("让我们来描绘一个金字塔。");
        printf("金字塔有几层:"); scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            for(j=0;j<n-i;j++)
                printf(" ");
            for(j=1;j<2*i;j++)
                printf("%d",i);
            printf("
    ");
        }
        return 0;
    }

    金字塔变形(2)

    #include<stdio.h>
    int main()
    {
        int i,j,n;
        puts("让我们来描绘一个金字塔。");
        printf("金字塔有几层:"); scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            for(j=0;j<n-i;j++)
                printf(" ");
            for(j=1;j<=i;j++)
                printf("%d",j);
            for(j=i-1;j>0;j--)
                printf("%d",j);
            printf("
    ");
        }
    }

    总结

    循环是C语言的基础,所以要扎实练习,孰能生巧。在此列举一些注意事项:

    • 注意区分while语句和do-while语句,前者是先判断后执行,后者是先执行后判断。
    • do语句的循环体至少会执行一次,而while语句的循环体则有可能一次也不会执行。
    • 注意不要在for语句和while语句的()后放置空语句。
    • do语句的循环体,即使是单一语句,也可以用{ }括起来使之成为复合语句(程序块),这样程序会易读。
  • 相关阅读:
    第二十一章 PHP编译安装(centos7)
    第二十章 nginx常见问题
    第十九章 keepalived高可用
    dijkstra
    求逆序对
    A
    P2014 [CTSC1997]选课
    樱花 混合背包
    1401D
    CF1343D
  • 原文地址:https://www.cnblogs.com/OctoptusLian/p/8367151.html
Copyright © 2020-2023  润新知