思路(一):直接用int类型做,判断位数时,当然用循环从小到大循环,用"%"(模)的方式判断;你的第二第三个问题一起做比较好,用求模和整除的方式分割这个数,然后把分割的每一位数累加到另一个int类型上。
思路(二):用字符串做,用库函数strlen很容易判断位数,也很容易输出每位数,以及倒序;其实倒序更容易,只要倒着输出就行,不一定要重新放到另一个字符串中。
思路(三):用递归函数做,用一个int作为计数,一个char类型的用来逐个放置,控制好结束条件,即输入“\n”时结束,然后自然容易做到那3点。
其实,以上逆序的方法都可以换成对称的思路……最简单的反序输出,就是把数组反序输出。只需要从最大下标开始,向0下标循环输出就可以了。
比如将字符串(字符数组)反序输出的代码如下:
void reverse_output_str(char str)
{
int len = strlen(str) -1;//得到最大下标
while(len >= 0)printf("%c", str[len--]); //反序输出直到str[0]
}其它类的反序输出,也都可以归结为类似的情况。先把要输出的正序输出到一个数组,然后把这个数组反序输出。
比如把一个10进制数反序输出,即输入1234,输出4321,就可以采用类似的方式:
void reverse_int_output(int a)
{
char buf[20];
sprintf(buf, "%d", a);//将a转为字符串
reverse_output_str(buf);//调用刚才的函数反序输出。
}#include <stdioh>//递归法倒叙输出!
#include <stringh>
void main()
{
void reverse(char s,int i,int j);
char s[100];
gets(s);
reverse(s,0,strlen(s)-1);
puts(s);
}
void reverse(char s,int i,int j)
{
char c;
if(i>=j)
return;
else
{
c=s[i],s[i]=s[j],s[j]=c;
reverse(s,++i,--j);
}
}
这个不止可以3个数哦!int main(int argc, char argv[])
{
int input;
int ret,num;
printf("Input a int:");
scanf("%d",&input);
for(;;)
{
num=input%10;
input=input/10;
printf("%d",num);
if(input<10)
{
printf("%d\n",input);
break;
}
}
return 0;
}
例子输出。当然实际上,你要把printf的部分保存起来。
Input a int:1234
4321
Press any key to continue
----------------
Input a int:234289701
107982432
Press any key to continuee<stdioh>
main()
{
int a,b,c,e;
printf("请输入一个三位正整数: ");
scanf("%d",&a);
b=a%10;
c=(a/10)%10
e=a/100;
printf("%d%d%\n",b,c,e);
}
就可以拉#include<stdioh>
void main()
{
int a,b,c,d,e,f,g,h,sum;
scanf("%d",&a);
if(a>=1000&&a<=9999)
{ b=a/1000;
c=a%10;
d=a/1000;
e=a/100;
f=e%10;
g=a/10;
h=g%10;
sum=c1000+f10+h100+d;
printf("转换后:%d",sum);
}
else
printf("此数不为4位数");
}#include "stdioh"
int main()
{
int n,i,j,a;
scanf("%d",&n);
if(n%2==1)//如果输入的是奇数
{
for(i=0;i<4;i++) //输出是4行
{
for(j=0;j<=i;j++) //每行输出i+1个数
{
printf("%d",n);
if(++n==10) n=1;//输出9后,下一个是1
}
printf("\n");//输出1行后换行
}
}
else//输入的是偶数
{
for(i=0;i<4;i++)//输出4行
{
for(j=0;j<=i;j++)//每行输出i+1个数
{
printf("%d",n);
if(--n==0) n=9; //输出1后直接跳到9
}
printf("\n");
n+=2i+3;
//以4为例,输出第1行后,n变成3,所以要加上20+3变成6
//输出第2行后,n变成4,加上21+3变成9
if(n>=10) n-=9;
//输出第3行后,n变成6,加上22+3变成13,减去9后变成4
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)