只能用c不用c++解决,不能太复杂

img


,数组解决,越简单越好,速度,感谢,快😄。。192@972akdhdn

#include <stdio.h>

int main()
{
    int nums[105], n = 0, x;
    while (scanf("%d", &x) == 1)
        nums[n++] = x;
    for (int i = 0; i < n; i++)
    {
        int count = 0;
        for (int j = i + 1; j < n; j++)
        {
            if (nums[i] > nums[j])
                count++;
        }
        printf("%d ", count);
    }
    return 0;
}

双循环即可啊

#include <stdio.h>

int main()
{
    int a[105] = {0};
    int n = 0,i,j,count;
    char c;
    while((c=getchar()) != 'q')
    {
        getchar();
        a[n++] = c-'0';
    }
    for(i=0;i<n;i++)
    {
        count = 0;
        for(j=i+1;j<n;j++)
        {
            if(a[i] > a[j])
                count++;
        }
        printf("%d ",count);
    }
    return 0;
}

img

for(int i=0;i<(sizeof(nums) / sizeof(nums [0]);i++)
{
int buf;
buf=nums[i];
nums[i]=0;
for(int q=i+1;q<(sizeof(nums) / sizeof(nums [0]);i++)
{

  if(nums[q]<buf)
  {
      num[i]++;
  }

}
}
return &nums;

解答如下,有帮助请采纳,有问题请回复

img

#include <stdio.h>
int main()
{
    int t[105],p=0;
    int fla=0;
    do
    {
        fla=scanf("%d",&t[p]);
        if(fla==1) p++;
    }
    while(fla);
    for(int i=0;i<p;i++)
    {
        int count=0;
        for(int j=i+1;j<p;j++)
        {
            if(t[j]<t[i])
            {
                count++;
            }
        }
        printf("%d ",count);
    }
    return 0;
}
int nums[105],n=0,i,j,count;
while(scanf("%d",&nums[n++]));
for(i=0;i<n-1;i++){
    count=0;
    for(j=i+1;j<n-1;j++)
        if(nums[i]>nums[j])
            count++;
    printf("%d ",count);
}

试试这个

#include <stdio.h>
#include <string.h>


int main(void)
{
    // 输入数组nums
    puts("请输入数组的元素个数:");
    int n;
    scanf("%d", &n);
    int nums[n], i;
    puts("请输入元素");
    for(i = 0; i < n; i++) 
    {
        scanf("%d", &nums[i]);
    }
    int j;
    for(i = 0; i < n; i++)
    {
        int count = 0;
        int num = nums[i];
        for(j = i + 1; j < n; j++) {
            if(num > nums[j]) {
                count++;
            }
        }
        printf("%d", count);
    }



    return 0;
}

结合网上提供算法思路,供参考:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void Insertone(int* temp, int num, int count, int right) {
    int idx = count;
    while (idx > right) {
        temp[idx] = temp[idx - 1];
        idx--;
    }
    temp[idx] = num;
}

int* countSmaller(int* nums, int numsSize, int* returnSize) 
{
    int i, * retarr, * temp;
    int left = 0, right, mid;
    int count = 0;

    retarr = (int*)malloc(sizeof(int) * numsSize);
    memset(retarr, 0, sizeof(int) * numsSize);

    temp = (int*)malloc(sizeof(int) * numsSize);
    memset(temp, 0, sizeof(int) * numsSize);

    for (i = numsSize - 1; i >= 0; i--) {
        right = count;
        left = 0;
        while (left < right) {
            mid = (left + right) / 2;
            if (nums[i] <= temp[mid]) {
                right = mid;
            }
            else {
                left = mid + 1;
            }
        }
        retarr[i] = right;
        Insertone(temp, nums[i], count, right);
        count++;
    }
    free(temp);
    *returnSize = numsSize;
    return retarr;
}
int main()
{
    int i = 0, nums[106], * retarr, returnsize;
    while (scanf("%d", &nums[i]) == 1) i++;
    retarr = countSmaller(nums, i, &returnsize);
    for (i = 0; i < returnsize; i++)
        printf(i == 0 ? "%d" : " %d", retarr[i]);
    return 0;
}