写一函数,根据成绩,对包含有n个学生成绩的数组进行排序。
输入输出示例:
【输入】80 76 92 83 100 70 60【输出】60 70 76 80 83 92 100
【输入】-1【输出】invalid input
代码如下
```c++
#include <stdio.h>
using namespace std;
#define N 7
int main() {
int t;
int array[N];
for (int a = 0; a < N; a++) {
scanf_s("%d", &array[a]);
if (array[a] <= 0)
{
printf("invalid input");
}
else
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < N; j++) {
if (array[i] > array[j]) {
t = array[i];
array[i] = array[j];
array[j] = t;
}
}
}
}
for (int c = 0; c < N; c++) {
printf("%3d ", array[c]);
}
return 0;
}
输出结果为
输入
11
22
33
44
55
6
6
-858993460 -858993460 -858993460 6 6 11 33
如何解决?
终于看明白了。你这个都还没输入好,就else里面开始比较了,这样也不是不行,但是没输入后的,里面个数就不N了
是否想实现这种功能,供参考:
#include <stdio.h>
#define N 50
int main() {
int t,k,i=0;
int array[N];
while(1) {
t = scanf("%d", &array[i]);
if (t != 1 || (getchar())==EOF)//ctrl + z 结束输入
break;
else if (array[i] < 0){
printf("invalid input\n");
continue;
}
else{
if(i > 0){
for(k=0;k < i;k++){
if(array[k] > array[i]){
t = array[k];
array[k] = array[i];
array[i] = t;
}
}
}
}
i++;
}
for ( k = 0; k < i; k++) {
printf("%3d ", array[k]);
}
return 0;
}
#include <stdio.h>
using namespace std;
int N= 7;
int main()
{
int t;
int array[N];
int a=0;
char ch;
while(scanf("%d", &array[a++])==1&&(ch=getchar())!='\n')
{
}
N=a;
for (int a = 0; a < N; a++)
{
if (array[a] <= 0)
{
printf("invalid input");
}
}
for (int i = 0; i < N; i++)
{
for (int j = i + 1; j < N; j++)
{
if (array[i] > array[j])
{
t = array[i];
array[i] = array[j];
array[j] = t;
}
}
}
for (int c = 0; c < N; c++)
{
if(array[c]>=0)
printf("%3d ", array[c]);
}
return 0;
}