c类国家分组

c类国家分组,c,C,一组人坐在一个编号为1到N的组中。众所周知,来自相同国家的人坐在一起。 输出是一个整数,表示没有不同的国家。 输入 4(测试用例的数量) 2(组内人数) 1 1(这里有两个来自不同国家的人) 2 13 7 1233 7 7 输出应为 2 无效数据 4 1 我的程序:请告诉我错误在哪里 #include<stdio.h> #include<string.h> int main() { int tcaseno,nopgrp,flag=0; int arr[1000]; int

一组人坐在一个编号为1到N的组中。众所周知,来自相同国家的人坐在一起。 输出是一个整数,表示没有不同的国家。 输入

4(测试用例的数量)
2(组内人数)
1 1(这里有两个来自不同国家的人)
2
13
7
1233
7
7
输出应为
2
无效数据
4
1
我的程序:请告诉我错误在哪里

#include<stdio.h>
#include<string.h>
int main()
{
int tcaseno,nopgrp,flag=0;
int arr[1000];
int count=0,i=0,j=0,t=0;
scanf("%d", &tcaseno);
t=tcaseno;
while(t>0)
{
scanf("%d\n", &nopgrp);
for (i = 0; i < nopgrp;i++)
{
scanf("%d", &arr[i]);
}
for (j = 0; j < nopgrp;j++)
{
if(arr[j]==1)
{
    count++;
}
else if(arr[j]==2)
{
 if(arr[j+1]==2)
 {
    count++;
 }  
 else
 {
    flag=1;
 }
}
else if(arr[j]==3)
{
 if((arr[j+1]==3)&&(arr[j+2]==3))
 {
    count++;
 }  
 else
 {
    flag=2;
 }
}
else if(arr[j]==4)
{
 if((arr[j+1]==4)&&(arr[j+2]==4)&&(arr[j+3]==4))
 {
    count++;
 }  
 else
 {
    flag=3;
 }
}
else if(arr[j]==5)
{
 if((arr[j+1]==5)&&(arr[j+2]==5)&&(arr[j+3]==5)&&(arr[j+4]==5))
 {
    count++;
 }
 else
 {
    flag=4;
 }  
}
else if(arr[j]==6)
{
 if((arr[j+1]==6)&&(arr[j+2]==6)&&(arr[j+3]==6)&&(arr[j+4]==6)&&(arr[j+5]==6))
 {
    count++;
 }  
 else
 {
    flag=5;
 }
}
else if(arr[j]==7)
{
 if((arr[j+1]==7)&&(arr[j+2]==7)&&(arr[j+3]==7)&&(arr[j+4]==7)&&(arr[j+5]==7)&&(arr[j+6]==7))
 {
    count++;
 }
 else
 {
    flag=6;
 }  
}
else if(arr[j]==8)
{
 if((arr[j+1]==8)&&(arr[j+2]==8)&&(arr[j+3]==8)&&(arr[j+4]==8)&&(arr[j+5]==8)&&(arr[j+6]==8)&&(arr[j+7]==8))
 {
    count++;
 }
 else 
 {
    flag=7;
 }  
}
else if(arr[j]==9)
{
 if((arr[j+1]==9)&&(arr[j+2]==9)&&(arr[j+3]==9)&&(arr[j+4]==9)&&(arr[j+5]==9)&&(arr[j+6]==9)&&(arr[j+7]==9)&&(arr[j+8]==9))
 {
    count++;
 }
 else
 {
    flag=8;
 }  
}
else if(arr[j]==0)
{
    flag=9;
}
}

if(flag!=0)
{
printf("Invalid Data");
flag=0;
}
else
{
printf("%d\n",count);
count=0;
}
t--;
}

return 0;
}
#包括
#包括
int main()
{
int tcaseno,nopgrp,flag=0;
int arr[1000];
整数计数=0,i=0,j=0,t=0;
scanf(“%d”和&tcaseno);
t=tcaseno;
而(t>0)
{
scanf(“%d\n”、&nopgrp);
对于(i=0;i
您可以使用另一个
for
循环来简化上述代码。显然,您只是想看看数组中有多少不同的数字

请注意,使用C或学习C的主要原因之一是为了提高效率。因此,
intarr[1000]
有点不合适,因为它分配了4000字节。您可能希望使用
malloc
/
free
简化这一过程

您应该使用
printf
告诉用户要输入什么

我猜了一些你想要达到的目标

int tcaseno, nopgrp, error;
int count, i;
int *arr;
printf("no_test_cases: ");
scanf("%d", &tcaseno);
while(tcaseno > 0)
{
    error = 0;
    count = 1;
    printf("no_people_in_group: ");
    scanf("%d", &nopgrp);
    if(nopgrp > 0 && nopgrp < 1000)
    {
        arr = malloc(nopgrp * sizeof(int));
        printf("Enter %d numbers: ", nopgrp);
        for(i = 0; i < nopgrp; i++)
            scanf("%d", &arr[i]);
        for(i = 1; i < nopgrp; i++)
        {
            if(arr[i - 1] > arr[i])
                error = 1;
            else if(arr[i - 1] != arr[i])
                count++;
        }
        free(arr);
    }
    else
        error = 1;
    if(error)
        printf("Invalid Data\n");
    else
        printf("Result: %d\n", count);
    tcaseno--;
}
inttcaseno,nopgrp,错误;
int计数,i;
int*arr;
printf(“无测试案例:”);
scanf(“%d”和&tcaseno);
而(tcaseno>0)
{
误差=0;
计数=1;
printf(“组中无人员”);
scanf(“%d”和&nopgrp);
如果(nopgrp>0&&nopgrp<1000)
{
arr=malloc(nopgrp*sizeof(int));
printf(“输入%d个数字:”,nopgrp);
对于(i=0;iarr[i])
误差=1;
否则如果(arr[i-1]!=arr[i])
计数++;
}
免费(arr);
}
其他的
误差=1;
如果(错误)
printf(“无效数据”);
其他的
printf(“结果:%d\n”,计数);
特卡塞诺--;
}

请正确缩进代码。机器(编译器)可以读取和编译任何东西,但对于人类来说,它需要在将文本块作为代码读取时有一点意义。提问时,文本区右侧有一个大橙色的“如何设置格式”框。还有一个完整的格式化工具条。还有一个[?]按钮提供格式化帮助。还有一个预览区,显示你的帖子发布时的样子。把你的帖子说清楚,并证明你花了时间这样做,可以提高你得到好答案的机会。
arr[j+1]
arr[j+2]
等可以索引未输入的数据。在
j
循环的最后一次迭代中,他们将对所有未输入的数据进行索引。请描述您的错误。再次出现无效输入,并且againi已编辑请刷新页面
int tcaseno, nopgrp, error;
int count, i;
int *arr;
printf("no_test_cases: ");
scanf("%d", &tcaseno);
while(tcaseno > 0)
{
    error = 0;
    count = 1;
    printf("no_people_in_group: ");
    scanf("%d", &nopgrp);
    if(nopgrp > 0 && nopgrp < 1000)
    {
        arr = malloc(nopgrp * sizeof(int));
        printf("Enter %d numbers: ", nopgrp);
        for(i = 0; i < nopgrp; i++)
            scanf("%d", &arr[i]);
        for(i = 1; i < nopgrp; i++)
        {
            if(arr[i - 1] > arr[i])
                error = 1;
            else if(arr[i - 1] != arr[i])
                count++;
        }
        free(arr);
    }
    else
        error = 1;
    if(error)
        printf("Invalid Data\n");
    else
        printf("Result: %d\n", count);
    tcaseno--;
}