我是按照b站上的教程学的
我不明白为什么一直会报错,语法也没问题啊,
可以帮忙看看
有语法错误和逻辑错误,语法错误是三个for循环里面的逗号,要改成分号,然后是template那里需要改一下,然后逻辑错误是交换数组元素的那个if那里,要交换数组元素,而不是交换循环变量的值。修改如下:
#include <iostream>
using namespace std;
template <class T>
void sort(T arr[], int len){
for(int i=0;i<len;i++){
int max=i;
for(int j=i+1;j<len;j++){
if(arr[max]<arr[j]){
max=j;
}
}
if(max!=i){
char tempt ;
tempt = arr[i];
arr[i] =arr[max];
arr[max] = tempt;
}
}
}
template <class T>
void print(T arr[],int len){
for(int i=0;i<len;i++){
cout<<arr[i]<<endl;
}
}
void test(){
char arr[] = "saskle";
int m_len = sizeof(arr)/sizeof(char);
sort(arr,m_len);
print(arr,m_len);
}
int main(void){
test();
system("pause");
return 0;
}
那几行中的逗号应该是全角中文的,改成英文的看看
你没发现你这程序根本运行不起来吗?逻辑什么的都不考虑,起码是要能运行的,一堆语法错误,都不用检查的吗?连“using namespace std;”都没写!!!!