读书人

麻烦大家看一个编程初学的。该怎么

发布时间: 2012-05-10 16:02:39 作者: rapoo

麻烦大家看一个编程——初学的。
题目是这样的:编程,输入一长整型数,将其每位偶数数依次取出,构成一个高位仍在高位、低位仍在低位的新数并输出。例:输入87653142,输出8642。
我编了如下程序,但是(1)怎么消除结果前面的0啊(如输入2,结果为0000000002)(2)输入十位数怎么算不出?

[解决办法]

C/C++ code
long int tmp = 0;//多定义一个变量//if(k%2==0)printf("%d",k);if(k%2==0) //替换一句代码    tmp = tmp * 10 + k;//打印放在循环之后printf("%d",tmp);
[解决办法]
#include<stdio.h>
int main()
{
long int x, a, y, j, i;
scanf("%d",&x);
i = 10;
do
{
a = x / i;
i *= 10;
}while(a >= 10);
i /= 10;
for(j = i;j > 0; j /= 10)
{
y = x / j;
x = x % j;
if(y % 2 == 0)printf("%d",y);
}
printf("\n");
}
我是先求出它的位数 然后从开始往下除直到大于0;在vc上面运行过了,
希望可以带给你帮助
[解决办法]
上面的注释把i和j弄混了。。。

C/C++ code
for (k = 1; k < j; k++)            {                i = i * 10;  //比如这里第一个i是4(7是奇数,无视7),j是1,那么i就是从后往前数的第一个数,i就要乘0个10                             //第二个i是6,i是2,那么j就是从后往前数的第二个数,i就要乘1个10, 因为i的真正值是60                             //第三个i是8,i是3,那么j就是从后往前数的第三个数,i就要乘2个10, 因为i的真正值是800                             //...            }
[解决办法]
看下我的代码是否符合楼主的意思
C/C++ code
#include <iostream>#include <string>using std::cout;using std::cin;using std::endl;using std::string;int main(){    string num;        int begin = 0;    cout << "Enter a num: ";    cin >> num;    while (num[begin] == '0' && num[begin] != '\0') // 除去高位上的‘0’    {        begin++;    }    for (int i = begin; num[i] != '\0'; ++i)    {        if (num[i] % 2 == 0)        {            cout << num[i];        }            }        cout << endl;    return 0;} 

读书人网 >C语言

热点推荐