C语言实验五、数组程序设计解答_第1页
C语言实验五、数组程序设计解答_第2页
C语言实验五、数组程序设计解答_第3页
C语言实验五、数组程序设计解答_第4页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.C 语言实验五、数组程序设计解答实验五数组应用 , 二,一、实验目的1( 掌握二维数组的定义和初始化。2( 掌握二维数组元素的引用及其应用。3( 掌握字符数组的定义和初始化。4( 掌握字符数组元素的引用及其应用。二、实验内容1( 目的 掌握二维数组的输出方法。 题目内容 已知有二维数组 a 的定义 :inta34=1,2,3,4,5,6,7,8,9,10,11,12;编程序以三行四列的形式输出 a 数组。输入无 输出123456789101112 提示 利用二重 for循环结构与 printf()。 #include <stdio.h> voidmain()int a34=1,2

2、,3,4,5,6,7,8,9,10,11,12;int i,j;printf("二维数组 :n");for(i=0;i<3;i+).for(j=0;j<4;j+)printf("%6d",aij);printf("n");2( 目的 掌握二维数组的输入、输出方法。 题目内容 已知有一个 3 行 2 列的二维数组 : 89 7667 9854 78编程序从键盘输入数据存储在二维数组中并以3 行 2 列的形式输出。 输入 89 76 6798 5478 输出89 7667 9854 78 提示 利用二重 for循环结构与 sc

3、anf() 、 printf()及%4d格式输出。#include <stdio.h>void main()int a32;int i,j;printf("请输入 3 行 2 列二维数组 :n");for(i=0;i<3;i+).for(j=0;j<2;j+)scanf("%d",&aij);for(i=0;i<3;i+)for(j=0;j<2;j+)printf("%4d",aij);printf("n");3( 目的 掌握二维数组的输入、输出、处理方法。 题目内容 编

4、程序生成一个 5 行 5 列的二维矩阵并输出。1000001000001000001000001输入无 输出1000001000001000001000001 提示 利用 for循环结构生成原则 : 行下标与列下标相同的数组元素为1其.余为 0。%4d格式输出。#include <stdio.h> void main()int a55;int i,j;for(i=0;i<5;i+)for(j=0;j<5;j+)if(i=j) aij=1;else aij=0;for(i=0;i<5;i+)for(j=0;j<5;j+)printf("%4d&quo

5、t;,aij);printf("n");4( 目的 运用所学知识解决矩阵转置问题。×2矩阵编程序将a 矩阵转置生成矩阵b,2 ×3, 题目内容 设 a 矩阵是 3并输出。 输入 a 矩阵 输出 b 矩阵 提示 利用不同矩阵行列下标的关系。,b=a, iiji#include <stdio.h> voidmain().int a32,b23;int i,j;printf("请输入 a 数组 :n");for(i=0;i<3;i+)for(j=0;j<2;j+)scanf("%d",&a

6、ij);for(i=0;i<3;i+)for(j=0;j<2;j+)bji=aij;printf("a数组 :n");for(i=0;i<3;i+)for(j=0;j<2;j+)printf("%4d",aij);printf("n");printf("b数组 :n");for(i=0;i<2;i+)for(j=0;j<3;j+)printf("%4d",bij);printf("n");.5( 目的 运用所学知识解决矩阵相乘问题。 题目内

7、容 设 a 矩阵是 3×2矩阵 b 矩阵是 2×3矩阵满足矩阵相乘条件编程序将 a 矩阵×b矩阵生成 c 矩阵 ,3 ×3, 并输出。 输入 a 矩阵、 b 矩阵 输出 c矩阵2c,a , b,ijikkj提示 计算公式 :,1k#include <stdio.h>void main()int a32,b23,c33=0;int i,j,k;printf("请输入 a 数组 :n");for(i=0;i<3;i+)for(j=0;j<2;j+)scanf("%d",&aij);pri

8、ntf("请输入 b 数组 :n");for(i=0;i<2;i+)for(j=0;j<3;j+)scanf("%d",&bij);for(i=0;i<3;i+)for(j=0;j<3;j+)for(k=0;k<2;k+).cij=cij+aik*bkj;n"); printf("a数组 :for(i=0;i<3;i+)for(j=0;j<2;j+)printf("%4d",aij);printf("n");printf("b数组 :n

9、");for(i=0;i<2;i+)for(j=0;j<3;j+)printf("%4d",bij);printf("n");printf("c数组 :n");for(i=0;i<3;i+)for(j=0;j<3;j+)printf("%4d",cij);printf("n");6( 目的 运用所学知识解决矩阵问题。. 题目内容 设有一个 5×5方阵编程序判断该方阵是否为对称矩阵。并输出判断结果。 输入 5 ×5方阵 输出 判断结果 提示 如

10、果矩阵中的每个元素都满足arrayij=arrayji则称这个矩阵为对称矩阵。#include <stdio.h>void main()int a55;int i,j,flag=0;n"); printf("请输入 5*5 数组 :for(i=0;i<5;i+)for(j=0;j<5;j+)scanf("%d",&aij);for(i=0;i<5;i+)for(j=0;j<5;j+)if(aij!=aji) flag=1;printf("a数组 :n");for(i=0;i<5;i+)

11、for(j=0;j<5;j+).printf("%4d",aij);printf("n");if(flag=0) printf("是对称矩阵。 n");else printf("不是对称矩阵。 n");6( 目的 运用所学知识解决矩阵问题。 题目内容 设有一个 3 行 5 列的二维数组编写程序从键盘输入数据建立这个二维数组并找出二维数组中的鞍点。 输入 3 ×5矩阵 输出鞍点 提示 鞍点是指在行上是最大但是所在列最小的元素, 这样的元素可能不存在 , 。#include <stdio.h>

12、;void main()int a35;int i,j,k,m,max,flag;printf("请输入 3*5 数组 :n");for(i=0;i<3;i+)for(j=0;j<5;j+)scanf("%d",&aij);printf("a数组 :n");.for(i=0;i<3;i+)for(j=0;j<5;j+)printf("%4d",aij);printf("n");for(i=0;i<3;i+)max=ai0;for(j=0;j<5;j+)

13、if(aij>max) max=aij;k=j;for(m=0;m<3;m+)if(amk<max) flag=1;else flag=0;if(flag=0) printf("鞍点是 :a%d%d=%dn",i,k,aik);7( 目的 运用所学知识解决实际问题。 题目内容 如下数据表显示了4 个销售人员所售的3 种物品的数量。物品 1 物品 2 物品 3 销售人员 1 310 275 365销售人员 2 210 190 325销售人员 3 405 235 240销售人员 4 260 300 380.请使用二维数组编写程序计算并显示以下信息: ,1,每个

14、销售人员的销售总值,2, 每种物品的销售总值,3, 所有销售人员销售的全部物品的总值 输入 销售数据表数据 输出 计算结果 提示 建立一个 5×4的二维数组#include <stdio.h>void main()int a54;int i,j;printf("请输入 4*3 数组 :n");for(i=0;i<4;i+)for(j=0;j<3;j+)scanf("%d",&aij);printf("原数组 :n");for(i=0;i<4;i+)for(j=0;j<3;j+)pr

15、intf("%4d",aij);printf("n");for(j=0;j<3;j+).a4j=0;for(i=0;i<4;i+)a4j=a4j+aij;for(i=0;i<5;i+)ai3=0;for(j=0;j<3;j+)ai3=ai3+aij;printf("所求数组 :n");for(i=0;i<5;i+)for(j=0;j<4;j+)printf("%4d",aij);printf("n");8( 目的 运用所学知识解决实际问题。设某班有 20 个学

16、生每个学生选修了三门课编写程序输入20 题目内容 个学生三门课的成绩计算每个学生的平均成绩最后输出每个学生三门课的成绩及平均成绩。. 输入 20 个学生三门课的成绩 输出 每个学生三门课的成绩及平均成绩 提示 建立一个 20×4的二维数组#include <stdio.h> void main()int a204;int i,j;printf("请输入 20*3 数组 :n");for(i=0;i<20;i+)for(j=0;j<3;j+)scanf("%d",&aij);printf("原数组 :n&

17、quot;);for(i=0;i<20;i+)for(j=0;j<3;j+)printf("%4d",aij);printf("n");for(i=0;i<20;i+)ai3=0;for(j=0;j<3;j+)ai3=ai3+aij;.printf("所求数组 :n");for(i=0;i<20;i+)for(j=0;j<4;j+)printf("%4d",aij);printf("n");9( 目的 运用所学知识解决实际问题。 题目内容 编写程序生成并输出杨

18、辉三角形 ,10 行, 。 输入无 输出 杨辉三角形 提示 初值 :int a1010=1,1,1#include <stdio.h> void main()int a1010=1,1,1;int i,j;for(i=2;i<10;i+)a0i=1;aii=1;for(j=0;j<10;j+)aij=ai-1j-1+ai-1j;printf("所求 :n");for(i=0;i<10;i+).for(j=0;j<=i;j+)printf("%4d",aij);printf("n");10( 目的 运

19、用所学知识解决实际问题。 题目内容 编写程序按要求填充5×5矩阵并输出。,1,左上三角为 +1,2,右下三角为 -1,3,从右到左的对角线为0输入无 输出 要求填充的 5×5矩阵 提示#include <stdio.h> void main()int a55;int i,j;for(i=0;i<5;i+)for(j=0;j<4-i;j+)aij=+1;for(i=0;i<5;i+).for(j=4-i;j<5;j+)aij=-1;for(i=0;i<5;i+)a4-ii=0;printf("所求 :n");for

20、(i=0;i<5;i+)for(j=0;j<5;j+)printf("%4d",aij);printf("n");11( 目的 掌握字符数组的定义、初始化、输出。 题目内容 编写程序定义一个字符数组并赋初值“Happy New year: ”输出这个字符串。输入无 输出字符串 提示 使用 for循环结构输出#include <stdio.h> void main().char ch15='H','a','p','p','y',' ',&

21、#39;N','e','w','','y','e','a','r','!'int i;for(i=0;i<15;i+)printf("%c",chi);printf("n");12( 目的 掌握字符数组的定义、初始化、处理、输出。 题目内容 编写程序定义一个字符数组并赋初值“Happy New year: ”将其中的小写字母转换成大写并输出处理后的字符串。输入无 输出 处理后的字符串 提示 逐个判断数组中的各元素是

22、否小写字母是则转换成大写字母,ASCII 值-32, 不是则不做处理 , 使用 for 循环结构输出。#include <stdio.h>void main()char ch15='H','a','p','p','y',' ','N','e','w','','y','e','a','r','!'int i;for(i=0;i<15;i+)i

23、f(chi>='a'&&chi<='z') chi=chi-32;printf("%c",chi);.printf("n");。 13( 目的 掌握字符数组的定义、字符串的输入与输出 题目内容 编写程序定义一个字符数组从键盘输入你姓名的全拼音字符串存储到已经定义好的字符数组中最后输出你姓名的全拼音字符串。你姓名的全拼音字符串 输入 输出 你姓名的全拼音字符串 提示 使用标准库函数gets() 、puts() 。#include <stdio.h>void main()char nam

24、e11;printf("请输入你的姓名 :");gets(name);printf("你输入的姓名是 :");puts(name);14( 目的 掌握字符串的处理、输出。 题目内容 编写程序定义两个字符串变量使用输入函数为其赋值将两个字符串连接起来并输出 , 不用 strcat函数 , 。 输入 两个字符串 输出 连接后的字符串 提示 逐个字符进行处理使用while 循环结构以及字符串的结束标志 0。.#include <stdio.h>void main()char a50,b20;int i,j;printf("输入第一个字符串

25、 :n");gets(a);printf("输入第二个字符串 :n");gets(b);i=0;while(ai!='0')i+;j=0;while(bj!='0')ai=bj;i+;j+;ai='0'printf("所求 :n");i=0;.while(ai!='0')printf("%c",ai);i+;printf("n"); 15( 目的 掌握字符串的处理、输出。 题目内容 编写程序输入一个字符串和一个单个字符在输入的字符串中删除所有

26、的单个字符。例如 : 从字符串 nedtworkdtou 中删除 d 的情况。 删除前 n e d t w o r k d t o u 0删除后n e t w o r k t o u 0 输入 一个字符串和一个单个字符 输出 删除后的字符串 提示 逐个字符进行处理#include <stdio.h> void main()char a50,b;int i,j;printf("输入一个字符串 :n");gets(a);printf("输入一个待删除的字符 :n");scanf("%c",&b);i=0;.while(

27、ai!='0')printf("%c %cn",ai,b);if(ai=b)j=i;while(aj!='0')aj=aj+1;j+;i+;ai='0':n"); printf("所求i=0;while(ai!='0')printf("%c",ai);i+;printf("n");.16( 目的 掌握字符串的处理、输出。 题目内容 编写程序从键盘输入5个学生的姓名输出最长的学生姓名。 输入 5 个学生的姓名 输出 最长的学生姓名 提示 定义 char

28、names530,max30;利用求最大值算法使用strlen(),strcpy()函数。#include <stdio.h> #include <string.h> void main()char names530,max30;int i,length,length1,m;for(i=0;i<5;i+)printf("输入第 %d个姓名 :n",i+1);gets(namesi);strcpy(max,names0);length=strlen(max);for(i=1;i<5;i+)length1=strlen(namesi);if(

29、length1>length)strcpy(max,namesi);.length=strlen(max);m=i;printf("所求 :n");puts(max);printf("n");17( 目的 掌握字符串的定义、输入、处理、输出。 题目内容 编写程序输入一个字符串对该字符串中的字符从小到大排序并输出。 输入 一个字符串 输出 排序后的字符串 提示 逐个字符进行处理#include <stdio.h>void main()char str80,temp,mins;int i,j;printf("输入字符串 :n&qu

30、ot;);gets(str);printf("输入的字符串是 :n");puts(str);for(i=0;stri!='0'i+).mins=i;for(j=i+1;strj!='0'j+)if(strj<strmins)mins=j;temp=strmins;strmins=stri;stri=temp;printf("所求 :n");puts(str);printf("n");18( 目的 掌握字符串的处理、输出。 题目内容 编写程序定义 charnames530,并赋初值 5 个学生姓名从键盘输入 1 个需要查找的学生姓名在存放的5 个学生姓名中查找有无该学生输出查找信息。 输入 1 个需要查找的学生姓名 输出 查找信息 提示 顺序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论