• 8.17 课堂练习代码,循环与数组


    /*
    打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。
    例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
    */
    #include <stdio.h>
    
    void main()
    {
        int num,ge,shi,bai;
        for(num = 100; num < 1000; num++)
        {
            ge = num % 10;
            shi = num / 10 % 10;
            bai = num / 100;
            
            if(ge*ge*ge + shi*shi*shi + bai*bai*bai == num)
            {
                printf("%d是水仙花数
    ",num);    
            }
                    
        }
        
        
    }
    
    
    
    /*
    给一个不多于5位的正整数,要求:求它是几位数并且逆序打印出各位数字。
    */
    #include <stdio.h>
    void main()
    {
        int input,i = 0;
        
        printf("请输入一个不大多于5位的正整数:");
        scanf("%d",&input);
        
        while(input != 0)
        {
            printf("%d
    ",input % 10);
            i += 1;
            input /= 10;    
        }
        printf("这是一个%d位正整数。
    ",i);
    }
    
    
    
    /*
    有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
    */
    
    #include <stdio.h>
    
    void main()
    {
        double sum = 0, zi = 2, mu = 1;
        int i = 0;
        
        for(; i < 20; i++)
        {
            sum += zi / mu; 
            zi = zi + mu;
            mu = zi - mu;    
        }
        
        printf("前20项之和是%lf
    ",sum);
        
    }
    
    
    
    /*
    任意输入一个正整数,求出其各位数字之和
    */
    
    #include <stdio.h>
    
    void main()
    {
        int input,sum = 0;
        
        printf("请输入一个正整数:");
        scanf("%d",&input);
        
        while(input != 0)
        {
            sum += input % 10;
            input /= 10;     
        }
        printf("sum = %d
    ",sum);
        
    }
    
    
    
    /*
    一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,
    共经过多少米?第10次反弹多高?
    */
    
    #include <stdio.h>
    
    void main()
    {
        double hight = 100,sum;
        int i = 0;
        
        for(; i < 9; i++)
        {
            sum += hight;
            hight /= 2;    
        }
        
        sum += 100;
        printf("第10次落地就经过%lf米.
    ",sum);
        printf("第10次反弹%lf米。
    ",hight / 2);
    }
    
    
    /* 假设一对耗子每个月都可以生一对小耗子。小耗子生长3个月后,从第4个月开始也就能够生小耗子。 问:假设所有的耗子都不死的话,那么20个月后一共有多少只耗子? */ #include <stdio.h> void main() { int old = 2,first = 0,second = 0,third = 0; int i= 0; for(;i < 20;i++) { old = old + third; third = second; second = first; first = old; } printf("第20个月一共有%d只耗子! ",old + first + second + third); } /* 打印一个5*5的乘法表 */ #include <stdio.h> void main() { int i,j; for(i = 1; i <= 5; i++) { for(j = 1; j <= i; j++ ) { printf("%d * %d = %d ",i,j,i*j); } printf(" "); } } /* 打印出菱形。 * *** ***** ******* ********* ******* ***** *** * */ #include <stdio.h> void main() { int i,j; for(i = 0; i < 5; i++) { for(j = 0;j < 4 - i;j++) { printf(" "); } for(j = 0; j < 2 * i + 1; j++) { printf("*"); } printf(" "); } for(i = 0; i < 4; i++) { for(j = 0; j < i + 1; j++) { printf(" "); } for(j = 0; j < 7 - 2 * i; j++) { printf("*"); } printf(" "); } } /* 打印出空心菱形。 * * * * * * * * * * * * * * * * */ #include <stdio.h> void main() { int i,j; for(i = 0; i < 5; i++) { for(j = 0; j < 4 - i; j++) { printf(" "); } printf("*"); for(j = 0; j < 2 * i - 1; j++) { printf(" "); } if(i != 0) { printf("*"); } printf(" "); } for(i = 0; i < 4; i++) { for(j = 0; j < i + 1; j++) { printf(" "); } printf("*"); for(j = 0; j < 5 - 2 * i; j++) { printf(" "); } if(i != 3) { printf("*"); } printf(" "); } } /*输入10个同学的成绩,输出及格的个数*/ #include <stdio.h> void main() { int i = 10; int scores[10]; int num = 0; for(i = 0; i < 10; i++) { printf("请输入第%d位同学的成绩:",i + 1); scanf("%d",&scores[i]); } for(i = 0; i < 10; i++) { if(scores[i] >= 60) { num++; } } printf("%d ",num); /* for(i = 0; i < 10; i++) { sum += scores[i]; } printf("总分是:%d ",sum); scores[10] = 250; printf("超出长度的部分:%d ",scores[10]); for(i = 0; i < 10; i++) { printf("%d ",scores[i]); } */ } /*求数组中的最大,最小,和冒泡程序*/ #include <stdio.h> void main() { int array[10] = {0}; int i,j,max,min,tmp; //输入 for(i = 0; i < 10; i++) { printf("请输入第%d个数:",i+1); scanf("%d",&array[i]); } //最大最小 max = array[0]; min = array[0]; for(i = 1; i < 10; i++) { if(max < array[i]) { max = array[i]; } if(min > array[i]) { min = array[i]; } } printf("max = %d ",max); printf("min = %d ",min); //冒泡排序 for(i = 0; i < 10; i++) { for(j = 0; j < 9; j++) { if(array[j] > array[j + 1]) { tmp = array[j]; array[j] = array[j + 1]; array[j + 1] = tmp; } } } //打印 for(i = 0; i < 10; i++) { printf("%5d",array[i]); } } 数组训练 #include <stdio.h> void main() { int scores[2][3]; int i,j,sum = 0; for(i = 0; i < 2; i++) { for(j = 0; j < 3; j++) { printf("请输入第%d位同学第%d科的成绩:",i+1,j+1); scanf("%d",&scores[i][j]); } } for(i = 0; i < 2; i++) { sum = 0; for(j = 0; j < 3; j++) { sum += scores[i][j]; } printf("第%d个人的平均分是:%lf ",i+1,sum / 3.0); } for(j = 0; j < 3; j++) { sum = 0; for(i = 0; i < 2; i++) { sum += scores[i][j]; } printf("第%d门课的平均分是:%lf ",j + 1,sum / 2.0); } #include <stdio.h> void main() { int scores[5][6] = {0}; int i,j; for(i = 0; i < 5; i++) { for(j = 0; j < 6; j++) { printf("请输入第%d组第%d位同学的成绩:",i+1,j+1); scanf("%d",&scores[i][j]); } } for(i = 0; i < 5; i++) { printf("第%d组成绩:",i+1); for(j = 0; j < 6; j++) { printf("%4d",scores[i][j]); } printf(" "); } }
  • 相关阅读:
    最大子矩阵和(二维矩阵转一维DP)
    最长公共子序列+编辑距离
    过河(DP)
    墙壁涂色(DP)
    数组分组(DP)
    一维消消乐(DP)
    逃生(地图上的dp)
    kuangbin专题专题十一 网络流 POJ 3436 ACM Computer Factory
    网络流算法模板
    Codeforces Round #614 (Div. 2) C
  • 原文地址:https://www.cnblogs.com/wangshichuan/p/3918740.html
Copyright © 2020-2023  润新知