アプリ版:「スタンプのみでお礼する」機能のリリースについて

c言語の問題を教えてください。
double型配列x[10]にキーボードから10個の数値を入力し、その後、すべての値を昇順(小さい順)に 表示するプログラムを作成せよ。という問題なのですが、小さい順に並び替えるときにどのようにプログラムを書けばいいのかわかりません。できればプログラムの全体をみせてほしいです。よろしくお願いいたします。

A 回答 (3件)

#include <stdio.h>


#include <stdlib.h>

int comp_func(const void *a, const void *b) {
 if (*(double*)a > *(double*)b) {
  return 1;
 } else if (*(double*)a < *(double*)b) {
  return -1;
 } else {
  return 0;
 }
}

int main(void) {
 double x[10];
 char s[15];
 for (int i = 0; i < 10; i++) {
  scanf("%14s%*[^\n]", s);
  x[i] = strtod(s, NULL);
 }
 qsort(x, 10, sizeof(double), comp_func);
 for (int i = 0; i < 10; i++) {
  printf("%lf ", x[i]);
 }
 printf("\n");
 return EXIT_SUCCESS;
}
    • good
    • 0

if(num[i]>num[i+1])


{
tmp=num[i];
num[i]=num[i+1];
num[i+1]=tmp;
}
    • good
    • 0

「配列を小さい順に並べ替える」には、


「配列の隣同士を比較して、左側が小さかったら入れ替える」関数(←これを仮にswapと名付けます。)を作成して、それを配列の左端から順に行えばいいことになります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!