switch (n) { case 1: { for (i = 1; i < N; i++) { for (j = 0; j < i - 1; j++) { if (sch[i].all_score > sch[j].all_score) { swap(rank2[i], rank2[j]); } } } break; } case 2: { for ( i = 1; i < N; i++) { for (j = 0; j < i - 1; j++) { if (sch[i].male_score > sch[j].male_score) { swap(rank2[i], rank2[j]); } } } break; } case 3:{ for (i = 1; i < N; i++) { for (j = 0; j < i - 1; j++) { if (sch[i].female_score > sch[j].female_score) { swap(rank2[i], rank2[j]); } } } break; }
时间: 2024-04-25 14:27:47 浏览: 16
以下是根据您提供的代码画的流程图:
![switch语句流程图](https://i.imgur.com/P6EGJ8D.png)
注释:该流程图展示了一个带有 switch 语句的程序流程。该程序根据不同的 case 来对不同的数组进行排序,其中使用了嵌套的 for 循环来进行选择排序。最终程序会根据不同的 case 执行对应的排序操作。
相关问题
#include <iostream> using namespace std; int n, m, k; int* aa; int* numm; int* fig; bool* used; bool search(int dep); bool found(); void out(); int main() { while (true) { cin >> n >> m; aa = new int[n]; numm = new int[n]; fig = new int[n]; used = new bool[n]; for (int i = 0; i < n; i++) { cin >> aa[i]; used[i] = false; } for (k = 0; k < n; k++) { if (search(0)) { cout << k << endl; out(); return 0; } } cout << "No Solution!" << endl; } return 0; } bool search(int dep) { if (dep > k) { return found(); } for (int i = 0; i < n; i++) { if (!used[i]) { numm[dep] = aa[i]; used[i] = true; for (int j = 0; j < 4; j++) { fig[dep] = j; if (search(dep + 1)) return true; } used[i] = false; } } return false; } bool found() { int x = numm[0]; for (int i = 0; i < k; i++) { switch (fig[i]) { case 0: x += numm[i + 1]; break; case 1: x -= numm[i + 1]; break; case 2: x = numm[i + 1]; break; case 3: x /= numm[i + 1]; break; } } return (x == m); } void out() { cout << numm[0]; for (int i = 0; i < k; i++) { switch (fig[i]) { case 0: cout << "+" << numm[i + 1]; break; case 1: cout << "-" << numm[i + 1]; break; case 2: cout << "" << numm[i + 1]; break; case 3: cout << "/" << numm[i + 1]; break; } } }将代码变量名更换
#include <iostream>
using namespace std;
int n, m, k;
int* nums;
int* ops;
int* order;
bool* used;
bool search(int dep);
bool found();
void output();
int main() {
while (true) {
cin >> n >> m;
nums = new int[n];
ops = new int[n];
order = new int[n];
used = new bool[n];
for (int i = 0; i < n; i++) {
cin >> nums[i];
used[i] = false;
}
for (k = 0; k < n; k++) {
if (search(0)) {
cout << k << endl;
output();
return 0;
}
}
cout << "No Solution!" << endl;
}
return 0;
}
bool search(int dep) {
if (dep > k) {
return found();
}
for (int i = 0; i < n; i++) {
if (!used[i]) {
order[dep] = i;
used[i] = true;
for (int j = 0; j < 4; j++) {
ops[dep] = j;
if (search(dep + 1)) return true;
}
used[i] = false;
}
}
return false;
}
bool found() {
int x = nums[order[0]];
for (int i = 0; i < k; i++) {
switch (ops[i]) {
case 0: x += nums[order[i + 1]]; break;
case 1: x -= nums[order[i + 1]]; break;
case 2: x = nums[order[i + 1]]; break;
case 3: x /= nums[order[i + 1]]; break;
}
}
return (x == m);
}
void output() {
cout << nums[order[0]];
for (int i = 0; i < k; i++) {
switch (ops[i]) {
case 0: cout << "+" << nums[order[i + 1]]; break;
case 1: cout << "-" << nums[order[i + 1]]; break;
case 2: cout << "" << nums[order[i + 1]]; break;
case 3: cout << "/" << nums[order[i + 1]]; break;
}
}
}
#include <stdio.h> #include <stdlib.h> int main() { enum Color {red,yellow,blue,white,black}; enum Color i,j,k,pri; int n,loop; n=0; for(i=red;i<=black;i++) for(j=red;j<=black;j++) if(i!=j) { for (k=red;k<=black;k++) if((k!=i)&&(k!=j)) { n=n+1; printf("%-4d",n); for(loop=1;loop<=3;loop++) { switch(loop) { case1: pri=i;break; case2: pri=j;break; case3: pri=k;break; default:break; } switch(pri) { case red:printf("%-10s","red");break; case yellow:printf("%-10s","yellow");break; case blue:printf("%-10s","blue");break; case white:printf("%-10s","white");break; case black:printf("%-10s","black");break; default:break; } } printf("\n"); } } printf("\ntotal:%5d\n",n); return 0; }哪里错了
代码中的问题是在第23行,case1应该改为case 1,因为case后面的值应该是一个整数,而不是一个标识符。同样的问题也存在于case2和case3中。修改后的代码如下:
```
#include <stdio.h>
#include <stdlib.h>
int main() {
enum Color {red,yellow,blue,white,black};
enum Color i,j,k,pri;
int n,loop;
n=0;
for(i=red;i<=black;i++)
for(j=red;j<=black;j++)
if(i!=j)
{
for (k=red;k<=black;k++)
if((k!=i)&&(k!=j))
{
n=n+1;
printf("%-4d",n);
for(loop=1;loop<=3;loop++)
{
switch(loop)
{
case 1: pri=i;break;
case 2: pri=j;break;
case 3: pri=k;break;
default:break;
}
switch(pri)
{
case red:printf("%-10s","red");break;
case yellow:printf("%-10s","yellow");break;
case blue:printf("%-10s","blue");break;
case white:printf("%-10s","white");break;
case black:printf("%-10s","black");break;
default:break;
}
}
printf("\n");
}
}
printf("\ntotal:%5d\n",n);
return 0;
}
```