缘由:逛某乎的时候,偶遇一篇文章学习的最好方式是以教为学,由此引发自己的思考,决定开始试试。具体详情见此链接[自律]。(https://www.zhihu.com/question/303482683/answer/1062860116)

  • 判断一个任意数的位数
#include <stdio.h>
/* 判断数的位数 */
int main()
{
   
    int num; //用户输入一个人任意数
    int count = 0; //记录位数
    printf("用户输入一个人任意整数:");
    scanf_s("%d", &num);
    if (num < 0) {
   
        num = num * -1;
    }
    do  {
   
        num /= 10;
        count++;
    } while (num > 0);

    printf("这个数的位数是:%d", count);
}

总结:对 / 有了一个新的认识, 依次去掉个位数 从后向前数,计算机与人是很大的不同,计算机处理步骤的,而非关系。

  • 用户随机猜1-100以内的一个数
#include <stdio.h>
#include<math.h>
#include<time.h>
/* 猜数游戏 0-100之间 */
int main()
{
   
	srand(time(0));
	int a = rand()%100+1;   //1-100以内的一个随机数
	int num;
	int count = 0; //记录统计次数
	printf("欢迎来到猜数游戏,请猜一个1-100以内的数:");
	do {
   
		scanf_s("%d", &num);
		count++;
		if (a < num) 
		{
   
			printf("再试试吧,你输入的数大了\n");
		}
		else
		{
   
			printf("再试试吧,你输入的数小了\n");
		}
	} while (a != num);
	printf("恭喜你猜对了,共猜了%d次",count);
}

总结:调用了两个库函数 一个用来调用rand()函数用来产生一个随机数,一个是对时间的调节。% 求余运算很巧妙,%100可以得到一个数的个位与十位,从而得到一个任意的两位数。还有do(){}while();与while(){};的区别,先执行,还是先判断。还有while和do wile以及for的常见适用情况。

  • 输入一个数逆序输出
逆序数  
#include <stdio.h>

/* 逆序输出 */
int main()
{
   
	int digit = 0;   //每一位的数
	int ret = 0;  //逆序后的值
	int num;  //用户输入的值
	scanf_s("%d",&num);
	while (num > 0 )
	{
   
		digit = num % 10;
		num /= 10;
		ret = ret * 10 +digit;
	};
	printf("逆序数为:%d",ret);

}

总结:举个例子来说,输入700之后,输出007还是7这是一个需要注意的地方。做代码考题的这种,在读懂题目的时候,还需要看输入输出这种小地方,还需要注意的一个地方,对初始数据的保护。

  • 判断是不是素数
#include <stdio.h>

/* 判断是不是素数 */
int main()
{
   
	int num;
	int isPrime = 1;
	scanf_s("%d", &num);
	int num1 = num;
	for (int i = 2; i <= num/2; i++)
	{
   
		if (num % i == 0) 
		{
   
			isPrime = 0;
			break;
		}
	}
	if(isPrime == 1)
	{
   
		printf("%d是素数", num1);
	}
	else
	{
   
		printf("%d不是素数", num1);
	}

}

总结:素数,只能被一和本身整除。写代码的过程中要注意反思,代码如何可以做到效率更高。调换语句顺序,循环语句的选择,循环终止条件的设置。

以上就是这次的回顾。