这个c语言题怎样编程,哪位高手赐教下

给一个不多于5位的正整数,要求:
1.求出他是几为数
2.分别输出每一位数字
3.按逆序输出各位数字,例如原数为321,应输出123

main()
{
int a,b,c,d,e,f;
printf("请输入一个正五位数:\n");
scanf("%d",&a);
if(a>99999||a<0)
printf("无效输入.");
else if(a>9999)
{
b=a%10;
c=(a/10)%10;
d=(a/100)%10;
e=(a/1000)%10;
f=(a/10000)%10;
printf("五位数:\n每位数字是:%d,%d,%d,%d,%d:\n逆序输出是:%d,%d,%d,%d,%d:\n",f,e,d,c,b,b,c,d,e,f);
}
else if(a>999)
{
b=a%10;
c=(a/10)%10;
d=(a/100)%10;
e=(a/1000)%10;
printf("四位数:\n每位数字是:%d,%d,%d,%d:\n逆序输出是:%d,%d,%d,%d:\n",e,d,c,b,b,c,d,e);
}
else if(a>99)
{
b=a%10;
c=(a/10)%10;
d=(a/100)%10;
printf("三位数:\n每位数字是:%d,%d,%d:\n逆序输出是:%d,%d,%d:\n",d,c,b,b,c,d);
}
else if(a>9)
{
b=a%10;
c=(a/10)%10;
printf("两位数:\n每位数字是:%d,%d:\n逆序输出是:%d,%d:\n",c,b,b,c);
}
else
printf("一位数:\n每位数字是:%d:\n逆序输出是:%d:\n",a,a);
}
上面那位大虾好像不是用C编程的,我写一个C的,运行过.如果楼主不能运行,把中文换成拼音再试一下.
温馨提示:内容为网友见解,仅供参考
第1个回答  2007-04-29
#include <iostream>
#include <algorithm>
#include <string>
#include <iterator>
using namespace std;

int main()
{
string sNum;
cin >> sNum;

if(sNum.find_first_not_of("0123456789") != string::npos)
{
cout << "Invalid symbol inputed!\n";
return 0;
}
if(sNum.size() > 5)
{
cout << "Number of digits must no more than 5!\n";
return 0;
}

cout << "This number has " << sNum.size() << " digits.\n";
cout << "They are: ";
copy(sNum.begin(), sNum.end(), ostream_iterator<char>(cout, " "));
cout << "\nReverse: ";
copy(sNum.rbegin(), sNum.rend(), ostream_iterator<char>(cout));
}

或者

#include <stdio.h>
#include <math.h>

int Digit(int iNum)
{
return iNum > 0 ? 1 + Digit(iNum/10) : 0;
}

int Reverse(int iNum)
{
return iNum > 0 ? (iNum % 10) * pow(10.0, Digit(iNum)-1) + Reverse(iNum/10) : 0;
}

void Print(int iNum)
{
int i = pow(10.0, Digit(iNum)-1);

for(; iNum > 0; iNum %= i, i /= 10)
printf("%d ", (iNum / i));
printf("\n");
}

int main()
{
int iNum;
scanf("%d", &iNum);

if(iNum > 99999 || iNum < 0)
{
printf("Invalid input!\n");
return 0;
}

printf("This number has %d digits.\n", Digit(iNum));
Print(iNum);
printf("Reverse: %d\n", Reverse(iNum));
}

...用C语言写个程序,输出 A ABA ABCBA ABCDCBA 怎么输出???这些字母...
就是 for(j=1;j<=2*i-1;j++)这句话里面的j你换一个字母,不要用j,在重新定义一个字母换进去,我试过了,可以的

用C语言编程:定义一个宏,将大写字母变成小写字母。请高手赐教。
如果确定只是大写字母的话,那么直接这样就行#define LOWER(c) c+=32在程序中调用LOWER(c) c是字符. 当然为了保险起见,我加了个判断. 具体见下面的程序: #include <stdio.h>#define LOWER(c) ((c >= 'A' && c <= 'Z') ? (c+=32) : c)int main(){ char c;c=getchar();...

...为一个线性表的程序,初学者,不太会,麻烦高手赐教,谢谢!
改进:由于A、B是排好序的,先把A丢进C里,再拿B元素一个个往里查找插入。这么做要频繁移动元素,如果线性表不是链表的话,开销很大。再改进:从A、B中各拿一个元素出来,比较后把小的放进C里,再从刚才拿出元素的那个表里再拿个元素出来,再比较,把小的放进C里,重复这样的操作,直到A、B...

!跪求!c语言用“*”代替密码和密码判断的源代码。我快崩溃了。。。请...
include <stdio.h> char *InputPassword(int len) { int i=0;int Key=0;char *Password; Password=(char *)malloc(len+1);while(1) { Key=getch();\/*处理回车键*\/ if (Key==13) { Password[i]='\\0';break;} else { \/*处理BackSpace键*\/ if (Key==8) { if (i>0) { ...

...1\/3+1\/5-1\/7+1\/9...)的前n项之和 求高手赐教【简单通俗一点...
int main(void){ int i,j=1,n;double pi=0;printf("please input n:\\n");scanf("%d",&n);\/\/输入项数n for(i=1;2*i-1<=n;i=i+2) \/\/每次递增2 { pi=pi+j*(1.0\/i);\/\/第n项的公式 j=-j;} pi=pi*4;\/\/乘以系数4 printf("%lf\\n",pi);\/\/输出圆周率PI return 0;...

C语言编程实现时间片轮转算法,尽量写得简单易懂,谢谢
void del(struct pro* p) \/\/删除p的下一个节点 { struct pro *tmp;tmp=p->next;p->next=tmp->next;free(tmp);return;} int getCount(struct pro *head,int time) \/\/察看在time之前到达但未移动到运行队列的进程数量 { int count=0;struct pro *s,*t;s=head;t=s->next;whil...

C语言中的最小半径圆问题,求高手赐教。
循环双层循环,都是到N的,然后求出所有两个不同点之间的距离,找出最长的距离的两个点,然后求出这两个点的中心点坐标,再寻找 N个点中与此中心坐标距离最小的,也是求距离实现。

C语言中scanf的问题,请各路高手不吝赐教
第一个问题,scanf不可能控制只允许输入什么不允许输入什么,它只能在输入结束后判断输入是否合乎格式。第二个问题,方法很多,比如你是int数组,那么每个数据之间用空格或者回车分开就可以实现分别保存了。

C语言的小问题 由键盘输入一个小写英文字母,先输出该字母及ASCII码值...
include"math.h"void main(){ char ch;printf("input a small letter:");do scanf("%d,&ch);while(!(ch>'a' && ch<'z')) ; \/*确保输入的是小写字母*\/ printf("%c %d %c %d",ch,ch,ch-32,ch-32); \/*按要求输出*\/ } ...

两个关于C语言的问题。
1、在x=3的状态下进入do循环,第一次运行printf语句,首先使 x -= 2 ,x的内容减掉2,输出x的当前值,所以输出了1。接着进行循环条件判断,先进行 --运算,使x的内容变为0,!0的计算结果为真,循环继续进行。第二次运行printf首先 x-=2 即 x = 0-2,使x的内容变为-2,并被输出。当x...

相似回答
大家正在搜