C语言 实验五数组程序设计解答.docx

上传人:b****4 文档编号:12158725 上传时间:2023-04-17 格式:DOCX 页数:25 大小:19.26KB
下载 相关 举报
C语言 实验五数组程序设计解答.docx_第1页
第1页 / 共25页
C语言 实验五数组程序设计解答.docx_第2页
第2页 / 共25页
C语言 实验五数组程序设计解答.docx_第3页
第3页 / 共25页
C语言 实验五数组程序设计解答.docx_第4页
第4页 / 共25页
C语言 实验五数组程序设计解答.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C语言 实验五数组程序设计解答.docx

《C语言 实验五数组程序设计解答.docx》由会员分享,可在线阅读,更多相关《C语言 实验五数组程序设计解答.docx(25页珍藏版)》请在冰豆网上搜索。

C语言 实验五数组程序设计解答.docx

C语言实验五数组程序设计解答

C语言实验五、数组程序设计解答

实验五数组应用,二,一、实验目的

1(掌握二维数组的定义和初始化。

2(掌握二维数组元素的引用及其应用。

3(掌握字符数组的定义和初始化。

4(掌握字符数组元素的引用及其应用。

二、实验内容

1([目的]掌握二维数组的输出方法。

[题目内容]已知有二维数组a的定义:

int

a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};编程序~以三行四列的形式输

出a数组。

[输入]无

[输出]

1234

5678

9101112

[提示]利用二重for循环结构与printf()。

#includevoidmain()

{

inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

inti,j;

printf("二维数组:

\n");

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

{

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

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

printf("\n");

}

}

2([目的]掌握二维数组的输入、输出方法。

[题目内容]已知有一个3行2列的二维数组:

8976

6798

5478

编程序~从键盘输入数据存储在二维数组中~并以3行2列的形式输出。

[输入]89~76~67~98~54~78

[输出]

8976

6798

5478

[提示]利用二重for循环结构与scanf()、printf()及%4d格式输出。

#include

voidmain()

{

inta[3][2];

inti,j;

printf("请输入3行2列二维数组:

\n");

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

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

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

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

{

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

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

printf("\n");

}

}

3([目的]掌握二维数组的输入、输出、处理方法。

[题目内容]编程序~生成一个5行5列的二维矩阵~并输出。

10000

01000

00100

00010

00001

[输入]无

[输出]

10000

01000

00100

00010

00001

[提示]利用for循环结构~生成原则:

行下标与列下标相同的数组元素为1~其

余为0。

%4d格式输出。

#includevoidmain()

{

inta[5][5];

inti,j;

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

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

if(i==j)a[i][j]=1;

elsea[i][j]=0;

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

{

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

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

printf("\n");

}

}

4([目的]运用所学知识解决矩阵转置问题。

×2矩阵~编程序~将a矩阵转置~生成矩阵b,2×3,~[题目内容]设a矩阵是3

并输出。

[输入]a矩阵

[输出]b矩阵

[提示]利用不同矩阵行列下标的关系。

b=a,iiji#includevoidmain()

{

inta[3][2],b[2][3];

inti,j;

printf("请输入a数组:

\n");

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

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

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

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

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

b[j][i]=a[i][j];

printf("a数组:

\n");

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

{

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

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

printf("\n");

}

printf("b数组:

\n");

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

{

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

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

printf("\n");

}

}

5([目的]运用所学知识解决矩阵相乘问题。

[题目内容]设a矩阵是3×2矩阵~b矩阵是2×3矩阵~满足矩阵相乘条件~编

程序~将a矩阵×b矩阵生成c矩阵,3×3,~并输出。

[输入]a矩阵、b矩阵

[输出]c矩阵

2

c,a,b,ijikkj[提示]计算公式:

1k

#include

voidmain()

{

inta[3][2],b[2][3],c[3][3]={0};

inti,j,k;

printf("请输入a数组:

\n");

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

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

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

printf("请输入b数组:

\n");

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

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

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

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

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

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

c[i][j]=c[i][j]+a[i][k]*b[k][j];

\n");printf("a数组:

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

{

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

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

printf("\n");

}

printf("b数组:

\n");

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

{

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

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

printf("\n");

}

printf("c数组:

\n");

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

{

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

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

printf("\n");

}

}

6([目的]运用所学知识解决矩阵问题。

[题目内容]设有一个5×5方阵~编程序~判断该方阵是否为对称矩阵。

并输出

判断结果。

[输入]5×5方阵

[输出]判断结果

[提示]如果矩阵中的每个元素都满足array[i][j]=array[j][i]~则称这个矩阵为对称

矩阵。

#include

voidmain()

{

inta[5][5];

inti,j,flag=0;

\n");printf("请输入5*5数组:

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

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

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

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

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

if(a[i][j]!

=a[j][i])flag=1;

printf("a数组:

\n");

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

{

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

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

printf("\n");

}

if(flag==0)printf("是对称矩阵。

\n");

elseprintf("不是对称矩阵。

\n");

}

6([目的]运用所学知识解决矩阵问题。

[题目内容]设有一个3行5列的二维数组~编写程序从键盘输入数据~建立这

个二维数组~并找出二维数组中的鞍点。

[输入]3×5矩阵

[输出]鞍点

[提示]鞍点是指在行上是最大但是所在列最小的元素,这样的元素可能不存在,。

#include

voidmain()

{

inta[3][5];

inti,j,k,m,max,flag;

printf("请输入3*5数组:

\n");

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

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

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

printf("a数组:

\n");

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

{

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

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

printf("\n");

}

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

{

max=a[i][0];

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

if(a[i][j]>max){max=a[i][j];k=j;}

for(m=0;m<3;m++)

if(a[m][k]

elseflag=0;

if(flag==0)printf("鞍点是:

a[%d][%d]=%d\n",i,k,a[i][k]);

}

}

7([目的]运用所学知识解决实际问题。

[题目内容]如下数据表显示了4个销售人员所售的3种物品的数量。

物品1物品2物品3销售人员1310275365

销售人员2210190325

销售人员3405235240

销售人员4260300380

请使用二维数组编写程序~计算并显示以下信息:

1,每个销售人员的销售总值

2,每种物品的销售总值

3,所有销售人员销售的全部物品的总值

[输入]销售数据表数据

[输出]计算结果

[提示]建立一个5×4的二维数组

#include

voidmain()

{

inta[5][4];

inti,j;

printf("请输入4*3数组:

\n");

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

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

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

printf("原数组:

\n");

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

{

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

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

printf("\n");

}

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

{

a[4][j]=0;

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

a[4][j]=a[4][j]+a[i][j];

}

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

{

a[i][3]=0;

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

a[i][3]=a[i][3]+a[i][j];

}

printf("所求数组:

\n");

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

{

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

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

printf("\n");

}

}

8([目的]运用所学知识解决实际问题。

设某班有20个学生~每个学生选修了三门课~编写程序~输入20[题目内容]

个学生三门课的成绩~计算每个学生的平均成绩~最后输出每个学生三门课的成

绩及平均成绩。

[输入]20个学生三门课的成绩

[输出]每个学生三门课的成绩及平均成绩[提示]建立一个20×4的二维数组

#includevoidmain()

{

inta[20][4];

inti,j;

printf("请输入20*3数组:

\n");

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

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

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

printf("原数组:

\n");

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

{

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

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

printf("\n");

}

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

{

a[i][3]=0;

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

a[i][3]=a[i][3]+a[i][j];

}

printf("所求数组:

\n");

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

{

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

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

printf("\n");

}

}

9([目的]运用所学知识解决实际问题。

[题目内容]编写程序~生成并输出杨辉三角形,10行,。

[输入]无

[输出]杨辉三角形

[提示]初值:

inta[10][10]={{1},{1,1}}

#includevoidmain()

{

inta[10][10]={{1},{1,1}};

inti,j;

for(i=2;i<10;i++)

{

a[0][i]=1;a[i][i]=1;

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

a[i][j]=a[i-1][j-1]+a[i-1][j];

}

printf("所求:

\n");

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

{

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

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

printf("\n");

}

}

10([目的]运用所学知识解决实际问题。

[题目内容]编写程序~按要求填充5×5矩阵~并输出。

1,左上三角为+1

2,右下三角为-1

3,从右到左的对角线为0

[输入]无

[输出]要求填充的5×5矩阵

[提示]

#includevoidmain()

{

inta[5][5];

inti,j;

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

{

for(j=0;j<4-i;j++)

a[i][j]=+1;

}

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

{

for(j=4-i;j<5;j++)

a[i][j]=-1;

}

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

{

a[4-i][i]=0;

}

printf("所求:

\n");

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

{

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

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

printf("\n");

}

}

11([目的]掌握字符数组的定义、初始化、输出。

[题目内容]编写程序~定义一个字符数组并赋初值“HappyNewyear:

”~输出

这个字符串。

[输入]无

[输出]字符串

[提示]使用for循环结构输出

#includevoidmain()

{

charch[15]={'H','a','p','p','y','','N','e','w','','y','e','a','r','!

'};

inti;

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

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

printf("\n");

}

12([目的]掌握字符数组的定义、初始化、处理、输出。

[题目内容]编写程序~定义一个字符数组并赋初值“HappyNewyear:

”~将其

中的小写字母转换成大写并输出处理后的字符串。

[输入]无

[输出]处理后的字符串

[提示]逐个判断数组中的各元素是否小写字母~是则转换成大写字母,ASCII值

-32,~不是则不做处理,使用for循环结构输出。

#include

voidmain()

{

charch[15]={'H','a','p','p','y','','N','e','w','','y','e','a','r','!

'};

inti;

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

{

if(ch[i]>='a'&&ch[i]<='z')ch[i]=ch[i]-32;

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

}

printf("\n");

}

13([目的]掌握字符数组的定义、字符串的输入与输出[题目内容]编写程序~定义一个字符数组~从键盘输入你姓名的全拼音字符串~

存储到已经定义好的字符数组中~最后输出你姓名的全拼音字符串。

你姓名的全拼音字符串[输入]

[输出]你姓名的全拼音字符串

[提示]使用标准库函数gets()、puts()。

#include

voidmain()

{

charname[11];

printf("请输入你的姓名:

");

gets(name);

printf("你输入的姓名是:

");

puts(name);

}

14([目的]掌握字符串的处理、输出。

[题目内容]编写程序~定义两个字符串变量~使用输入函数为其赋值~将两个字

符串连接起来并输出,不用strcat函数,。

[输入]两个字符串

[输出]连接后的字符串

[提示]逐个字符进行处理~使用while循环结构以及字符串的结束标志’\0’。

#include

voidmain()

{

chara[50],b[20];

inti,j;

printf("输入第一个字符串:

\n");

gets(a);

printf("输入第二个字符串:

\n");

gets(b);

i=0;

while(a[i]!

='\0')

{

i++;

}

j=0;

while(b[j]!

='\0')

{

a[i]=b[j];

i++;

j++;

}

a[i]='\0';

printf("所求:

\n");

i=0;

while(a[i]!

='\0')

{

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

i++;

}

printf("\n");}

15([目的]掌握字符串的处理、输出。

[题目内容]编写程序~输入一个字符串和一个单个字符~在输入的字符串中删除

所有的单个字符。

例如:

从字符串nedtworkdtou中删除d的情况。

删除前

nedtworkdtou\0

删除后

networktou\0

[输入]一个字符串和一个单个字符[输出]删除后的字符串

[提示]逐个字符进行处理

#includevoidmain()

{

chara[50],b;

inti,j;

printf("输入一个字符串:

\n");

gets(a);

printf("输入一个待删除的字符:

\n");

scanf("%c",&b);

i=0;

while(a[i]!

='\0')

{

printf("%c%c\n",a[i],b);

if(a[i]==b)

{

j=i;

while(a[j]!

='\0')

{

a[j]=a[j+1];

j++;

}

}

i++;

}

a[i]='\0';

:

\n");printf("所求

i=0;

while(a[i]!

='\0')

{

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

i++;

}

printf("\n");

}

16([目的]掌握字符串的处理、输出。

[题目内容]编写程序~从键盘输入5个学生的姓名~输出最长的学生姓名。

[输入]5个学生的姓名

[输出]最长的学生姓名

[提示]定义charnames[5][30],max[30];利用求最大值算法~使用strlen(),strcpy()

函数。

#include#includevoidmain()

{

charnames[5][30],max[30];

inti,length,length1,m;

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

{

printf("输入第%d个姓名:

\n",i+1);

gets(names[i]);

}

strcpy(max,names[0]);

length=strlen(max);

for(i=1;i<5;i++)

{

length1=strlen(names[i]);

if(length1>length)

{

strcpy(max,names[i]);

length=strlen(max);

m=i;

}

}

printf("所求:

\n");

puts(max);

printf("\n");

}

17([目的]掌握字符串的定义、输入、处理、输出。

[题目内容]编写程序~输入一个字符串~对该字符串中的字符从小到大排序并

输出。

[输入]一个字符串

[输出]排序后的字符串

[提示]逐个字符进行处理

#include

voidmain()

{

charstr[80],temp,mins;

inti,j;

printf("输入字符串:

\n");

gets(str);

printf("输入的字符串是:

\n");

puts(str);

for(i=0;str[i]!

='\0';i++)

{

mins=i;

for(j=i+1;str[j]!

='\0';j++)

if(str[j]

mins=j;

temp=str[mins];

str[mins]=str[i];

str[i]=temp;

}

printf("所求:

\n");

puts(str);

printf("\n");

}

18([目的]掌握字符串的处理、输出。

[题目内容]编写程序~定义charnames[5][30],并赋初值5个学生姓名~从键盘

输入1个需要查找的学生姓名~在存放的5个学生姓名中查找有无该学生~输出

查找信息。

[输入]1个需要查找的学生姓名

[输出]查找信息

[提示]顺序查找算法~利用字符串比较函数。

#include#includevoidmain()

{

charnames[5][30],search[30];

inti,flag=0;

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

{

printf("输入第%d个姓名:

\n",i+1);

gets(names[i]);

}

printf("输入要查找的姓名:

\n");

gets(search);

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

{

if(strcmp(search,names[i])==0)

{

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1