我的节目一直在苦苦挣扎。我试图在function1中设置的数组中找到水平对。我的目标是在另一个函数中更改原始数组。然后处理该数组以找到水平对。
发生的一个问题是当我运行程序时,结果为零。另一个问题是函数1中的 gcc warning ,警告:指针和整数之间的比较。另一个问题是另一个 gcc警告(由**标记)警告:传递' function1'的参数1来自不兼容的指针类型。
我感谢任何帮助,作为初学者,我花了几个小时来解决这个问题,并试图找到解决方案,但尝试使用指针并使用 struct 和 typedef 没有工作。 :(
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void function1 (int letter1[][16]);
void function2 (int letter2[][16]);
int main ( void )
{
int letter_array [13][16];
printf("\n \t\t Hello!");
printf("\n This program will create a random selection of 180 upper-case"
" characters. \n");
**function1(&letter_array);**
function2(letter_array);
return ( 0 ) ;
}
void function1 (int letter1 [][16])
{
int i, z;
srandom((unsigned)time(NULL));
for(i=0; i<=11; i++)
{
for(z=0; z<=14; z++)
{
letter1 [i][z] = random( )%26+65;
printf("%c ", letter1 [i][z]);
}
printf("\n");
}
return ;
}
void function2 (int letter2 [][16])
{
int a,b;
int m=0;
for( a = 0; a <= 11; a++)
{
for( b = 0 ; b <= 14; b++)
{
if (letter2 == (letter2 + 1))
m++;
}
}
printf("\nThe number of horizontal pairs of characters"
" are: %d", m);
return ;
答案 0 :(得分:2)
只需从参数中删除&符号&
。
更改
function1(&letter_array);
到
function1(letter_array);
编辑: 也改变
if (letter2 == (letter2 + 1))
到
if (letter2[a][b] == (letter2[a][b+1]))
答案 1 :(得分:1)
发生警告是因为您将指向数组[] [16]的指针传递给function1而不是数组本身。这可以通过删除&amp;:
来解决function1(letter_array);
由于主函数末尾的return语句,程序返回0。