原程式是論壇一位同學的矩陣列印問題引發的,我撰寫了一個增強版,只會才用變長陣列解決,想知道如果用指標怎么解決
#include <stdio.h>
int main()
{
unsigned int a=0,b=0;
printf("Introduzca 2 numero(entre 1 y ~,非數字退出) :");
while(scanf("%d %d",&a,&b))
{
int c[a][b][2];//此處不采用變長陣列,而是采用指標,后面的記憶體申請怎么處理
for(int i=0;i<a;i++)
for(int j=0;j<b;j++)
{
c[i][j][0]=i;
c[i][j][1]=j;
}
for(int i=0;i<a;i++,printf("\n"))
for(int j=0;j<b;j++)
printf("[%d %d]",c[i][j][0],c[i][j][1]);
printf("Introduzca 2 numero(entre 1 y ~,非數字退出) :");
}
return 0;
}
另外 為什么我采用函式呼叫就得不到正確的運行
#include <stdio.h>
void primatrix(int pa,int pb,int pc[pa][pb][2]);
void assmatrix(int aa,int ab,int ac[aa][ab][2]);
int main()
{
unsigned int a=0,b=0;
printf("Introduzca 2 numero(entre 1 y ~,非數字退出) :");
while(scanf("%d %d",&a,&b))
{
int c[a][b][2];
assmatrix(a,b,c[a][b][2]);
primatrix(a,b,c[a][b][2]);
printf("Introduzca 2 numero(entre 1 y ~,非數字退出) :");
}
return 0;
}
void primatrix(int pa,int pb,int pc[pa][pb][2])
{
for(int i=0;i<pa;i++,printf("\n"))
for(int j=0;j<pb;j++)
printf("[%d %d]",pc[i][j][0],pc[i][j][1]);
}
void assmatrix(int aa,int ab,int ac[aa][ab][2])
{
for(int i=0;i<aa;i++)
for(int j=0;j<ab;j++)
{
ac[i][j][0]=i;
ac[i][j][1]=j;
}
}
uj5u.com熱心網友回復:
第一個問題 關于呼叫不成功,自己想到了可能的問題,經測驗已解決。#include <stdio.h>
void primatrix(int pa,int pb,int pc[pa][pb][2]);
void assmatrix(int aa,int ab,int ac[aa][ab][2]);
int main()
{
unsigned int a=0,b=0;
printf("Introduzca 2 numero(entre 1 y ~,非數字退出) :");
while(scanf("%d %d",&a,&b))
{
int c[a][b][2];
assmatrix(a,b,c);//之前引數傳遞形式錯了,引數在宣告和使用時是不一樣的
primatrix(a,b,c);//同上
printf("Introduzca 2 numero(entre 1 y ~,非數字退出) :");
}
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/173529.html
標籤:新手樂園
上一篇:習題7-3 判斷上三角矩陣
