經典矩陣c語言-九游会j9娱乐平台
① 用c語言輸出以下矩陣 12345 23451 34512 45123 51234
#include
voidmain()
{
inti,j,k,m;
for(i=1;i<=5;i )
{
j=0;
for(k=0;k<=5;k )
{
m=((i j)%6);
if(m>0)
printf("%d",m);
j ;
}
printf(" ");
}
}
(ps: 望採納)
② c語言矩陣怎麼寫
方法1:直接定義10*10的數組,讀取全部數據,再根據選擇的行列數列印輸出部分數據。
方法2:通過文件流指針的移動,跨過不需要的內容。(這里控制文件流指針可利用ftell和fseek函數來移動指定位元組數)我是利用fscanf讀取需要的內容,遇到需要跳行就用fgets來跳過。(注意常量參數根據自己需求修改)。
說明:邊讀取邊列印輸出,就不需要變數存儲。我的代碼是把讀取出來的內容存放在三維數組中(文件內容你沒指定,如是單純數字,二維數組即可,我是作為字元串處理,故用三維數組。),數組是根據實際大小,動態申請,寫成兩個獨立函數。
下面是代碼:
#include
#include
#include
#define maxr 10//文件中矩陣最大行
#define maxc 10//文件中矩陣最大列
#define ms 3//矩陣中元素字元串最大字元數(包含結束符號,不可小於實際內容)
#define mbuf 100//文件中一行最大字元數,可設置大一點
char ***getmem(int r,int c,int len);//動態申請一個三維數組
void freemem(char ***datas,int r,int c);//釋放數組空間
void showdatas(char ***datas,int r,int c);//列印輸出結果
int main()
{
int r=maxr 1,c=maxc 1,i=0,j=0;
char ***datas=null,str[3],buf[mbuf];
file *fp=null;
printf("請輸入要獲取的行數和列數: ");
while(r<0 || r>maxr || c<0 || c>maxc)scanf("%d%d",&r,&c);
datas=getmem(r,c,ms);
fp=fopen("c:\test.data","r");
if(!fp) return 1;
while(fscanf(fp,"%s",str)!=-1)
{
if(i
if(i==c)
{
if(!fgets(buf,sizeof(buf),fp)) break;
i=0,j ;
}
if(j==r) break;
}
showdatas(datas,r,c);
freemem(datas,r,c);
return 0;
}
void showdatas(char ***datas,int r,int c)
{
int i,j;
for(i=0;i
for(j=0;j
printf("%s ",datas[i][j]);
printf(" ");
}
void freemem(char ***datas,int r,int c)
{
int i,j;
if(!datas)
{
for(i=0;i
for(j=0;j
free(datas[i][j]);
free(datas);
}
}
char ***getmem(int r,int c,int len)
{
int i,j;
char ***datas=null,**dr=null;
datas=(char ***)malloc(sizeof(char **)*r);
if(!datas) return null;
for(i=0;i
{
dr=(char **)malloc(sizeof(char *)*c);
if(!dr) return null;
else
{
for(j=0;j
{
dr[j]=(char *)malloc(sizeof(char)*len);
if(!dr[j]) return null;
}
datas[i]=dr;
}
}
return datas;
}
③ c語言程序編寫 輸入一個4×3的整數矩陣,輸出其中最大值,最小值和他們的下標(行號和列號)
#include
voidmain(){
intarr[4][3];
inti,j,min,max;
intr1=0,r2=0,c1=0,c2=0;
for(i=0;i<4;i )//輸進二維數組
for(j=0;j<3;j ){
printf("inputarr[-][-]:",i,j);
scanf("%d",&arr[i][j]);
}
max=arr[0][0];//令最大值初始化為arr[0][0]
min=arr[0][0];//令最小值初始化為arr[0][0]
printf("
--------arr[][]----------
");//列印二維數組
for(i=0;i<4;i ){
printf("
");
for(j=0;j<3;j )
printf("]",arr[i][j]);
}
if(arr[i][j]>max){//當arr[i][j]>max時,令max=arr[i][j],r1=i;c1=j
max=arr[i][j];
r1=i;
c1=j;
}
if(arr[i][j]
r2=i;
c2=j;
printf("
thisismax:-,r:-,c:-",max,r1,c1);
printf("
thisismin:-,r:-,c:-",min,r2,c2);
printf("
");
}
(3)經典矩陣c語言擴展閱讀:
c語言編程時常犯的錯誤:
1 、書寫標識符時,忽略了大小寫字母的區別
main(){int a=5;printf("%d",a);}
編譯程序把a和a認為是兩個不同的變數名,而顯示出錯信息。c認為大寫字母和小寫字母是兩個不同的字元。習慣上,符號常量名用大寫,變數名用小寫表示,以增加可讀性。
2 、忽略了變數的類型,進行了不合法的運算
代碼如下:
main(){float a,b;printf("%d",a%b);}
%是求余運算,得到a/b的整余數。整型變數a和b可以進行求余運算,而實型變數則不允許進行「求余」運算。
3 、將字元常量與字元串常量混淆
char c;
c=」a」;
在這里就混淆了字元常量與字元串常量,字元常量是由一對單引號括起來的單個字元,字元串常量是一對雙引號括起來的字元序列。
c規定以「」作字元串結束標志,它是由系統自動加上的,所以字元串「a」實際上包含兩個字元:『a』和『』,而把它賦給一個字元變數是不行的。
④ c語言編程 輸入一個3*3的矩陣,列印該矩陣,並輸出該矩陣的對角元素
#include
#definem3
#definen3
voidcreate_matrix(intmatrix[m][n],intm,intn){
inti,j;
printf("開始輸入矩陣內容(%d行%d列) ",m,n);
for(i=0;iprintf("輸入第%d行的%d個元素:",i 1,n);
for(j=0;jscanf("%d",&matrix[i][j]);
}
}
voidprint_matrix(intmatrix[m][n],intm,intn){
inti,j;
for(i=0;ifor(j=0;j printf("%d ",matrix[i][j]);
printf(" ");
}
}
voidprint_matrix_diagonal(intmatrix[m][n],intm,intn){
inti,j;
for(i=0;ifor(j=0;j if(i==j||i j==m-1)
printf("%d ",matrix[i][j]);
else
printf(" ");
printf(" ");
}
}
intmain(void){
intmatrix[m][n];
create_matrix(matrix,m,n);
printf("====================================================== ");
printf("您輸入的矩陣為: ");
print_matrix(matrix,m,n);
printf("對角線元素為: ");
print_matrix_diagonal(matrix,m,n);
return0;
}
執行結果
⑤ c語言輸出4*5的數字矩陣 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15
#include
intmain(void)
{
inti,j;
for(i=1;i<=4; i)
{
for(j=1;j<=5; j)
{
printf("-",i*j);
}
printf(" ");
}
return0;
}
⑥ c語言 關於矩陣
方法1:直接定義10*10的數組,讀取全部數據,再根據選擇的行列數列印輸出部分數據。
方法2:通過文件流指針的移動,跨過不需要的內容。(這里控制文件流指針可利用ftell和fseek函數來移動指定位元組數)我是利用fscanf讀取需要的內容,遇到需要跳行就用fgets來跳過。(注意常量參數根據自己需求修改)。
說明:邊讀取邊列印輸出,就不需要變數存儲。我的代碼是把讀取出來的內容存放在三維數組中(文件內容你沒指定,如是單純數字,二維數組即可,我是作為字元串處理,故用三維數組。),數組是根據實際大小,動態申請,寫成兩個獨立函數。
下面是代碼:
#include
#include
#include
#define maxr 10//文件中矩陣最大行
#define maxc 10//文件中矩陣最大列
#define ms 3//矩陣中元素字元串最大字元數(包含結束符號,不可小於實際內容)
#define mbuf 100//文件中一行最大字元數,可設置大一點
char ***getmem(int r,int c,int len);//動態申請一個三維數組
void freemem(char ***datas,int r,int c);//釋放數組空間
void showdatas(char ***datas,int r,int c);//列印輸出結果
int main()
{
int r=maxr 1,c=maxc 1,i=0,j=0;
char ***datas=null,str[3],buf[mbuf];
file *fp=null;
printf("請輸入要獲取的行數和列數: ");
while(r<0 || r>maxr || c<0 || c>maxc)scanf("%d%d",&r,&c);
datas=getmem(r,c,ms);
fp=fopen("c:\test.data","r");
if(!fp) return 1;
while(fscanf(fp,"%s",str)!=-1)
{
if(i
if(i==c)
{
if(!fgets(buf,sizeof(buf),fp)) break;
i=0,j ;
}
if(j==r) break;
}
showdatas(datas,r,c);
freemem(datas,r,c);
return 0;
}
void showdatas(char ***datas,int r,int c)
{
int i,j;
for(i=0;i
for(j=0;j
printf("%s ",datas[i][j]);
printf(" ");
}
void freemem(char ***datas,int r,int c)
{
int i,j;
if(!datas)
{
for(i=0;i
for(j=0;j
free(datas[i][j]);
free(datas);
}
}
char ***getmem(int r,int c,int len)
{
int i,j;
char ***datas=null,**dr=null;
datas=(char ***)malloc(sizeof(char **)*r);
if(!datas) return null;
for(i=0;i
{
dr=(char **)malloc(sizeof(char *)*c);
if(!dr) return null;
else
{
for(j=0;j
{
dr[j]=(char *)malloc(sizeof(char)*len);
if(!dr[j]) return null;
}
datas[i]=dr;
}
}
return datas;
}