求解,高手进
题目: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(); }