4.3 while编程练习

使用while语句完成下面的题目

练习题

  • 使用while语句完成下面的题目
    1.打印1到10,然后10到1,10只出现一次。 (10分) [编程]
    提示:使用两个while循环
    2.(*)输入一个整数k,然后打印“ok”,打印的次数就是整数的大小。 (10分) [编程]
    提示:i初值为0,循环条件i<10,每次i++那么就循环10次,用输入的整数k取代那个10,就循环k次
    3.打印100(包括100)以内的偶数。 (10分) [编程]
    提示:i每次加1,在循环内部使用一个if语句判断i是不是偶数,是的话打印i
    4.打印100以内7的倍数 (10分) [编程]
    5.(**)输入一个整数k,然后打印出它所有因子。 (10分) [编程]
    import java.util.Scanner;
    提示:在循环内部使用一个if语句,用求余作为条件。
    每个i从1开始,k对i求余,如果是0,说明i是一个因子,打印i。i每次加1直到i等于k-1,因为i等于k不必判断了,因子是不包括本身的。
    6.求1+2+3+…+100的值,并打印出最终的和 (10分) [编程]
    7.(*)循环5次,每次循环输入一个整数,把这个数字赋给整型变量k,最后打印所有k的总和与平均值(两个值打印各占一行,先打印总和再打印平均值)。 (10分) [编程]
    import java.util.Scanner;
    总和与平均值都使用int类型
    提示:把输入语句放到循环内部。
    8.(***)打印所有四位数水仙花数 (10分) [编程]
    四位数水仙花数是这样的一个四位数,它的每个数位的四次方和等于该数字本身。
    即个位数的四次方+十位数的四次方+百位数的四次方+千位数的四次方等于该数本身
    打印所有四位数的水仙花数。
    9.(**)循环次数不确定的循环 (4分) [编程填空]
    import java.util.Scanner;
    重复此行为:输入一个字符c,并打印出“你输入的是X”(X是刚才输入的字符,例如输入字母a,那么打印“你输入的是a”)。
    直到输入’#’才结束(当输入#的时候,没有输出直接结束)。

    提示:输入一个字符,然后循环的条件就是这个字符是否等于’#’,如果不等于那么用“你输入的是X”的格式打印该字符,然后重新要求输入一个字符(也就是循环内有一条输入语句),以此循环。
    public static void main(String[]args){    Scanner scanner=new Scanner(System.in);    char c=scanner.next().charAt(0);    while(        ){                ;        c=scanner.next().charAt(0);    }}
    
    10.(****)输出所有3位“水仙花数”。 (10分) [编程]
    所谓“水仙花数”是指一个3位数,它的每个数位的立方和等于该数字本身。例如153是一个水仙花数,因为153=1*1*1+3*3*3+5*5*5。提示:求个位用对10求余,求百位直接除以100,求十位自行考虑。
    11.(***)输入两个数m和n,输出它们的最大公约数。 (10分) [编程]
    import java.util.Scanner;
    提示:假设输入的两个数字是m和n。两个数字的公约数是指能除它们的数字,例如两个数字是24和36,那么2、3、4都是它们的公约数。这些公约数有一个是最大的,我们要求的就是这个。最大的公约数一定小于等于m和n,为了使循环次数少一点,我们的循环从2开始(因为1能整除任何自然数,不必验证必定能整除m和n)一直到m(用n也一样)结束,另外定义一个变量max作为最大公约数。
    每个i都来验证能不能同时被m和n整除,如果可以那么这个i是一个公约数,把这个i的值赋给max, i逐次递增1。循环结束后max就是最大公约数。
    参考算法:
    1.输入两个数字m和n循环变量i为2,当前最大公约数max初值为1;
    2.如果i能够整除m和n,那么i是一个公约数,把i赋给max(此时直接覆盖掉之前找到的公约数,因为我们要找的是最大的,后面找到的必定更大,所以可以直接覆盖掉),进入第3步;
    3.i++,如果i小于m,回到第2步,否则退出循环,进入第四步
    4.打印max