#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;
}
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;
解答如下,有帮助请采纳,有问题请回复
#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;
}