#include <stdio.h> int getline(char s[],int len) { int i=0,c; while((c=getchar())!='\n'&&c!=EOF&&--len>0) s[i++]=c; if(c=='\n') s[i++]='c'; s[i]='\0'; return i; }
reverse(char *p,int n) { char *q,temp; q=p+n-1; while(q<=p) { *p=temp; temp=*q; *q=*p; p++; q--; } } main() { char b[1000]; int q=1000,c,i; c=getline(b,q); reverse(b,c); for(i=0;i<c;i++) printf("%c",b[i]); }
----------------解决方案--------------------------------------------------------
建议作者把关于C语言的函数部分好好看一下,函数的变量与状态是保存于栈空间中,用过就自动删除。 下面是个错误的例子,你可以试着运行一下: #include <stdio.h>
int max(int a,int b) { scanf("%d,%d",&a,&b); if(a>=b) return a; else return b; }
void main() { int a,b,c;
c=max(a,b); printf("%d,%d,%d\n",a,b,c); }
----------------解决方案--------------------------------------------------------
1.
s[i++]='c'; //你自己放的c...
2.
*p=temp;
temp=*q;
*q=*p;
交换次序错了,应该temp=*p; *p=*q; *q=temp;
----------------解决方案--------------------------------------------------------
纠正楼上一下
s[i++]=c;是正确的,因为这里的c是整型,代表字符的ASCII 码值。
第二点是正确
----------------解决方案--------------------------------------------------------
建议作者把关于C语言的函数部分好好看一下,函数的变量与状态是保存于栈空间中,用过就自动删除。 下面是个错误的例子,你可以试着运行一下: #include <stdio.h>
int max(int a,int b) { scanf("%d,%d",&a,&b); if(a>=b) return a; else return b; }
void main() { int a,b,c;
c=max(a,b); printf("%d,%d,%d\n",a,b,c); }
那我的程序里哪个变量是被函数用过删掉的而我又用了一次的
能帮我指出来一下吗
我看不出来,刚学c没多久,太差了我
----------------解决方案--------------------------------------------------------
#include <stdio.h>
int max(int a,int b) { scanf("%d,%d",&a,&b); if(a>=b) return a; else return b; }
void main() { int a,b,c; scanf("%d%d",&a,&b);_____________添上这个应该就没有问题拉吧
c=max(a,b); printf("%d,%d,%d\n",a,b,c); }
----------------解决方案--------------------------------------------------------
好像是传址出了问题
----------------解决方案--------------------------------------------------------
#include <stdio.h> int getline(char s[],int len) { int i=0,c; while((c=getchar())!='\n'&&c!=EOF&&--len>0) s[i++]=c; if(c=='\n') s[i++]='c'; 这部分不要就是对的! s[i]='\0'; return i; }
reverse(char *p,int n) { char *q,temp; q=p+n-1; while(q<=p) { temp=*q; *q=*p; *p=temp; 这也应该改一下! p++; q--; } } main() { char b[1000]; int q=1000,c,i; c=getline(b,q); reverse(b,c); for(i=0;i<c;i++) printf("%c",b[i]); }
[此贴子已经被作者于2005-3-14 8:30:04编辑过]
----------------解决方案--------------------------------------------------------