問題は以下の通りです。
「入力する整数の個数nとn個の整数を入力した後、何番目の整数かを
入力してその整数が大きい方から何番目の整数かを表示するプログラム。
ただし、以下の要件を満たすこと。
(要件)
整数の配列a[]とその要素数nと順位を知りたい要素の位置idxを引数として、
大きい順の順位を戻り値とする関数rank(int a[], int n, int idx)を定義して
利用する。一番大きな値の順位を1番とする。グローバル変数は使わない。」
一応プログラムを使ったのですがうまくいきませんでした。
入力値として
10
78 82 65 73 88 56 90 92 70 68
6
を入力すると10位というのが出てきてほしいのですが9位という結果が出てきてしまいます。
間違っている点やアドバイスよろしくお願いします。
#include <stdio.h>
int rank(int a[], int n, int idx)
{
int ranking=1;
for(int i=0; i<n; i++){
if(a[i]>a[idx]) ranking++;
}
return ranking;
}
int main(void){
int n, idx;
int a[64];
scanf("%d", &n); //読み込み個数
for(int i=0; i<n; i++){
scanf("%d", &a[i+1]);
}
scanf("%d",&idx); //何番目
printf("順位: %d\n", rank(a,n,idx));
return 0;
}