求教一道题
c++吧
全部回复
仅看楼主
level 1
xudepeng10 楼主
#include<string.h>
#include<iostream.h>
void main()
{
void fun(char *s);
char *a= "abcdefgi";
int k;
fun(a);
cout<<a;
}
void fun(char *s)
{
int x,y;
char c;
for (x=0,y=strlen(s)-1;x<y;x++)
{
c=s[y];
s[y]=s[x];
s[x]=c;
}
}
为什么不能运行??
原题在
2013年05月12日 14点05分 1
level 1
xudepeng10 楼主
2013年05月12日 14点05分 2
level 1
其实这个题自己仔细分析都能弄得出来,第一次循环时,把a[0]的值交换成i,这时a[9]的值为a,第二次循环时把a[1]的值又和a[9]的值进行交换,所以a[1]的值就是a,答案选B
2013年05月12日 17点05分 3
level 10
char *a = "abcdefgi";
这样定义的字符串是常量字符串,是不能修改的,应该改成
char a[] = "abcdefgi";
则是可以修改的
建议选择国外的经典书籍来学习,这种书会把你误了的。首先,里面的东西都已经很过时了,像函数声明放到主函数、使用旧式的.h的头文件、不规范的主函数格式,包括上面说的那种致命错误,这种书看了不如不看,会给你养成很多坏习惯
2013年05月13日 01点05分 4
这是我们的考试题……不是书……
2013年05月13日 04点05分
level 1
void main()
{
void fun(char *s);
}
能运行才怪
2013年05月13日 04点05分 5
level 1
另外你自定义函数里面 内存非法操作 字符串常量
2013年05月13日 04点05分 6
level 11
所有的元素都跟最后一个元素进行交换,这样一趟下来,最后一个元素必然是原来的倒数第二个元素,利用排除法就知道是B,其他的不用管。
2013年05月13日 04点05分 7
level 1
char *a = "abcdefgi";指针a指向的是字符常量区,字符常量区是不能被修改的,可以改成a[]= "abcdefgi";
2013年05月13日 05点05分 8
1