01 #include<bits/stdc++.h> 02 using namespace std; 03 const int maxn = 50; 04 void getnext(char str[]) { 05 int l = strlen(str), i, j, k, temp; 06 k = l - 2; 07 while (k - 1 >= 0 && str[k] > str[k + 1]) k--; 08 i = k + 1; 09 while (i < l && str[i] > str[k]) i++; 10 temp = str[k]; 11 str[k] = str[i - 1]; 12 str[i - 1] = temp; 13 for (i = l - 1; i > k; i--) 14 for (j = k + 1; j < i; j++) 15 if (str[j] > str[j + 1]) { 16 temp = str[j]; 17 str[j] = str[j + 1]; 18 str[j + 1] = temp; 19 } 20 return; 21 } 22 int main() { 23 char a[maxn]; 24 int n; 25 cin >> a >> n; 26 while (n > 0) { 27 getnext(a); 28 n--; 29 } 30 cout << a << endl; 31 return 0; 32 }
1. 若输入的字符串 a 是升序的,那么无论 n 为多少,第 13 行的循环都不会执行(执行的条件不满足)。( )
2. 若输入的 n 等于 2 ,对于第 27 行,第一次执行完和第二次执行完的字符串最多只有 2 个字符位置不同。( )
3. 程序执行完第 7 行时,第 k + 1 个字符到第 l - 1
4. 程序执行完第 12 行时,第 k + 1 个字符到第 l - 1 个字符的值是不严格递减的。( )
5. 若输入的字符串有 x 个字符并且是严格降序的,输入的 n 等于 1 ,则第 16 ~ 18 行会执行( )次
6. 若输入的字符串有 x 个字符并且都相同,输入的 n 等于 1 ,则第 16 ~ 18 行会执行( )次