该代码有以下错误:
1 函数参数指定数组
原因:函数参数无法指定数组,只能指定指针。即使设置为数组,数组的大小会被忽略!
2 gets_s函数缺少参数,未指定缓冲区大小
改正:gets_s(a,7)
3 排序函数序号处理错误
改正:代码如下:
void func(char a[],int nlen)
{
if(nlen<=3) return;//三个或者三个以下无需排了,直接返回
for(int i=1;ifor(int j=i+1;j if(a[i] char tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
int main()
{
char a[9]="";//注意多一个长度,便于字符串显示
gets_s(a,9);//会将回车换行也放进来,要加大容量接收这个
func(a,7);
printf("%s\n",a);//因为最后一个字节必然是0,所以直接显示字符串即可
return 0;
}
编译的时候注意:
项目→属性→常规→字符集→使用多字节字符集
您好这里介绍几个学习C语言必备的东东: 一个开发环境,例如turbo C2.0,这个曾经占据了DOS时代开发程序的大半个江山。但是现在windows时代,用turbo C有感觉不方面,编辑程序起来很吃力,并且拖放,更没有函数变量自动感应功能,查询参考资料也不方便。建议使用Visual C++,这个东西虽然比较大块头,但是一旦安装好了,用起来很方便。 一本学习教程,现在C语言教材多如牛毛,但推荐大家使用《C语言程序设计》谭浩强主编 第二版 清华大学出版社,此书编写的很适合初学者,并且内容也很精到。 除此以外,现在有很多辅助学习的软件,毕竟现在是Window时代了,学习软件多如牛毛,不象我们当初学习,只有读书做题这么老套。我向大家推荐一个“集成学习环境(C语言)”,里边的知识点总结和例程讲解都非常好,还有题库测试环境,据说有好几千题,甚至还有一个