c++ - 传递函数输出在 C 中不正确

标签 c++ c arrays

这个程序会要求用户输入数字,然后对它们进行排序,并显示数组中有多少个三元组。如果我输入 {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/

相关文章:

c++ - 是否可以使用循环对其所有类型执行类方法

c++ - 将 unicode(带 BOM)字符串转换为 ASCII std::string

c - 格式化字符数组中的文件输入文本?

arrays - Powershell调用Github API : ConvertFrom-Json pipeline mystery

javascript - 将数组从 javascript 发送到 php 然后将其写入文件

c++ - C-LinkedList Append Function, with Bad Memory Address 错误

c++ - boost program_options 自定义验证

C++ Win32——COM 方法 : equivalent C declaration

c - 释放队列的第一个元素时的 SIGTRAP

ruby - 用于配对两个数组元素的快速 Ruby 方法/算法