我想制作矩阵:
0 0 0 0 0 1
0 0 0 0 0 1
0 0 0 0 0 1
0 0 0 0 0 1
1 1 1 1 1 0
但它显示:
0 0 0 0 0 1
0 0 0 0 0 1
0 0 0 0 0 1
0 0 0 0 0 1
0 0 0 0 0 0
我到目前为止的代码是:
#include <stdio.h>
#include <stdlib.h>
void graphS()
{
int i,j,k,n,x[10][10];
printf("S");scanf("%d",&k);
n=k+1;
for(i=1;i<n;i++)
{
for(j=1;j<n;j++)
{
x[i][j]=0;
x[i][n-1]=1;
if(i==j)
x[i][j]=0;
printf("%d\t",x[i][j]);
}
printf("\n");
}
}
int main()
{
graphS();
return 0;
}
答案 0 :(得分:1)
你只需要这样做:(如果不是其他条件)
for(i=1;i<n;i++)
{
for(j=1;j<n;j++)
{
x[i][j]=0;
x[i][n-1]=1;
x[n-1][j]=1;//This is the line you need
if(i==j)
x[i][j]=0;
printf("%d\t",x[i][j]);
}
printf("\n");
}
答案 1 :(得分:0)
在以下行之后 -
for(j=1;j<n;j++){
添加 -
if (j==n-1)
x[i][j] = 1
答案 2 :(得分:0)
添加:
if (i == n-1) x[i][j] = (j == n-1) ? 0 : 1;
所以:
#include <stdio.h>
#include <stdlib.h>
void graphS(){
int i,j,k,n,x[10][10];
printf("S");scanf("%d",&k);
n=k+1;
for(i=1;i<n;i++){
for(j=1;j<n;j++){
x[i][j]=0;
x[i][n-1]=1;
if(i==j) x[i][j]=0;
if (i == n-1) x[i][j] = (j == n-1) ? 0 : 1; //Added
printf("%d\t",x[i][j]);
}
printf("\n");
}
}
int main()
{
graphS();
return 0;
}
答案 3 :(得分:0)
我修改了一下
#include <stdio.h>
#include <stdlib.h>
void graphS(){
int i,j,k,n,x[10][10];
printf("S");
scanf("%d",&k);
//n=k+1;
for(i=1;i<=k;i++)
{
for(j=1;j<=k;j++)
{
x[i][j]=0;
x[i][k]=1;
if(i==k)
{
x[i][j]=1;
x[i][k]=0;
}
printf("%d\t",x[i][j]);
}
printf("\n");
}
}
int main()
{
graphS();
return 0;
}
答案 4 :(得分:0)
请用这些循环替换。
for(i=1;i<n;i++){
for(j=1;j<n;j++){
if( (i==n-1 && i!=j) || (j==n-1 && i!=j) ) x[i][j] = 1;
else x[i][j] = 0;
printf("%d\t",x[i][j]);
}
printf("\n");
}
在你的代码中你只分配1到x [i] [n-1]而不是x [j] [n-1]
所以这会导致输出出错。您可以使用我的修改或使用您的代码,但添加代码段x [j] [n-1] = 1。