求解,高手进
题目:1.输入一个小于8位的数
2.倒序
3.每一位数加5(大于10的除10取余数)
4.首尾互换
5.输出所得数据
例如:输入2008
倒序:8002
每一位数加5(大于10的除10取余数):3557
首尾互换:7553
输出:7553
高手写出c代码啊。谢谢拉
程序代码:/********************************************************************* ]
题目:
1.输入一个小于8位的数
2.倒序
3.每一位数加5(大于10的除10取余数)
4.首尾互换
5.输出所得数据
例如:输入2008
倒序:8002
每一位数加5(大于10的除10取余数):3557
首尾互换:7553
输出:7553
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bccn人才济济,这点小问题高手们是不屑于于作的,让偶小小菜鸟
抛砖引玉,希望能再出现高深的代码。
程序写到现在,出现个问题,想了很久,想不出来对策:数组越界问题。
我试过用EOF以及“*”结束,可都出现问题,现在输入多于8个数字,也会运
行。请哪位指点迷津,谢谢。
由于是菜鸟,所以算法稀松平常,大家担待则个。
*********************************************************************/
#include<stdio.h>
#include<string.h>
void daoxu(char *p,int n) /* 倒序函数 */
{
char *q;
char ch;
q=p+n-1;
while(q>p)
{
ch=*p;
*p=*q;
*q=ch;
p++;
q--;
}
}
void jia5(char *p,int n) /* 加5函数 */
{
int i;
for(i=0;i<n;++i)
{
*(p+i)=(*(p+i)+5);
if(*(p+i)>=58) /* 如果ascII码大于数字10*/
*(p+i)-=10; /* 当前值减去10 */
}
}
void jiaohuan(char *p,int n) /* 首尾交换函数 */
{
char ch;
ch=*p;
*p=*(p+n-1);
*(p+n-1)=ch;
}
int main(void) /*********主函数********/
{
char a[8];
int n;
printf("请输入待转换的数字:\n");
gets(a);
n=strlen(a);
daoxu(a,n);
printf("倒序:%s\n",a);
jia5(a,n);
printf("每一位加5:%s\n",a);
jiaohuan(a,n);
printf("首尾交换:%s\n",a);
getch();
}
程序代码:/********************************************************************* ]
题目:
1.输入一个小于8位的数
2.倒序
3.每一位数加5(大于10的除10取余数)
4.首尾互换
5.输出所得数据
例如:输入2008
倒序:8002
每一位数加5(大于10的除10取余数):3557
首尾互换:7553
输出:7553
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
感谢4#朋友的指点,程序已经更改过来。谢谢了。
*********************************************************************/
#include<stdio.h>
#include<string.h>
#define X {char c;c=getchar()!='\n';}
void daoxu(char *p,int n) /* 倒序函数 */
{
char *q;
char ch;
q=p+n-1;
while(q>p)
{
ch=*p;
*p=*q;
*q=ch;
p++;
q--;
}
}
void jia5(char *p,int n) /* 加5函数 */
{
int i;
for(i=0;i<n;++i)
{
*(p+i)=(*(p+i)+5);
if(*(p+i)>=58) /* 如果ascII码大于数字10*/
*(p+i)-=10; /* 当前值减去10 */
}
}
void jiaohuan(char *p,int n) /* 首尾交换函数 */
{
char ch;
ch=*p;
*p=*(p+n-1);
*(p+n-1)=ch;
}
int main(void) /*********主函数********/
{
char a[10];
int n;
printf("请输入待转换的数字,程序将数字限定为前8位有效:\n");
gets(a);
n=strlen(a);
if(n>8) /* 限定数字位数 */
{
n=8;
a[8]='\0';
}
daoxu(a,n);
printf("倒序:%s\n",a);
jia5(a,n);
printf("每一位加5:%s\n",a);
jiaohuan(a,n);
printf("首尾交换:%s\n",a);
getch();
}