黑马程序员——c语言基础:循环结构练习

1.while 循环练习

1) 统计从键盘输入的一行字符的个数。

#include <stdio.h>


int main(int argc, const char * argv[]) {

    

    // 定义变量储存字符

    char ch;

    

    // 定义字符个数计数器

    int count = 0;

    

    // 提示用户输入一行字符

    printf("请输入一行字符:\n");

    

    // 接收用户输入的字符

    scanf("%c", &ch);

    

    // 统计字符个数

    while (ch != '\n') {

        count ++; // 计数器+1

        // 继续取下一个字符

        scanf("%c", &ch); // scanf原理:如果缓冲区不为空,不会让用户输入内容,而是直接从缓冲区获取

    }

    

    // 输出字符个数

    printf("字符个数为:%d\n",count);

    return 0;

}


2) while语句计算从1加到100的值。

#include <stdio.h>


int main(int argc, const char * argv[]) {

    

    // 定义变量存放当前用于计算的数和计算结果

    int i = 1;

    int sum = 0;

    

    // 计算从1加到100的值

    while (i <= 100) {

        sum += i;

        i ++;

    }

    

    // 打印计算结果

    printf("1加到100的值为:%d",sum);

    

    return 0;

}


3) 使用while循环实现 w(上) s(下) a(左) d(右) 方向控制以及 q(退出)。

#include <stdio.h>


int main(int argc, const char * argv[]) {

    

    // 定义变量储存用户的命令

    char command;

    

    // 提示用户输入命令

    printf("请输入命令: w. s. a. d. q.退出\n");

    

    // 执行命令

    int flag = 1;

    while (flag) { // 只要flag不为0,就会一直循环

        

        // 接收用户输入的命令

        scanf("%c", &command);


        switch (command) { // 判断用户输入的命令

            case 'w':

            case 'W':

                printf("\n"); //

                break;

            case 's':

            case 'S':

                printf("\n"); //

                break;

            case 'a':

            case 'A':

                printf("\n"); //

                break;

            case 'd':

            case 'D':

                printf("\n"); //

                break;

            case 'q':

            case 'Q':

                printf("程序已退出\n"); // 退出

                flag = 0;

                break;

            default:

                break;

        }

    }

    

    return 0;

}


4) 使用随机数随机产生一个1-1000的数,让用户猜10次,并打印每次猜的结果。

#include <stdio.h>

#include <stdlib.h>


int main(int argc, const char * argv[]) {


    // 定义变量

    int randomNum; // 随机数

    int guessNum; // 用户猜的数

    int times = 1; // 用户当前是第几次输入

    int chance = 9; // 用户还有几次机会

    

    // 产生一个1-1000的随机数

    randomNum = arc4random_uniform(1000) + 1;

    

    // 让用户猜

    while (chance > 0) { // 只要chance大于0,就会一直循环

        // 提示用户输入

        printf("当前是第%d次输入,你还有%d次机会\n", times, chance);

        // 接收用户输入的数

        scanf("%d", &guessNum);

        // 用户输入的数和电脑产生的随机数进行比较

        if (guessNum > randomNum) { // 猜的数比随机数大

            printf("对不起,你猜大了!\n");

        } else if (guessNum < randomNum){ // 猜的数比随机数小

            printf("对不起,你猜小了\n");

        } else { // 猜的数与随机数相等

            printf("恭喜你,你猜对了!\n");

            return 0; // 如果猜对,退出循环

        }

        times ++;

        chance --;

    }

    

    // 如果10次都没猜对

    printf("我靠,10次都没有猜对,你的智商不适合玩这个游戏!\n");

    

    return 0;

}


2.do-while循环

1)计算1+2+3+...+100的结果。

#include <stdio.h>


int main(int argc, const char * argv[]) {

    int i = 1;

    int sum = 0;

    do {

        sum += i;

        i ++;

    } while (i <= 100);

    printf("%d",sum);

    return 0;

}


2)打印100次我爱你

#include <stdio.h>


int main(int argc, const char * argv[]) {

    int i = 1;

    do {

        printf("%d次我爱你\n",i);

        i ++;

    } while (i <= 100);

    return 0;

}


3.for 循环练习

#include <stdio.h>


void test1();

void test2();

void test3();

void test4();

void test5();


int main(int argc, const char * argv[]) {


    test1();

    test2();

    test3();

    test4();

    test5();

    return 0;

}


// 打印出55列的*方阵

void test1(){

    // 打印5

    for (int i = 1; i <= 5; i ++) {

        // 每行打印5颗星

        for (int j = 1; j <= 5; j++) {

            printf("*\t");

        }

        // 打印完5颗星换行

        printf("\n");

    }


}


// 打印出由*排列成的正直角三角形

void test2(){

    // 打印5

    for (int i = 1; i <= 5; i ++) {

        // 每行打印的*数量依次递增1

        for (int j = 1; j <= i; j ++) {

            printf("* ");

        }

        // 打印完一行进行换行操作

        printf("\n");

    }

}


// 打印由*排列成的倒直角三角形

void test3(){

    // 打印5

    for (int i = 0; i < 5; i ++) {

        // 每行的*数量依次递减1

        for (int j = 0; j < 5 - i; j ++) {

            printf("* ");

        }

        // 打印完一行进行换行操作

        printf("\n");

    }

}


// 打印正三角形

void test4(){

    // 定义变量

    int n;

    

    // 提示输入

    printf("请输入一个整数:\n");

    

    // 接收整数

    scanf("%d",&n);

    

    // 打印

    // 打印n+1

    for (int i = 0; i <= n; i ++) {

        // 每行先打印 n - i 个空格

        for (int j = 0; j < n - i; j ++) {

            printf(" ");

        }

        // 每行再打印 2i +1 *

        for (int k = 0; k < 2*i +1; k ++) {

            printf("*");

        }

        // 打印完一行进行换行操作

        printf("\n");

    }

}


// 实现 9 * 9 乘法表

void test5(){

    // 打印9

    for (int i = 1; i <= 9; i ++) {

        // 每行打印的内容

        for (int j = 1; j <= i; j ++) {

            printf("%d*%d=%d ", j, i, j * i); // i行乘以第j

        }

        // 打印完一行进行换行操作

        printf("\n");

    }

}


4.break语句

break语句可用于switch语句和循环语句中,可以使程序跳出switch或循环语句,而执行后面的语句:

void test1(){

    // break用于跳出当前循环

    for (int i = 1; i <= 10; i ++) {

        if (i == 5) { // i = 5 时,跳出循环

            break;

        }

        printf("%d\t",i);

    }

}

例:计算r=1r=10时的圆面积,直到area大于100为止:

#include <stdio.h>

int main(int argc, const char * argv[]) {

    // 定义变量

    double area = 0; // 圆面积

    // 计算圆面积

    for (int r = 1; r <= 10; r ++) {

        area = 3.14 * r * r; // 计算半径为r的圆面积

        if (area > 100) { // 当圆面积大于100时跳出循环

            // 输出结果

            printf("半径为%d的圆的面积为:%.2f",r, area);

            break;

        }

    }

    return 0;

}


5.continue 语句

  continue语句的作用是跳过循环体中剩余的语句而继续下一次。continue语句只用在forwhiledo—while等循环体中,常与if条件语句一起使用,用来加速循环:

void test1(){

    // continue作用:结束本次循环的语句,继续下一次循环

    for (int i = 1; i <= 10; i ++) {

        if (i % 2 == 0) {

            continue;

        }

        printf("%d ",i);

    }

}


例:100~200之间不能被3整除的数输出

#include <stdio.h>

int main(int argc, const char * argv[]) {

    for (int i = 100; i <= 200; i ++) {

        if (i % 3 == 0) {

            continue;

        }

        printf("%d ",i);

    }

    return 0;

}





  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 请写1个支付宝接龙红包程序. 随机产生1-100的随机数,作为红包金额. 让用户不断的去猜,直到猜正确为止.最后发给用户的红包金额是 红包金额/猜得次数. 2. 循环录入5个人的年龄并计算平均年龄,如果录入的数据出现负数或大于100的数,立即停止输入并报错. 3. 实现要求用户一直输入QQ号码和密码,只要不是123456、888888就一直提示要求重新输入,如果正确则提登录成功. 4. 1-100之间不能够被7整除的数的和. 5. 求1-200之间的所有的整数的累加和 6. 求1-100之间6的倍数的个数 7. 输入班级人数,然后依次输入学员成绩,计算班级学员的平均成绩和总成绩 8. 2006年培养学员80000人,每年增长25%,请问按此增长速度,到哪一年培训学员人数将达到20万人?*** 9. 从键盘输入10个数,求出最大数 10. 1000~ 5000之间有多少整数,其各位数字之和为5,分别是哪些数(例如整数2003的各位数字之和为 2+0+0+3 ,等于5)), 并统计满足条件的整数有多少个。 11. 求1-100中 是7的倍数 的数值之和 12. 求1-1000之间的所有的奇数之和 13.猜数字游戏. 随机产生1个1-100之间的数 让用户猜 当用户输入的数比产生的随机数大 就输出 猜大了 并让用户继续输入新的数.。 当用户输入的比产生的随机数小的时候 就输出 猜小了 并且继续猜 当用户刚好输入的就是这个随机数的时候 提示成功 并显示用户猜了多少次. 14. 老师问学生,这道题你会做了吗? 如果学生答"会了(y)",则可以放学. 如果学生不会做(n),则老师再讲一遍,再问学生是否会做了......直到学生会为止,才可以放学. 直到学生会或老师给他讲了10遍还不会,都要放学 15. 写1个程序. 随机的产生1个2位数的加法运算.让用户输入这个运算的结果 然后判断这个结果是否正确. 来10次. 每个人默认有10分. 产生10个加法运算.操作数的范围在0-100之间. 每产生1个加法运算 就让用户输入结果.判断是否正确. 当回答正确的时候就为用户加1分. 错误的时候就扣1分. 当10道题目回答完毕之后 就显示用户得的分数. ***
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值