C语言初步(第二周)

目录:1.   有关C的一点补充;

           2.while 与do-while的循环语句(中间插有验证与调试)

                 001.利用循环语句计算数的位数

                 002.借用循环语句做简单的对数运算

                 003.通过“借尸还魂”的手段来保存原始值以待后续使用——将一个三位数倒序输出

                 004.利用循环语句进行火箭倒计时

                 005.绝对不能一次就猜中的猜数游戏!

                 006.猜数游戏

                 007.算平均数

                 008.利用循环进行逆序重排(以数的形式呈现)

                 009.逆序重排(以字符串形式呈现)

           3。随机数

           4.for循环

                 001.只能计算偶数阶乘的程序。。。

                 002.超麻烦的阶乘运算程序

e04e4f8ee2ef42abaff8af1179e1ffe1.jpg

为解决上一页笔记中提到的局限——学习循环:

2.while 与do-while

001.利用循环语句计算数的位数

#include<stdio.h>
int main()
{
    int x;
    printf("请输入一个整数:");
    scanf_s("%d", &x);
    int n = 0;
    while (x > 0) {
        x /= 10;
        ++n;
    }
    printf("%d", n);
    return 0;
}

 有关验证与调试

 

从while到do-while:

002.借用循环语句做简单的对数运算

#include<stdio.h>
int main()
{
    int x;
    int y = 0;
    printf("请输入一个整数:");
    scanf_s("%d", &x);
    int t = x;
    while (x > 1) {
        y++;
        x /= 2;
    }//如果判断条件是x>0,则y的初始值应该为-1
    x = t;
    printf("log2 的 %d 是%d", x, y);
    return 0;
}

003.通过“借尸还魂”的手段来保存原始值以待后续使用——将一个三位数倒序输出(011中就是通过引入新的变量t来保存x的初始值从而使得输出的x为原始值而非始终为1!)

#include<stdio.h>

int main()
{
    int x;
    printf("请输入一个三位的整数:");
    scanf_s("%d", &x);
    int a = 0, b = 0, c = 0;
    a = x;
    b = x;
    c = x;
    a /= 100;
    c %= 10;
    b /= 10;
    b %= 10;
    int t = 0;
    t = c * 100 + b * 10 + a;//将其变为一个数能避免出现如007的现象
    printf("这个数的逆序排序是%d", t);
    return 0;
}

004.利用循环语句进行火箭倒计时

#include<stdio.h>
int main()
{
    int n;
    scanf_s("%d", &n);
    while (n >= 0) {
        printf("%d\n", n);
        n--;//循环体内的两行不能调换,否则先输出n-1,最后输出-1
    }
    printf("发射!\n");
    return 0;
}

005.绝对不能一次就猜中的猜数游戏!

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    srand(time(0));
    int a = rand()%10;
    int n = 0, m = 0;
    int x;
    printf("请输入一个个位数:");
    scanf_s("%d", &x);
    do {
        n++;
        if (x > a) {
            printf("你猜的数大啦\n");
        }
        else if (x < a) {
            printf("你猜的数小捏\n");
        }
        printf("再输入一个个位数:\n");//如果一次猜中,也会让你再输入一个值!
        scanf_s("%d", &x);
    } while (x != a);
    printf("Congratulation!\n");
    printf("你猜的次数是:%d\n", n);
    return 0;
}

006.猜数游戏(可以一次猜中)

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int main()
{
    srand(time(0));
    int a = rand() % 10;
    printf_s("猜数咯!\n");
    int x = 0;
    int count = 0;
    do {
        printf("请输入一个个位数:");
        scanf_s("%d", &x);
        count++;
        if (x > a) {
            printf("你猜的数大啦\n");
        }
        else if (x < a) {
            printf("你猜的数小捏\n");
        }
    } while (x != a);
        printf("Congratulation!\n");
        printf("你猜的次数为%d\n", count);
        return 0;
}

007.算平均数

#include<stdio.h>
int main()
{
    printf("请输入一个不为-1的非负数:");
    int n = 0;
    double sum = 0;
    double number = 0;
    scanf_s("%lf", &number);
    while (number != -1) {
        n++;
        sum += number;
        printf("请再输入一个不为-1的非负数:");
        scanf_s("%lf", &number);
    }
    printf("%f", sum/n);
    return 0;
}

008.利用循环进行逆序重排(以数的形式呈现)

#include<stdio.h>
int main()
{
    printf("请输入一个正整数:");
    int x;
    int a = 0;
    int b = 0;
    scanf_s("%d", &x);
    while (x > 0) {
        a = x % 10;
        b = a+b*10;
        x /= 10;
    }printf("逆序重排后变为:%d", b);
    return 0;
}

009.逆序重排(以字符串形式呈现)

#include<stdio.h>
int main()
{
    printf("请输入一个正整数:");
    int x;
    int a = 0;
    scanf_s("%d", &x);
    while (x > 0) {
        a = x % 10;
        printf("%d", a);//不能换行!
        x /= 10;
    }
    return 0;
}

3.引入随机数

 

 4.for循环

  001.只能计算偶数循环的程序。。。

#include<stdio.h>
int main()
{
    int n;
    printf("请输入一个正整偶数:");
    scanf_s("%d", &n);
    int factor = 0;
    int i = 1;
    while (n > 0) {
        factor = n * (n - 1);
        n -= 2;
        i *= factor;
    }printf("这个数的阶乘是:%d",i);
    return 0;
}

002.通过分类讨论进行阶乘运算(麻烦)

#include<stdio.h>
int main()
{
    int n=0;
    printf("请输入一个正整数:");
    scanf_s("%d", &n);
    int i = 1;
    if(n%2==0){
        while (n > 0) {
            i *= n * (n - 1);
            n -= 2;
        }
    }
    else {
        i *= n;
        n--;
        while (n > 0) {
            i*= n*(n-1);
            n -= 2;
        }
    }
    printf("这个数的阶乘是:%d", i);
    return 0;
}


003.阶乘运算(n!=n*(n-1)*…2*1)

#include<stdio.h>
int main()
{
    int n;
    printf("请输入一个正整数:");
    scanf_s("%d", &n);
    int i = 1;
    while (n > 0) {
        i *= n;
        n--;
    }printf("这个数的阶乘是:%d", i);
    return 0;
}

004.阶乘运算(n!=1*2*…(n-1)*n)

#include<stdio.h>
int main()
{
    int n;
    printf("请输入一个正整数:");
    scanf_s("%d", &n);
    int i = 1;
    int factor = 1;
    while (i<=n) {
        factor *= i;
        i++;
    }printf("%d!=%d", n,factor);
    return 0;
}

005.利用for循环算阶乘(递增)

#include<stdio.h>
int main()
{
    int n;
    printf("请输入一个正整数:");
    scanf_s("%d", &n);
    int factor = 1;
    for (int i = 1; i <= n; i++) {
        factor *= i;
    }printf("%d!=%d", n, factor);
    return 0;
}

006.利用for循环算阶乘(递减)

#include<stdio.h>
int main()
{
    int n;
    printf("请输入一个正整数:");
    scanf_s("%d", &n);
    int t = n;
    int factor = 1;
    for (n; n>0; n--) {
        factor *= n;
    }printf("%d!=%d", t, factor);
    return 0;
}

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值