伪君子


私信TA

用户名:lbj

访问量:92951

签 名:

我觉得吧,能实现就好^_^

等  级
排  名 46
经  验 12169
参赛次数 0
文章发表 23
年  龄 20
在职情况 学生
学  校 山西工程技术学院
专  业

  自我简介:

个人博客:https://lbjheiheihei.xyz 微信公众号:伪君子的梦呓

题目描述:

给出一个不多于 5 位的整数,要求:

1、求出它是几位数 

2、分别输出每一位数字 

3、按逆序输出各位数字,例如原数为 321,应输出 123

输入:

一个不大于5位的数字

输出

一共三行,第一行:位数 

第二行: 用空格分开的每个数字,注意最后一个数字后没有空格 

第三行: 按逆序输出这个数

样例输入:

12345

样例输出:

5

1 2 3 4 5

54321


解题思路:



先定义一个数组用来存放每一位数字,再定义一个 n 作为输入的数,接着定义一个 number 来记录是几位数。


定义一个 for 循环,n % 10 的值赋给 num[],这样就可以获取得最后一个数;n = n / 10 向前进位,n 是没有小数位的。此时 num[] 这个数组里面的数字和输入的顺序是相反的。


再定义一个 for 循环,倒过来输出 num[],记住用空格分开的每个数字,注意最后一个数字后没有空格。


最后按照 num[]的顺序输出,也就是逆序输出。




参考代码:



#include<iostream>
using namespace std;
int main()
{
	int num[5];  //定义一个有 5 个元素的数组
	int n;
	int number = 0; //记录数位
	cin >> n;  //获取输入的数
	for (int i = 0; i < 5; i++) {  //
		if (n == 0) break;  //如果输入的数为 0 则退出这个循环
		else {
			num[i] = n % 10;  //获取最后一位数,num[0] 为最后一个数,num[1] 是倒数第二个数
			n = n / 10;  //n 向前进 1 位,无小数点
			number++;
		}
	}
	cout << number << endl;  //输出数位
	for (int i = number - 1; i >= 0; i--) {
		if (i != 0) {  //如果 num[i] 不是最后一个数,则加一个空格
			cout << num[i] << " ";
		}
		else cout << num[i];  //输出最后一个数
	}
	cout << endl;  //换行
	for (int i = 0; i < number; i++) {
		cout << num[i];  //按照 num[i] 顺序输出
	}
	return 0;
}

本地运行结果如下图:Project4_2018-08-06_17-37-27.png

 

0.0分

114 人评分

  评论区

#include<iostream>
using namespace std;
void f(int t)
{
	if (t > 0 && t < 10)
	{
		cout << t<<" ";
    }
	else
	{
		f(t / 10);
		cout <<t%10<< " ";
	}

}
int main()
{
	system("color 03");
	int n,sum=0,t,a,b,r,q,m;
	cin >> n;
	t = n;
	r = n;
	for (int i = 1; i <= t; i++)
	{
		a = n % 10;
		n = n / 10;
		sum = sum + 1;
		if (n < 10)break;
	}
	sum = sum + 1;
	cout << sum << endl;
	f(n);
	cout << endl;
	for (int i = 1; i <=r; i++)
	{
		q= t % 10;
		t= t / 10;
		cout << q;
		if (t<=0)break;
	}
	
	
}
在这个里面的递归函数怎么只能出个1啊,放在别的项目里却能正常输出1 2 3 4 5
2023-11-24 18:48:52
c++新手建议看看这个,比较好理解awa
#include <iostream>
#include <cmath>
using namespace std;
int main(){
    int n;
    cin>>n;
    int k=n,a=0;
    while (k){
        k/=10;
        a++;
    }
    cout<<a<<endl;
    int b[a]={0};
    for (int i=0; i<a; i++){
        b[i]=n/pow(10,(a-i-1));
        n-=b[i]*pow(10,a-i-1);
        cout<<b[i]<<' ';
    }
    cout<<endl;
    for (int i=a-1; i>=0; i--)
        cout<<b[i];
    return 0;
}
2023-11-18 23:16:16
#include<iostream>
#include<string>
using namespace std;
int main()
{
    string num;
    cin >> num;

	int len = num.length();
	cout << len << endl;
	
	for (int i = 0; i < len; i++) {
		cout << num[i] << " ";
	}
	cout << endl;

	string new_num;
	for (;len >= 0; len--) {
		new_num.append(1,num[len]);
	}
	cout << new_num << endl;
}
我这个结果没问题啊
2023-11-04 15:45:26
判断数组长度是不是有问题,你写的是当n为0就输出位数,但是还有后面的数字没有判断,就比如100,你取整为0,那100是1位数?
2023-09-28 17:06:12
#include <iostream>

using namespace std;
void figure(int n)
{
    int count=0;
    while(n!=0){n/=10;count++;}
    cout<<count<<endl;
}
void sep(int n)
{
    int a1,a2,a3,a4,a5;
    a1=n%10;
    a2=n/10%10;
    a3=n/100%10;
    a4=n/1000%10;
    a5=n/10000%10;
    cout<<a5<<a4<<a3<<a2<<a1<<endl;
}
void rev(int n)
{
    int a1,a2,a3,a4,a5;
    a1=n%10;
    a2=n/10%10;
    a3=n/100%10;
    a4=n/1000%10;
    a5=n/10000%10;
    cout<<a1<<a2<<a3<<a4<<a5<<endl;
}
int main()
{
    int x;
    cin>>x;
    figure(x);
    sep(x);
    rev(x);
    return 0;
}
2023-06-20 10:22:14
#include<stdio.h>

int main()
{
	int x;
	int y;
	int num;
	scanf("%d", &x);
	int z = x;
	for(y=0;z!=0;y++){
		z=z / 10;	
	}printf("%d\n", y);

	int mask = 1;
	int v = x;
	int n = x;

	while (v > 9) {
		v = v / 10;
		mask = mask * 10;
	}
	do {
		int d = x / mask;
		printf("%d ", d);
		x = x % mask;
		mask=mask / 10;
	} while (x > 0);
	printf("\n");
	while (n > 0) {
		num=n%10;
		printf("%d", num);
		n=n / 10;
	}

	return 0;
}
2022-10-28 11:47:07
为何不用函数(递归)?
2022-01-03 10:15:09
#include<iostream>
#include <math.h>
using namespace std;
int main()
{
    int a, b, i,temp, t, j;
    cin >> a;
    t = a;
    for (i = 0; t != 0; i++)
    {
        t = t / 10;
    }
    cout << i << endl;
    for (temp=i; temp != 0; temp--)
    {
        b = pow(10, temp - 1);
        b = (a / b) % 10;
        printf("%d ", b);
    }
    putchar('\n');
    for (j = 0; j != i; j++)
    {
        b = pow(10, j);
        b = (a / b) % 10;
        printf("%d", b);
    }
    return 0;
}
2021-12-19 17:36:10