C语言
输入有五位数也有四位数
输出只有四位数而且要倒过来
(例如:输入1234 输出4321;
输入12345 输出4321)
请问这种怎么写啊
1、如果可以以字符串的形式读入数字的话,可以将数字以字符串的形式读入字符数组,然后从字符数组第四个字符位置逆序输出;
2、如果以整数的读取输入的数字,读取整数后,则可以判断其是否为五位数,如果是的,则除以10去除个数数字,保留前四位数字,然后在逐个打印其末尾的个位数,打印后再除以10,直到其等于0.
代码如下:
#include <stdio.h>
#include <string.h>
int main(void){
// 1. 以字符数组的形式
char chs[10];
printf("请输入一个四位数或五位数:");
gets(chs); // 将输入的数字以字符串的形式读入字符数组
int i;
printf("倒序输出前四位数为:");
// 从存储了数字的字符数组 第四个字符位置,开始逆序输出数字字符。
for(i=3;i>=0;i--){
printf("%c",chs[i]);
}
// 2.以整数的形式
int num;
printf("\n\n请输入一个四位数或五位数:");
scanf("%d",&num); // 以整数的形式读入数字到int变量num中
printf("倒序输出前四位数为:");
// 从存储了数字的字符数组 第四个字符位置,开始逆序输出数字字符。
if(num>=10000){ //如果为五位数,则除以10,去除个位数,保留五位数的前四位
num/=10;
}
while(num!=0){ // 如果此数没有被除到0,则一直打印其个数数字,以实现逆序打印
printf("%d",num%10); // 打印 此数个位数字
num/=10; // 此数除以10,去除个位数字
}
return 0;
}
参考GPT和自己的思路:这个问题可以通过将输入的数字转为字符串,再倒序遍历字符串来实现。具体的步骤如下:
读取输入的数字,可以使用 scanf 函数。
判断该数字的位数,可以使用 log10 函数。
将数字转换为字符串,可以使用 sprintf 函数。
遍历字符串,倒序输出即可实现倒序输出。