这个程序将要求用户输入数字,然后对它们进行排序,并显示数组中有多少个三元组。如果我输入{1,2,3,3,3,4,5,3,3,6,7},它将是3个三胞胎。
我不知道我的void triplet(int count, int uin[])
函数中发生了什么;它不起作用。请帮我修好这个。
#include "stdafx.h"
#include <stdio.h>
void sorting(int count, int uin[]);
void triplet(int count, int uin[]);
int uin[30];
int i;
int done;
int count = 0;
int main()
{
for (i = 0; i < 30; i++)
{
printf("plase input the number: ");
done = scanf_s("%d", &uin[i]);
if (done != EOF)
{
count++;
}
else
{
break;
}
}
sorting(count, uin);
triplet(count, uin);
return 0;
}
void sorting(int count, int uin[])
{
int i, j, temp;
for (i = 0; i < count; i++)
{
for (j = 0; j < count - 1; j++)
{
if (uin[i]<uin[j])
{
temp = uin[i];
uin[i] = uin[j];
uin[j] = temp;
}
}
}
}
void triplet(int count, int uin[])
{
int i;
int counter = 0;
for (i = 0; i < count; i++)
{
if (uin[i] == uin[i + 1] && uin[i + 2])
{
counter++;
}
printf("\n%d\n", counter);
}
}
最佳答案
uin[i] == uin[i + 1] && uin[i + 2]
应该是uin[i] == uin[i + 1] && uin[i] == uin[i + 2]
。仔细研究这两个问题,确保你理解它们的区别!
而且,正如Joachim指出的,循环条件应该是i < count - 2
。