入一个五位数以内的正整数,判断他是一个几位数,请按序输出其各位数字,逆序输出其各位数字。
入一个五位数以内的正整数,完成以下操作:
判断他是一个几位数;
请按序输出其各位数字;
逆序输出其各位数字。
问题分析:把你想要输入的数字串放入一个字符数组中。用for循环正序,逆序输出。
算法设计:strlen()可以求数字串长度。
算法描述:
int main()
{
char a[5];
int m,i;
print(“输入你的数字:\n”);
input(a);
m=strlen(a);
print(“字符串长度:%d\n”,m);
print(“正序输出: “);
for(i=0;i<=m-1;i++)
{
print(”%c “,a[i]);
}
print(”\n”);
print(“逆序输出: “);
for(i=m-1;i>=0;i–)
{
print(”%c “,a[i]);
}
print(”\n”);
}
源程序:
#include<stdio.h>
#include<string.h>
int main()
{
char a[5];
int m,i;
printf(“输入你的数字:\n”);
scanf("%s",&a);
m=strlen(a);
printf(“字符串长度:%d\n”,m);
printf(“正序输出: “);
for(i=0;i<=m-1;i++)
{
printf(”%c “,a[i]);
}
printf(”\n”);
printf(“逆序输出: “);
for(i=m-1;i>=0;i–)
{
printf(”%c “,a[i]);
}
printf(”\n”);
return 0;
}
运行结果图:
算法分析:时间复杂度O(n),也可以利用栈来进行实现,入栈,出栈如下;
#define MAX 100
typedef struct //栈结构体
{
char e[MAX];
int top;
}SeqStack;
int push(SeqStack *s,char ch)//入栈
{
if(s->topMAX-1)
return(0);
s->top++;
s->e[s->top]=ch;
return(1);
}
int pop(SeqStack *s,char *x)//出栈
{
if(s->top-1)
return(0);
else
{
*x=s->e[s->top];
s->top–;
return(1);
}