‘壹’ 如何用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语言没有分数类型。想要表示分数的话需要自己构造数据结构。