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