这个程序会要求用户输入数字,然后对它们进行排序,并显示数组中有多少个三元组。如果我输入 {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
.
关于c++ - 传递函数输出在 C 中不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23031500/