C语言 数组 怎么做希望有具体过程

C语言 数组 怎么做希望有具体过程,第1张

初始化时:ch[0] = { '6','9','3',0, 0 } ; ch[1] = { '8','2','5',0, 0 } ;

i的循环是i=0,i= 1 j的循环只有j=0

i = 0 , j = 0 : s=ch[0][0] - '0' = '6' - '0' = 6

i = 1 , j = 0 : s=s 10+ ch[1][0] - '0' = 6 10 + '8' - '0' = 60 + 8 = 68

所谓结构数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。

结构体可以存储不同的数据类型,将他们互相联系起来。结构体数组可以连续存储多个结构体,和数组作用相似。比如想定义同一个最小外接矩形的四个坐标值,并给予这个矩形一个特征编号。当需要存储多个最小外接矩形的信息时,就需要动态申请一个结构体数组。

struct 结构体类型名{类型名 成员名;类型名 成员名;……},先声明结构体类型,再定义结构体变量名。声明结构体类型,不分配空间,定义结构体类型变量,就要分配内存空间。

扩展资料:

结构体数组指针类型:

一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址,指针变量也可以用来指向结构体数组中的元素。

1、类型一:

指向结构体变量的指针引用结构体变量中的成员。

2、类型二:

用结构体变量和指向结构体变量的指针构成链表,链表是一种常见的重要的数据结构。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。

链表中的每一个元素称为“结点”,每个结点都应包括两个部分:

一是用户需要用的实际数据,

二是下一个结点的地址。

链表中各元素在内存中的存储单元可以是不连续的。要找某一元素,可以先找到上一个元素,根据它提供的下一元素地址找到下一个元素。这种链表的数据结构,必须利用结构体变量和指针才能实现。

可以声明一个结构体类型,包含两种成员,一种是用户需要用的实际数据,另一种是用来存放下一结点地址的指针变量。

参考资料来源:百度百科—结构体类型—数组

#include <stdioh>

void input_data(int l,int r,int data[100][100])

{ int i,j,k;

printf("输入矩阵行数:");

scanf("%d",l);

printf("输入矩阵列数:");

scanf("%d",r);

printf("按行输入数据,数据间用空格间隔:\n");

for(i=0;i<l;i++)

for(j=0;j<r;j++)

scanf("%d",&data[i][j]);

}

int add_subtra(int m1[100][100],int l1,int r1,

int m2[100][100],int l2,int r2,char m,int rm[100][100])

{ int i,j;

if(l1!=l2 || r1!=r2)

{ printf("矩阵数据错误1\n"); return; }

if(m=='+')

for(i=0;i<l1;i++)

for(j=0;j<r1;j++)

rm[i][j]=m1[i][j]+m2[i][j];

else

for(i=0;i<l1;i++)

for(j=0;j<r1;j++)

rm[i][j]=m1[i][j]-m2[i][j];

}

int mul(int m1[100][100],int l1,int r1,

int m2[100][100],int l2,int r2,int m[100][100])

{ int i,j,k;

if(l1!=r2 )

{ printf("矩阵数据错误2\n"); return; }

for(i=0;i<l1;i++)

for(j=0;j<r2;j++)

{ m[i][j]=0;

for(k=0;k<r1;k++)

m[i][j]+=m1[i][k]m2[k][j];

}

}

int output(int m[100][100],int l,int r)

{ int i,j;

for(i=0;i<l;i++)

{ for(j=0;j<r;j++)

printf("%3d ",m[i][j]);

printf("\n");

}

}

int main()

{ int d1[100][100],d2[100][100],d[100][100];

int l1,r1,l2,r2;

int i,j,k;

char mark[2];

printf("输入第一个矩阵数据:\n");

input_data(&l1,&r1,d1);

printf("输入的第一个矩阵:\n");

output(d1,l1,r1);

printf("输入第二个矩阵数据:\n");

input_data(&l2,&r2,d2);

printf("输入的第二个矩阵:\n");

output(d2,l2,r2);

printf("指定运算符(+/-/):");

scanf("%s",mark);

while(mark[0]!='+' && mark[0]!='-' && mark[0]!='')

{ printf("符号错误请重新输入(+/-/):");

scanf("%s",mark);

}

switch(mark[0])

{ case '+':

case '-': add_subtra(d1,l1,r1,d2,l2,r2,mark[0],d); break;

case '': mul(d1,l1,r1,d2,l2,r2,d); break;

}

//output(d1,l1,r1);

//output(d2,l2,r2);

printf("运算:%c,计算结果为:\n",mark[0]);

output(d,l1,r2);

system("pause");

}

两个运算矩阵可以是大小不同的, 输出结果由被乘数矩阵的行和乘数矩阵的列决定,

你要求的输出格式比较烦,没时间不够啦!有时间再玩吧。

#include<stdioh>

main ()

{

int i,j,k;

int n[8]={1,2,5,8,9,13,22};

printf("请输入需要插入的整数:\n");

scanf("%d",&k);

if(k>n[6])

n[7]=k;

else

{

for(i=0;n[i]<=k;i++);

for(j=7-1;j>=i;j--)

n[j+1]=n[j];

n[i]=k;}

for(i=0;i<=7;i++)

printf("%6d",n[i]);

}

#include<stdioh>

main(){

    int a[10]={0,1,2,3,4,5,6,7,8,9};

    int i;

    for(i=0;i<10;i++){

        printf("%4d",a[i]);

    }

    printf("\n");

}

#include <stdioh>

#define M 10

#define N 10

void merge(int a[],int b[],int c[],int m, int n)

{

int i,j,k;

i=0;

j=0;

k=0;

while(i<m&&j<n)

if(a[i]<=b[j])

c[k++]=a[i++];

else c[k++]=b[j++];

while (i<m)

c[k++]=a[i++];

while (j<n)

c[k++]=b[j++];

}

void main()

{

int a[M],b[N],c[M+N];

int i;

printf("输入递增数组a\n");

for(i=0;i<M;i++)

{

printf("第%d个:",i+1);

scanf("%d",&a[i]);

}

printf("\n输入递增数组b\n");

for(i=0;i<N;i++)

{

printf("第%d个:",i+1);

scanf("%d",&b[i]);

}

merge(a,b,c,M,N);

printf("\n\n合并后的数组是:\n");

for(i=0;i<M+N;i++)

printf("%d ",c[i]);

}

运行的一个示例:

输入递增数组a

第1个:4

第2个:8

第3个:9

第4个:78

第5个:90

第6个:91

第7个:92

第8个:93

第9个:94

第10个:95

输入递增数组b

第1个:1

第2个:2

第3个:4

第4个:5

第5个:6

第6个:10

第7个:11

第8个:12

第9个:13

第10个:14

合并后的数组是:

1 2 4 4 5 6 8 9 10 11 12 13 14 78 90 91 92 93 94 95 Press any key to continue

以上就是关于C语言 数组 怎么做希望有具体过程

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9350746.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存