C 矢量位置的内容分析
我需要比较向量上的所有数字是否都等于零。如果不是,请打印一条消息 我想指出地址的内容,但我怎么做呢 我的代码:C 矢量位置的内容分析,c,C,我需要比较向量上的所有数字是否都等于零。如果不是,请打印一条消息 我想指出地址的内容,但我怎么做呢 我的代码: #include <stdio.h> #include <stdlib.h> int main (void) { int linha_user=0, coluna_user=0; float *identidade[linha_user][coluna_user]; int linha, coluna; int se=0,sim
#include <stdio.h>
#include <stdlib.h>
int main (void)
{
int linha_user=0, coluna_user=0;
float *identidade[linha_user][coluna_user];
int linha, coluna;
int se=0,sim=0,nao=0;
printf("Digite o número de linhas desejado na matriz:\n");
scanf("%d", &linha_user);
printf("Digite o número de colunas desejado na matriz:\n");
scanf("%d", &coluna_user);
for (linha=0;linha<linha_user;linha++)
{
for (coluna=0;coluna<coluna_user;coluna++)
{
printf("Digite o número desejado para a posição %d,%d\n",linha,coluna);
scanf("%d", &identidade[linha][coluna]);
}
}
for (linha=0;linha<linha_user;linha++)
{
for (coluna=0;coluna<coluna_user;coluna++)
{
if (*identidade[linha][coluna] != 0)
{
se=nao;
}
else
{
se=sim;
}
}
}
if (se == nao)
{
printf("Nem todos os elementos são iguais a zero\n");
}
else
{
printf("Todos os elementos são iguais a zero.\n");
}
#包括
#包括
内部主(空)
{
int linha_user=0,coluna_user=0;
float*identidade[linha_user][coluna_user];
科鲁纳林哈国际酒店;
int-se=0,sim=0,nao=0;
printf(“Digite o número de linhas desejado na matriz:\n”);
scanf(“%d”和linha_用户);
printf(“Digite o número de colunas desejado na matriz:\n”);
scanf(“%d”、&coluna_用户);
对于(linha=0;linha您的两个对象sim
和nao
在您的程序中具有相同的0
值。如果您想在以下方面区分它们,它们需要具有不同的值(如0
和1
):
if (se == nao)
然后,当你观察到一个非零元素时,你需要在for
循环中中断。你的两个对象sim
和nao
在你的程序中具有相同的0
值。如果你想在以下方面区分它们,它们需要有不同的值(如0
和1
):
if (se == nao)
然后,当您观察到非零元素时,您需要在for
循环中中断。请在注释、消息和标识符名称中使用英语
我用GNUindent
重新嵌入了您的代码,然后用GCC-Wall-Wextra
编译了它(使用GCC4.8),得到了
walter.c: In function 'main':
walter.c:22:4: warning: format '%d' expects argument of type 'int *', but argument 2 has type 'float **' [-Wformat=]
scanf ("%d", &identidade[linha][coluna]);
^
walter.c:49:1: warning: control reaches end of non-void function [-Wreturn-type]
}
你的声明呢
int linha_user=0, coluna_user=0;
float *identidade[linha_user][coluna_user];
这肯定是错误的。您正在声明一个零大小的浮点指针矩阵(如果以后使用a.g.scanf
或某些赋值设置linha\u user
或coluna\u user
,则该矩阵不会更改)
我强烈推荐阅读一些好的C编程书籍
您可能希望(至少在Linux上)使用调试器(如Linux上的gdb)和内存泄漏检测器(如Linux上的gdb)调试您的程序
顺便说一句,您使用的矢量术语使我建议使用(GCC 4.8编译器)及其容器类,尤其是其标准模板。当然,在这种情况下,您希望使用g++-std=c++11-Wall-g
进行编译。请在注释、消息和标识符名称中使用英语
我用GNUindent
重新嵌入了您的代码,然后用GCC-Wall-Wextra
编译了它(使用GCC4.8),得到了
walter.c: In function 'main':
walter.c:22:4: warning: format '%d' expects argument of type 'int *', but argument 2 has type 'float **' [-Wformat=]
scanf ("%d", &identidade[linha][coluna]);
^
walter.c:49:1: warning: control reaches end of non-void function [-Wreturn-type]
}
你的声明呢
int linha_user=0, coluna_user=0;
float *identidade[linha_user][coluna_user];
这肯定是错误的。您正在声明一个零大小的浮点指针矩阵(如果以后使用a.g.scanf
或某些赋值设置linha\u user
或coluna\u user
,则该矩阵不会更改)
我强烈推荐阅读一些好的C编程书籍
您可能希望(至少在Linux上)使用调试器(如Linux上的gdb)和内存泄漏检测器(如Linux上的gdb)调试您的程序
顺便说一句,您使用的矢量术语让我建议使用(GCC 4.8编译器)及其容器类,尤其是其标准模板。当然,如果是这样的话,您希望使用g++-std=c++11-Wall-g
进行编译。很抱歉,这是西班牙语吗?葡萄牙语…我来自巴西:)好的,我下次会知道。=)这个问题似乎离题了,因为它不太可能在将来帮助其他人。对不起,离题了,是西班牙语吗?葡萄牙语。。。我来自巴西……)好的,下次我会知道的这个问题似乎离题了,因为它不太可能在将来帮助其他人。有可能从两个循环中中断
吗?@Alex您需要在第一个循环中中断
,然后在第二个循环中中断测试条件和中断
。或者在两个循环后加上标签的goto
。我个人会选择goto
从N个循环中断的另一种方法是从函数中提前返回。但是这需要循环在一个单独的函数中,而不是在main中(无论如何这是一个好主意)是否可以从两个循环中中断
?@Alex您需要在第一个循环中中断
,然后在第二个循环中设置测试条件和中断
。或者在两个循环后加上标签的goto
。我个人会选择goto
从N个循环中断的另一种方法是从函数中提前返回。但是这需要循环在一个单独的函数中,而不是在main中(无论如何这是个好主意)。现在,这个问题可以在葡萄牙语网站上提出。现在,这个问题可以在葡萄牙语网站上提出。