cf手游cdk怎么获得:我刚学C,还望高手指点,请给出这道题的算法,谢谢.

来源:百度文库 编辑:高考问答 时间:2024/04/28 13:04:19
给一个不多于5位的正整数.要求:1.求出它是几位数.2.分别打印出每一位数字.3.按逆序打印出各位数字,例如:原数为321,应输出123.
我刚学到选择结构,你们写的我都看不懂.我是是超新手.不好意思.

#include <stdio.h>
main()
{
int a,n=0,s=1,temp;
printf("请输入你的数值:\n");
scanf("%d",&a);
for(int i=a;i!=0;i=i/10)
{
n++;
}
temp=n;
while(temp>1)
{
s=s*10;
temp--;
}
printf("位数是: %d\n",n);
temp=a;
printf("顺序输出是:");
for(int j=n;j>0;j--)
{
printf("%d ",temp/s);
temp=temp%s;
s=s/10;
}
temp=a;
printf("\n倒序输出是:");
for(int k=1;k<=n;k++)
{
printf("%d ",temp%10);
temp=temp/10;
}
printf("\n");

}

具体代码我就不说了,我只讲讲思路
先输入一个符合要求的数字
判断它是几位数时,可以用SWITCH看看他处于那个区间,例如1000~9999的判断为四位正整数。
然后将它从INT转化为字符串型的
用一个单字符型指针指向该字符串的首地址
char * pwork = &str;
第一个字符 = *(pwork+1)
类推

#include "stdio.h"
#include "conio.h"
#include "string.h"
void Strrev(char *p)
{
if(*p)
{
Strrev(p+1);
putchar(*p);
}
}
int main()
{
int i;
char str[6];
long num; /*在TC下,五位数超出了int的数据表示范围*/
puts("输入一个数:");
scanf("%ld",&num);
ltoa(num,str,10);
printf("数据为%d位数。\n数据的各位的数分别是:",strlen(str));
for(i=0;str[i];printf("%c ",str[i]),i++);
puts("\n转置后的数据为:");
Strrev(str);
return 0;
}

如一楼所说.但愿你有所收获.

看来高手还是很多的嘛*^_^*

呕耶~我是来学习滴~
不错不错