任务是将维度和数据输入到二维数组中,并确定不重复数字的数量。我尝试了很多事情,所以我请你给我你的指示或提示(想要的指示(如何纠正我的代码。
#include <stdio.h>
#include <stdlib.h>
int protect(int max_size_1 ,int max_size_2 , int current_1,int current_2,const int arr[max_size_1][max_size_2])
{
for(int f1=0;f1<max_size_1;f1++)
{
for(int f2=0;f2<max_size_2;f2++)
{
printf("%d---%dn",arr[current_1][current_2],arr[f1][f2]);
if((f1!=current_1 && f2!=current_2) && arr[current_1][current_2]==arr[f1][f2])
{
return 0;
}
}
}
return 1;
}
int main()
{
int i, j, f1, f2, count=1;
printf("[i][j] = ");
scanf("%d", &i);
int arr[i][i];
for (f1 = 0; f1<i; f1++)
{
for (f2 = 0; f2<i; f2++)
{
printf("a[%d][%d] = ", f1, f2);
scanf("%d", &arr[f1][f2]);
}
}
for (f1 = 0; f1<i; f1++)
{
for (f2 = 0; f2<i; f2++)
{
if (protect(i,j,f1,f2,arr)==1){
count++;}
}
}
printf("nn%d", count/2);
return 0;
}
我相信,您正在尝试将数据存储在二维数组中。在下一步中,对于2 dim数组中的每个值,尝试查找数组中是否存在任何dup条目。不确定您是否需要将数据存储在2维数组中,还有其他优化的方法可以从用户输入中删除重复数据。
我们有n个用户输入想要打印用户输入的数据中没有重复数据的条目数。
假设,如果用户输入是
1, 1
1, 1
答案应该是0。用于输入
1, 2
3, 4
答案应该是4。
可以在代码中看到三个问题
你有两个变量"i〃;以及";j";,这个var中只有一个赋值,j总是0。这使得";保护";函数返回一个1作为每次调用的输出。
计数从1开始,应为0
结果被2分开,不确定为什么需要
#include <stdio.h> #include <stdlib.h> int protect(int max_size_1 ,int max_size_2 , int current_1,int current_2,const int arr[max_size_1][max_size_2]) { for(int f1=0;f1<max_size_1;f1++) { for(int f2=0;f2<max_size_2;f2++) { printf("%d---%dn",arr[current_1][current_2],arr[f1][f2]); if((f1!=current_1 && f2!=current_2) && arr[current_1][current_2]==arr[f1][f2]) { return 0; } } } return 1; } int main() { int i, j, f1, f2, count=0; printf("[i][j] = "); scanf("%d", &i); int arr[i][i]; j = i; for (f1 = 0; f1<i; f1++) { for (f2 = 0; f2<i; f2++) { printf("a[%d][%d] = ", f1, f2); scanf("%d", &arr[f1][f2]); } } for (f1 = 0; f1<i; f1++) { for (f2 = 0; f2<i; f2++) { if (protect(i,j,f1,f2,arr)==1){ count++; } } } printf("nn%dn", count); return 0; }