『壹』 如何用c語言編一個程序,輸入一個二維數組,然後以一個矩陣的方式輸出。
#include<stdio.h>
void main(){
int array[3][3], (*pArr)[3], *p[3], i, j, sum;
srand(time(NULL));
for(i=0; i<3; i++)
for(j=0; j<3; j++)
array[i][j] = rand()%100+0;
pArr = array;
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++){
printf("%d ", pArr[i][j]);
if(j == 2){
printf(" ");
}
}
for(i=0; i<3; i++)
p[i] = array[i];
for(i=0; i<3; i++){
sum = 0;
for(j=0; j<3; j++){
sum += p[i][j];
}
printf("第%d行的和是%d ", i+1, sum);
}
}
(1)c語言矩陣元素的表示方式擴展閱讀:
1、printf命令的作用是格式化輸出函數,一般用於向標准輸出設備按規定格式輸出信息。printf()函數的調用格式為:printf("<格式化字元串>", <參量表>)。
printf()是C語言標准庫函數,在 stdio.h 中定義。輸出的字元串除了可以使用字母、數字、空格和一些數字元號以外,還可以使用一些轉義字元表示特殊的含義。
2、printf函數調用的一般形式
printf函數是一個標准庫函數,它的函數原型在頭文件「stdio.h」中。但作為一個特例,不要求在使用printf函數之前必須包含stdio.h文件。printf函數調用的一般形式為:printf(「格式控制字元串」,輸出表列)其中格式控制字元串用於指定輸出格式。
格式控制串可由格式字元串和非格式字元串兩種組成。格式字元串是以%開頭的字元串,在%後面跟有各種格式字元,以說明輸出數據的類型、形式、長度、小數位數等。如「%d」表示按十進制整型輸出,「%ld」表示按十進制長整型輸出,「%C」表示按字元型輸出等。後面將專門給予討論。
非格式字元串在輸出時原樣照印,在顯示中起提示作用。輸出表列中給出了各個輸出項,要求格式字元串和各輸出項在數量和類型上應該一一對應。
『貳』 C語言中數組名代表什麼,數組元素用什麼方法表示
數組名即數組首地址,是一個常量。
數組元素使用"[
n
]"運算符(下標運算符)來表示第n+1號元素,或者使用「
*(p+n)
」來表示第n+1號元素。
數組元素對於編譯器來說
,在支持快速下標運算的處理器上,a[n]是直接是被轉化成匯編代碼,不支持的被轉化為*(a+n)。這也是老的C程序會在大多數情況下不使用下標運算符的原因。
『叄』 C語言:正確表示數組元素的表達式
若a[4][3]是對的,就有
a[0][0]
a[0][1]
a[0][2]
a[1][0]
a[1][1]
a[1][2]
a[2][0]
a[2][1]
a[2][2]
a[3][0]
a[3][1]
a[3][2]
但是題目要求表示a數組元素(注意是元素)
a[4][3]
是沒有地址的,因為最多就是a[3][2]
『肆』 c語言 分別輸出m*m矩陣的左上角和右下角
直接輸入對應元素即可。
m*m的矩陣,即a[m][m]這種形式的數組。
於是,左上角,就是第一行第一個元素,用C語言表示就是a[0][0];
右下角,也就是最後一行最後一個元素,C語言表示為a[m-1][m-1];
然後根據類型進行輸出即可。如整型矩陣可以用語句
printf("左上角=%d, 右下角=%d\n", a[0][0], a[m-1][m-1]);
『伍』 C語言中如何定義矩陣
兩種方式可以參考:
1、最簡單的就是二維數組,比如存儲全是整形的一個m*n的矩陣。然後可以定義int a[m][n]。
輸入或者輸出可以用兩層循環來完成,外層控制行m比如for(i=0;i<m;++i),內層控制列n比如for(j=0;j<n;++j);
2、第二種方式就是壓縮矩陣進行存儲,如果學了數據結構應該比較好理解。
結構體進行封裝,比如:
第一步:先定義一個有效數據的位置
typedef struct node
{
int hang;int lie;int data;//用來存儲一個有效數據位的行列和值
}node;
typedef struct matrix
{
node *m;//一個數組,用來存儲所有的node數據
int sum;//記錄一共有多少個有效數據位
}matrix;
『陸』 c語言,編寫程序求下面矩陣各行元素之和及各列元素之和。。求解。。感謝
第1行元素和為25
第2行元素和為30
第3行元素和為29
第1列元素和為6
第2列元素和為12
第3列元素和為19
第4列元素和為22
第5列元素和為25
Press any key to continue
#include <stdio.h>
main()
{
int i,j,sumh=0,suml=0;
int arr[3][5]={{1,3,5,7,9},{2,4,6,8,10},{3,5,8,7,6}};
for (i=0;i<3;i++)
{
sumh=0;
for (j=0;j<5;j++)
{
sumh+=arr[i][j];
}
printf("第%d行元素和為%d\n",i+1,sumh);
}
for (i=0;i<5;i++)
{
suml=0;
for (j=0;j<3;j++)
{
suml+=arr[j][i];
}
printf("第%d列元素和為%d\n",i+1,suml);
}
}
有問題請追問 滿意記得採納
『柒』 數組元素地址的表達方式,c語言問題求解…!!
A和B一看就是錯的,因為計算機本身計數是從0開始,就是說,如果有三個元素在數組中,那麼它們的編號就是0、1、2,而不是1、2、3(由工作原理決定的)。
剩下的C和D:
C:t[1]表示的是t這個數組的第2個元素的地址(也同時代表這個地址所存儲的值)。
D:*t[2]表示的是t這個數組的第3個元素的地址的指針形式。
『捌』 c語言矩陣怎麼寫
方法1:直接定義10*10的數組,讀取全部數據,再根據選擇的行列數列印輸出部分數據。
方法2:通過文件流指針的移動,跨過不需要的內容。(這里控制文件流指針可利用ftell和fseek函數來移動指定位元組數)我是利用fscanf讀取需要的內容,遇到需要跳行就用fgets來跳過。(注意常量參數根據自己需求修改)。
說明:邊讀取邊列印輸出,就不需要變數存儲。我的代碼是把讀取出來的內容存放在三維數組中(文件內容你沒指定,如是單純數字,二維數組即可,我是作為字元串處理,故用三維數組。),數組是根據實際大小,動態申請,寫成兩個獨立函數。
下面是代碼:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
#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<c) strcpy(datas[j][i],str),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<r;i++,printf(" "))
for(j=0;j<c;j++)
printf("%s ",datas[i][j]);
printf(" ");
}
void freeMem(char ***datas,int r,int c)
{
int i,j;
if(!datas)
{
for(i=0;i<r;i++,free(datas[i]))
for(j=0;j<c;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<r;i++)
{
dr=(char **)malloc(sizeof(char *)*c);
if(!dr) return NULL;
else
{
for(j=0;j<c;j++)
{
dr[j]=(char *)malloc(sizeof(char)*len);
if(!dr[j]) return NULL;
}
datas[i]=dr;
}
}
return datas;
}
『玖』 c語言矩陣是陣列嗎我做的一個稀疏矩陣運算器的程序輸出結果是矩陣,但要求結果是陣列形式。
c語言矩陣是 數組,矩陣可以用2維數組表示。
例如 double a[5][6]; 表示 5 行 6 列 矩陣。
數組元素可以 用 下標變數 表示,例如 a[1][2] 是第2行第3 列元素。因為下標從0 計。
數組元素可以 用 地址計算 得到,首地址 是 &a[0][0], 元素 按行排列成 一排。
『拾』 C語言矩陣怎樣表示分數
C語言沒有分數類型。想要表示分數的話需要自己構造數據結構。