缘由:逛某乎的时候,偶遇一篇文章学习的最好方式是以教为学,由此引发自己的思考,决定开始试试。具体详情见此链接[自律]。(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);
}
}
总结:素数,只能被一和本身整除。写代码的过程中要注意反思,代码如何可以做到效率更高。调换语句顺序,循环语句的选择,循环终止条件的设置。
以上就是这次的回顾。