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是水仙花数\n",num);
        }

    }

}

/*
给一个不多于5位的正整数,要求:求它是几位数并且逆序打印出各位数字。
*/
#include <stdio.h>
void main()
{
    int input,i = 0;

    printf("请输入一个不大多于5位的正整数:");
    scanf("%d",&input);

    while(input != 0)
    {
        printf("%d\n",input % 10);
        i += 1;
        input /= 10;
    }
    printf("这是一个%d位正整数。\n",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\n",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\n",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米.\n",sum);
    printf("第10次反弹%lf米。\n",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只耗子!\n",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\t",i,j,i*j);
        } 

        printf("\n");
    } 

} 

/*
打印出菱形。
       *
      ***
     *****
    *******
   *********
    *******
     *****
      ***
       *
*/

#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("\n");
    } 

    for(i = 0; i < 4; i++)
    {
        for(j = 0; j < i + 1; j++)
        {
            printf(" ");
        }
        for(j = 0; j < 7 - 2 * i; j++)
        {
            printf("*");
        }
        printf("\n");

    } 

} 

/*
打印出空心菱形。
       *
      * *
     *   *
    *     *
   *       *
    *     *
     *   *
      * *
       *
*/

#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("\n");
    }

    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("\n");
    }
}

/*输入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\n",num);

    /*
    for(i = 0; i < 10; i++)
    {
        sum    += scores[i];
    }

    printf("总分是:%d\n",sum);

    scores[10] = 250;
    printf("超出长度的部分:%d\n",scores[10]);

    for(i = 0; i < 10; i++)
    {
        printf("%d\t",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\n",max);
    printf("min = %d\n",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\n",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\n",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("\n");
    }

}

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

时间: 2024-10-24 15:09:38

8.17 课堂练习代码,循环与数组的相关文章

Java--分支语句、循环、数组、控制台输入语句、常用数学函数

**-----本章节-----** 1.分支语句 2.循环 3.数组 4.控制台输入语句 5.部分常用的数学函数 ============================================================== 一分支语句 1.概念 (1)分支语句又称条件语句条件语句使部分程序可根据某些表达式的值被有选择地执行. (2)Java编程语言支持双路 if和多路 switch 分支语句. ===========================================

循环一维数组求最大子数组

题目: 随机出一个一维数组,设该数组为循环数组,求其最大小子数组. 一.设计思路 求最大子数组,就求出最大的连续正子数组. 将数组分为全负和有非负值两种情况.全负求出最大值即可. 在有非负值的情况下,先判断该随机数组的首尾是否相连,即首尾是否都大于等于零.如果首尾相连,则将该一维数组分为首.中.尾三部分,先求出首尾和S1,再求中间最大连续正子数组和S,令S1和S与maxS相比较,求出最大子数组:如果首尾不相连,则直接借鉴前一种情况中部的算法,求最大正子数组S. 二.源代码 1 //刘双渤,刘洪阳

JS实现循环删除数组中元素的方法介绍

这篇文章主要给大家介绍了关于Javascript循环删除数组中元素的几种方法,文中给出了详细的示例代码供大家参考学习,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧. 本文主要跟大家分享了关于Javascript循环删除数组中元素的几种方法,分享出来供大家参考学习,下面来看看详细的介绍: 发现问题 大家在码代码的过程中,经常会遇到在循环中移除指定元素的需求.按照常规的思路,直接一个for循环,然后在循环里面来个if判断,在判断中删除掉指定元素即可.但是实际情况往往不会像预想的那样顺利

KT学算法(二)——循环有序数组查找指定元素

问题描述 一个循环有序的数组是形如:"12,16,18,20,41,100,1,4,6,9" 这样的数组. 问题分析 对于循环有序数组,一种简单的定义是: 循环有序数组是将一个有序数组切成两段,并交换位置得到引用块内容 比如现将1,4,6,9,12,16,18,20,41,100在9和12处切分,得到两段:1,4,6,9和12,16,18,20,41,100,再交换这两段的位置就得到了一开始的循环有序数组. 另一种比较严格的定义是: 对于一个循环有序数组{A1,A2,--An},存在一

js 使用for循环遍历数组

今天写个无聊的东西!for循环的使用!如下:定义a数组,b为伪数组! var a = [1,2,3,0,5,4]; var b = document.getElementsByTagName('li'); //[<li>1</li>,<li>2</li>,<li>3</li>,<li>4</li>,<li>5</li>] 第一种:错误型! for ( var i = 0; i <

JavaScript 中 for in 循环和数组的问题

本文由 伯乐在线 - ElvisKang 翻译,进林 校稿.未经许可,禁止转载!英文出处:adripofjavascript.com.欢迎加入翻译小组. JavaScript的for…in循环用于迭代访问对象中的可枚举(enumerable)属性: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 var tMinus = {     two: "Two",     one: "One",     zero: "Blast

循环删除数组中元素的正确方法

1.循环删除数组中元素的正确方法 提起循环删除数组中的元素,最先想到的就是使用for循环和数组的splice方法来实现(正序循环删除方法),如下代码用来实现删除数组中大于2的元素: 1 let arr = [1, 2, 3, 4, 5, 4, 3, 2, 1]; 2 for (let i = 0, len = arr.length; i < len; i++) { 3 if (arr[i]> 2) { 4 arr.splice(i, 1); 5 } 6 } 7 console.log(arr)

AWK中for循环调用数组解释

以前对于awk中的for循环调用数组一直不是很清晰,通过这个例子你将会对这种方法非常明白. #!/bin/sh echo"" | awk ' BEGIN { a[1]="123" a[2]="456" a[3]="789" } END{ for(i in a) { print i,a[i] } }' 结果:

约瑟夫问题 算法很简单保证每隔人都能看懂用数组实现 利用循环删除数组中的元素

#include<iostream> using namespace std; const int size = 1000; void ArrDel() { int arr[size]; //循环结束标志,一直循环到数组中只剩下最后一个元素结束 int currentNum = size; int count = 0; for (int k = 0; k < size; k++) { arr[k] = k; } //currentNum==1表示数组中只剩下最后一个元素 是循环结束的标志