请问如何将字符位置反转并设置循环(更巧妙的方法)
比如以下实例:
首先,提示用户输入一个整数;
然后,将用户输入整数的各位数值反转位置(符号位不变)后,存放到变量result中;
最后,将result的值输出。
例如:假如用户输入:1234,则系统输出:4321;假如用户输入-987650,则系统输出:-56789
以及如何兼顾符号。
不断求余10,余数不断乘以10
#include <stdio.h>
int main()
{
int n,result = 0,flag=1;
scanf("%d',&n);
if(n<0)
{
flag = -1;
n *= -1;
}
while(n>0)
{
result = result * 10 + n%10;
n/=10;
}
printf("%d",result * flag);
}
#include <stdio.h>
#include <math.h>
int reverse_integer(int num) {
int sign = 1;
if (num < 0) {
sign = -1;
num = -num;
}
int result = 0;
int length = log10(num) + 1;
for (int i = 0; i < length; i++) {
result += (num % 10) * pow(10, length - i - 1);
num /= 10;
}
return sign * result;
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
printf("结果:%d\n", reverse_integer(num));
return 0;
}
代码加注释
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num, result = 0; // 定义两个整型变量num和result,用于存储用户输入的整数和反转后的结果
printf("请输入一个整数:"); // 提示用户输入一个整数
scanf("%d", &num); // 读取用户输入的整数并存储到变量num中
while (num != 0) // 当num不等于0时,执行循环
{
result = result * 10 + num % 10; // 将result乘以10并加上num的最后一位数字
num /= 10; // 将num除以10以去掉最后一位数字
}
printf("反转后的整数为:%d\n", result); // 输出反转后的结果
return 0;
}
HPRI:最高位优先编码
BIN:输出得到的是二进制
8条输入线,3条输出线
功能表
低电平为有效电平,在功能表中全部都是用反码表示,所以功能表中的0表示输入的是有效电平。
其中电平高低和二进制之间为负逻辑,1代表低电平,0代表高电平
电平高低与二进制反码之间为正逻辑,1代表高电平,0代表低电平
在该表中,为0时工作,关注点在0而不是1