c语言中将字符串存在数组中,就是
int a[20];
gets(a);
这样输入没问题,再输出字符串也是对的,但是要是按整数输出数组a,输出的不是对应字符的asc2码,是乱七八糟的数字,即printf("%d %d %d",a[0],a[1],a[2]);这样我就没法对字符串排序了...那些乱七八糟的数字是什么?是地址吗?要是地址的话,我在比较的时候用if(&a[i]>&a[j])也不行。。。应该怎么弄?那个题的要求是把字符串存在数组里,然后按asc2码对字符串中的有效字符降序排列,有效字符是什么??急~~~~
谢谢~~~~
“把字符串存在数组里”你理解错误了,数组不一定是“数的组合”,数组只不过是一段连续的存储空间。
所以如果是:
char a[20];//这就是字符串a,里面的内容才是字符;
所以如果是:
char a[20];//这就是字符串a,里面的内容才是字符;
温馨提示:答案为网友推荐,仅供参考
第1个回答 2009-12-25
这个不会出现你说的问题吧,输出地是正常的ASCII码的值。比较的时候直接用if(a[i]>a[j])就可以啊……(我用visual C++编译器和turbo C/C++3.0测试通过!)
至于有效字符就是指非空字符,也就是'\0'字符之前的字符。
至于有效字符就是指非空字符,也就是'\0'字符之前的字符。
第2个回答 2009-12-25
这个问题可能是你输入字符串的时候有空格或者回车键,这些是被当做字符存入数组的,所以输出时,他们也会按照ASC码输出的
第3个回答 2009-12-25
gets(a);把你输入的数作为一个串放到数组中了,printf也把它解释为一个串,即分别是从a[0],a[1],a[2]开始的串
试一下使用循环逐个输入 ?
试一下使用循环逐个输入 ?