C语言学习笔记

循环

数数几位数

# include<stdio.h>

int main()
{
    int x;
    int n = 0;
    printf("请输入您的数");
    scanf("%d",&x);
    n++;
    x/=10;

    while(x>0){
        n++;
        x/=10;
    }
        printf("%d\n",n);
        return 0;
} 

do-while循环

在进入循环的时候不做检查,而是在执行 完一轮循环体的代码之后,再来检查循环 的条件是否满足,如果满足则继续下一轮 循环,不满足则结束循环

# include<stdio.h>

int main()
{
    int x;
    int n = 0;
    printf("请输入您的数");
    scanf("%d",&x);
     do {
        n++;
        x/=10;
         }while(x>0);
  
        printf("%d\n",n);
        return 0;
} 

do-while循环后面括号后要有“;”

do-while循环和while循环很像,区别是在循环体执行结束的时候才来判断条件。也就是说,无论如何,循环都会执行至少一 遍,然后再来判断条件。与while循环相同 的是,条件满足时执行循环,条件不满足时结束循环。

循环计算

算log_2^x

#include <stdio.h>
 int main()
 {
     int x;
     int ret=0;
 
     scanf("%d",&x);
     int t=x;//储存变量x
     while(x>1){
         x/=2;
        ret++;
     } 
     printf("log2 of %d is %d",t,ret);
     return 0;
 }

猜数游戏

  • 让计算机来想一个数,然后让用户来猜,用户没输入一个数,就告诉他是大了还是小了,直到用户猜中为止,最后还要告诉用户他猜了多少次。

思路

  1. 计算机随机想一个数,记在变量number里;
  2. 一个负责计次数的变量count初始化为0;
  3. 让用户输入一个数字a;
  4. count递增(加—);
  5. 判断a和number的大小关系,如果a大,就输出 “大”;如果a小就输出“小”;
  6. 如果a和number是不相等的(无论大还是小),程 序转回到第3步;
  7. 否则,程序输出“猜中”和次数,然后结束。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 int main()
 {
     srand(time(0));
     int number = rand()%100+1;
     int count = 0;//猜了多少次
     int a = 0;
     printf("我已经想好了一个1到100之间的数.");
    do{
        printf("请猜猜这个1到100之间的数:");
        scanf("%d",&a);
        count++;
        if(a>number){
            printf("你猜的数大了。"); 
        } else if(a<number){
            printf("你猜的数小了。");
        }

    } while(a!=number); 
     printf("太好了,你用了%d次就猜到了答案。\n",count);
     return 0;
 

算平均数

  • 让用户输入一系列的正整数,最后输入-1 表示输入结束,然后程序计算出这些数字 的平均数,输出输入的数字的个数和平均数。
  • 算法
  1. 初始化变量sum和count为0;
  2. 读入number;
  3. 如果number不是-1,则将number 加入sum,并将count加1,回到 2;
  4. 如果number是-1,则计算和打印 出sum / count (注意换成浮点来 计算)。
#include <stdio.h>

int main()
{    int number;
     int sum = 0;
     int count = 0;
 
 do{
     scanf("%d",&number);
     if (number !=-1){
         sum += number;
         count++;
     }
    } while(number !=-1);

    printf("%f\n",1.0*sum/count);
 
     return 0;
}

#include <stdio.h>

int main()
{    int number;
     int sum = 0;
     int count = 0;
 
     scanf("%d",&number);
     while (number !=-1){
         sum += number;
         count++;
        scanf("%d",&number);
     }

    printf("%f\n",1.0*sum/count);
 
     return 0;
}

数的逆序

整数的分解

  • 一个整数是由1至多位数字组成的,如何分解出整数 的各个位上的数字,然后加以计算
  • 对一个整数做%10的操作,就得到它的个位数;
  • 对一个整数做/10的操作,就去掉了它的个位数;
  • 然后再对2的结果做%10,就得到原来数的十位数了,依此类推。
#include <stdio.h>

int main()
{
    int x;
    scanf("%d",&x);
    int digit;//表示数的每一位
    int ret = 0; //结果 

    while(x>0) {
        digit = x%10;//取出输入数的最后一位 
        x /= 10;//把数的最后一位丢掉 
        ret = ret*10 + digit; //结果*10+输入数的最后一位 
    }
    printf("%d",ret);
     return 0;
}

改进700→007结尾0的处理

#include <stdio.h>

int main()
{
    int x;
    scanf("%d",&x);
    int digit;//表示数的每一位
    int ret = 0; //结果 

    while(x>0) {
        digit = x%10;//取出输入数的最后一位 
        printf("%d",digit) ;
        x /= 10;//把数的最后一位丢掉 
        ret = ret*10 + digit; //结果*10+输入数的最后一位 
    }
  //  printf("%d",ret);
     return 0;
}

参考资料

程序设计入门——C语言\_浙江大学\_中国大学MOOC(慕课) (icourse163.org)

最后修改:2023 年 10 月 21 日
如果觉得我的文章对你有用,请随意赞赏