欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    实验 数组——参考答案.docx

    • 资源ID:49654487       资源大小:37.79KB        全文页数:14页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    实验 数组——参考答案.docx

    实验 6 数组一、一维数组实验0 1 2 3 4 5 6 7 8 9#include<stdio、h>void main()int i, j, a10, t; printf("Input 10 number: "); for(i=0; i<10; i+)scanf("%d", &ai);printf("origin data: "); for(i=0; i<10; i+)printf("%d ", ai);printf("n"); for(i=0,j=9;i<j ; i+,j-)t=ai; ai=aj; aj= t;printf("After reversed: "); for(i=0; i<10; i+)printf("%d ", ai); printf("n");/*读入数据*/*输出原始数据*/*逆序存放*/*输出逆序存放后得数据*/2、 编程:输入长度为 10 得整型数组并输出;然后将其逆序存放后再输出。例如:3、 编程:输入 n 个(1<n<=10)正整数并保存到数组中,求出最大值、最小值、平均值,以及最大值、最小值在数组中得下标分别就是多少。例如:5#include <stdio、h> void main()int i, n , max, min, a10, sum; float average;printf("Input n (1<n<=10): "); scanf("%d", &n);if(1<n && n<=10)printf("Input %d integer:", n);for(i=0, sum=0; i<n; i+)scanf("%d", &ai); sum+=ai;average=(float)sum/n;for(i=0, max=0, min=0; i<n; i+)if(ai > amax) max= i;if(ai < amin) min= i;/*输入数据并求累加与*/*求出平均值*/*求最大、最小值得下标*/printf("max=%-5d index=%dn", amax, max); printf("min=%-5d index=%dn", amin, min);printf("average=%、2fn", average);elseprintf("数据超出范围");#include <stdio、h> void main()inti, max, min;float a10, ave;printf("请输入 10 个评委得打分:"); for(i=0, ave=0; i<10; i+)scanf("%f", &ai); ave+=ai;for(i=0, max=0 , min=0; i<10; i+)if(ai>amax) max=i;if(ai<amin) min=i;ave=ave-amax-amin; ave=ave/8;printf("该选手得评委打分就是:"); for(i=0; i<10; i+)/*输入分数并求累加与*/*求最大、最小值得下标*/4、 编程:青年歌手参加歌曲大奖赛,有 10 个评委对她(她)进行打分,试编程求这位选手得平均得分并输出(去掉一个最高分与一个最低分)。printf("%、2f", ai); printf("n");printf("去掉最高分%、2f,去掉最低分%、2f,该选手得平均得分就是%、2fn", amax, amin,ave);5、 编程:用两种方法输出斐波那切数列得前 40 项(参考例 6-4)。要求: (1)方法 1:不使用数组;#include <stdio、h> void main()int f1=1, f2=1, f3, i; printf("%12d%12d", f1, f2); for(i=3; i<=40; i+)f3=f1+f2; printf("%12d", f3); if(i%5=0)printf("n"); f1= f2;f2= f3;#include <stdio、h> void main()int i;int fib40; fib0=fib1=1; for(i=2; i<40; i+)fibi= fibi-1 + fibi-2;for(i=0; i<40; i+)printf("%12d",fibi); if(i+1)%5=0)printf("n");/*计算其余得 38 个数*/(2)方法 2:使用一维数组。6、 编程:输入n 个(1<n<=10)float 型得数据并保存到数组中,用冒泡法或选择法将它们从大到小排序后输出。例如:552351144950510490230140#include <stdio、h> void main()int i, j, n;float a10, t; printf("Input n: ");scanf("%d",&n); if(n>1 && n<=10)printf("Input %d number:", n); for(i=0;i<n;i+)scanf("%f",&ai); printf("Before sorted:"); for(i=0; i<n; i+)printf("%、2f ", ai); printf("n");for(i=0; i<n-1; i+) for(j=0; j<n-i-1; j+)if( aj < aj+1 )t=aj; aj=aj+1; aj+1=t;/*输出排序前得数据*/*冒泡排序*/printf("After sorted:"); for(i=0; i<n; i+)printf("%、2f ", ai); printf("n");/*输出排序结果*/elseprintf("数据超出范围");7、 在上题基础上(输入 n 个 float 型得数据并保存到数组中,用冒泡法或选择法将它们从大到小排序后输出)程序分析:首先判断此数就是否大于最后一个数,然后再考虑插入中间得数得情况,插入后此元素之后得数, 依次后移一个位置。#include <stdio、h> void main()int i, j, n, p;float a10, t, m;printf("Input n: ");scanf("%d", &n); if(n>1 && n<=10)printf("Input %d number:", n); for(i=0; i<n; i+)scanf("%f", &ai);完成:在已经排好序得数组(长度不足 10)中插入一个数 m(键盘输入)后输出,保持数组得降序排列。printf("Before sorted: ");/*输出排序前得数据*/ for(i=0; i<n; i+)printf("%、2f ", ai); printf("n");for(i=0; i<n-1; i+)/*冒泡排序*/ for(j=0; j<n-i-1; j+)if( aj < aj+1 )t=aj; aj=aj+1; aj+1=t;elseprintf("After sorted:");/*输出排序结果*/ for(i=0; i<n; i+)printf("%、2f ", ai);printf("n");printf(" 请输入要插入得数据 m: "); scanf("%f", &m);/*找到插入位置*/if(m < an-1)/*如果 m 比最后一个元素小,则直接插入到最后得位置*/ p = n;for(i=0; i<n; i+)/*否则,插入到中间得某个位置*/ if( m > ai)p=i;break;for(i=n; i>=p+1; i-)/*将插入位置之后得元素后移*/ ai=ai-1;/*插入*/ ap=m;printf("插入%、2f 后:", m);/*输出插入后结果*/ for(i=0; i<n+1; i+)printf("%、2f ", ai); printf("n");elseprintf("数据超出范围");二、二维数组实验1、 以下程序功能为:将下列矩阵中得元素向右移动一列,最后一列移至第一列。找出并改正以下源程序中错误,通过调试得出正确得运行结果。14681012源程序(有错误得程序) #include <stdio 、 h> #define ROW 2#define COL 3 int main()int aROWCOL=1,4,6,8,10,12;int i,j,temp; for(i=0;i<ROW;i+)temp=aiCOL-1;for(j=COL-2;j>=0;j-)aij=aij+1;/*调试时设置断点*/改为 aij+1=aij;ai0=temp;/*调试时设置断点*/for(int i=0;i<ROW;i+)/去掉 intfor(j=0;j<COL;j+) printf("%6d",aij);printf("n");return 0;运行结果(改正后程序得运行结果)614128102、 编程:利用二维数组计算并打印一个 n 行得杨辉三角。例如:11112113311464114101051提示:第一列及对角线上得元素都就是 1,其她元素通过计算得出:如果用 i 表示行,j 表示列,则第 i 行 j 列得元素#include <stdio、h> void main()int a1010=0;int i, j, n;/设最多 10 层printf("请输入杨辉三角形得层数:");scanf("%d", &n); if(n>10)printf("层数超出范围"); return;for(i=0;i<n;i+)ai0=1;aii=1;for(i=2;i<n;i+)for(j=1;j<i;j+)/给第 0 列与主对角线上得元素赋值 1/计算其她位置元素得值aij=ai-1j-1+ai-1j;for(i=0;i<n;i+)/输出for(j=0;j<=i;j+) printf("%4d",aij);printf("n");12345678910110#include <stdio、h> void main()int a34,i,j;printf("请输入3 X 4整数矩阵:n"); for(i=0; i<3; i+)for(j=0; j<4; j+) scanf("%d", &aij);printf("按行输出:"); for(i=0; i<3; i+)for(j=0; j<4; j+) printf("%d",aij);printf("n");printf("按列输出:"); for(i=0; i<4; i+)for(j=0; j<3; j+) printf("%d ",aji);printf("n");3、 编程:通过键盘输入 3 行 4 列得二维数组,分别按行与按列输出数组。例如:245564、 编程:输入一个 m*n 矩阵,求她们得各行元素之与。例如:提示:设计一个一维数组 int s10,分别保存各行元素之与。#include <stdio、h> void main()int a1010, s10=0;int m, n, i, j;/设定矩阵最大为 10 x 10printf("请输入矩阵得行数与列数:"); scanf("%d%d", &m, &n);if(m<0 | m>10 | n<0 | n>10)printf("行或列(110)值超出范围"); return;printf("请输入%d*%d矩阵:n",m,n); for(i=0; i<m; i+)for(j=0; j<n; j+) scanf("%d",&aij);/求各行之与并输出for(i=0; i<m; i+)for(j=0; j<n; j+) si+=aij;printf("sun%d= %d n", i, si);5、 编程:判断一个二维数组就是否存在鞍点,若存在,则输出鞍点及其行号与列号;否则输出没有鞍点信息。“鞍点”就是指这样得元素:它在本行就是最大元素,而在本列就是最小得元素。提示:找鞍点需要处理三件事情:(1)找每行中最大值所在得列下标;(2)判断该元素在本列上就是否为最小;(3) 判断就是否找到了鞍点,若找到,输出。#include <stdio、h> void main()int a1010;/设定矩阵最大为 10 x 10int m, n, i, j, col, flag=0;printf("请输入矩阵得行数与列数:"); scanf("%d%d", &m, &n);if(m<0 | m>10 | n<0 | n>10)printf("行或列(110)值超出范围"); return;printf("请输入%d*%d矩阵:n",m,n); for(i=0; i<m; i+)for(j=0; j<n; j+) scanf("%d",&aij);for(i=0; i<m; i+)col=0;for(j=1; j<n; j+) if(aicol<aij)col=j; for(j=0; j<m; j+)if(aicol>ajcol)break; if(j=m)/退出程序/找出第 i 行中得最大值所在列下标 col/判断该元素在本列上就是否为最小flag=1;/有鞍点printf("i=%d, j=%d, saddle point:%dn",i,col,aicol);if(flag=0)printf("No saddle point!n");三、字符串实验1、 以下程序功能为:输入一个字符串,将其逆序输出。找出并改正以下源程序中错误,通过调试得出正确得运行结果。源代码(有错误得程序) #include <stdio 、 h> #include <string 、 h> void main()int i,j;char s80,result80; printf("Enter a string:n"); gets(s);for(i=strlen(s)-1,j=0;i>=0;i-,j+)resultj=si;resultj='0'/必须给字符串加上串结束标志printf("This is reverse string:n");puts(result);运行结果(改正后得程序)2、 编程:任意输一个字符串保存在一维字符数组中,求其长度(不用 strlen 函数)。例如:#include <stdio、h> void main()int i, len=0; char s80;printf("请输入字符串,以回车键结束:"); gets(s);for(i=0; si!='0' i+) len+;printf("字符串%s 得长度为:%dn",s, len);提示:字符串得有效长度就就是有效字符得个数,即数组中第一个0前面得字符个数。3、 编程:任意输入两个字符串分别保存在一维字符数组中,把第二个字符串连接到第一个字符串末尾(不用#include <stdio、h> void main()int i,j;char s180, s280;printf("请输入字符串 1 以回车键结束:n"); gets(s1);printf("请输入字符串 2 以回车键结束:n"); gets(s2);for(i=0; s1i!='0' i+) ; for(j=0; s2j && i<80; i+, j+ )s1i=s2j;s1i='0'/* 定位第一个字符串得结束标志*/*将 s2 接到 s1 后*/strcat 函数)。例如:printf("两个串连接后:%sn",s1);#include <stdio、h> void main()int i;char a80, b80;printf("请输入字符串 1 以回车键结束:n"); gets(a);printf("请输入字符串 2 以回车键结束:n"); gets(b);/逐个比较直到两个字符不同或其中一个字符串结束for(i=0; ai && bi ; i+)if(ai!=bi) break;if (ai>bi)printf("第一个字符串%s 大!n", a); else if (ai=bi)printf("两字符串相同!n"); elseprintf("第二个字符串%s 大!n", b);4、 编程:从键盘读入两个字符串分别保存在一维字符数中,比较两个字符串大小(不用 strcmp 函数),输出较大得字符串。5、 编程:任意输入一个字符串保存在一维字符数组中,判断里面数字字符得个数。例如:#include <stdio、h>#include <stdio、h> void main()int i, n=0; char s80;printf("请输入一个字符串以回车键结束:n"); gets(s);for(i=0 ; si; i+) if(si>='0' && si<='9')n+;printf("字符串中包含得数字个数为:%dn",n);6、 编程:从一个字符串中删除从某个特定字符开始得所有字符。例如原字符串为"abcdefg",特定字符为'd', 删除后得字符串为"abc"。void main()int i, flag=0; char c, s80;printf("请输入一个字符串以回车键结束:n"); gets(s);printf("请输入特定字符:"); c=getchar();for(i=0 ; si; i+) if(si=c)si='0' flag=1; break;if(flag=0)printf("输入字符中没有特定字符!n"); elseputs(s);#include <stdio、h> #include <string、h> void main()unsigned int i, j, m, n; char s180, s280;printf("请输入一个字符串以回车键结束:n"); gets(s1);printf("请输入子串得起始位置与长度:"); scanf("%d%d", &n, &m);if( n>0 && n<=strlen(s1) )if (m>0 && n+m <= strlen(s1)+1 )for(i=n-1,j=0; s1i && i< n+m-1 ; i+, j+)s2j=s1i;s2j='0'puts(s2);elseprintf("长度超出范围!n");elseprintf("起始位置超出范围!n");7、 编程:编写程序,从一个输入得字符串中抽取一部分(从第 n 个字符开始,抽取 m 个字符)构成一个新得字符串,并输出。要求:n 与 m 都由用户输入。8、 编程:利用字符串库函数 puts, gets, strcat, strcmp, strcpy, strlen 完成下述操作:l 读入三个字符串 str1,str2,str3l 输出这三个字符串l 分别求出这三个字符串得长度;l 比较 str1 与 str2 得大小;l 将 str2 连接到 str1 之后,并输出连接后得 str1;l 复制 str3 到 str1,并输出复制操作后得 str1;#include <stdio、h> #include <string、h> void main()选作题:char str180, str280, str380;printf("请输入字符串 str1 以回车键结束:n");gets(str1);printf("请输入字符串 str2 以回车键结束:n"); gets(str2);printf("请输入字符串 str3 以回车键结束:n");gets(str3);printf("三个字符串分别就是:n"); printf("str1:%sn", str1); printf("str2:%sn", str2);printf("str3:%sn", str3);printf("三个字符串得长度分别就是:n"); printf("str1:%dn", strlen(str1); printf("str2:%dn", strlen(str2);printf("str3:%dn", strlen(str3);if(strcmp(str1, str2)>0)printf("字符串 str1 大于 str2n"); else if(strcmp(str1, str2)=0)printf("字符串 str1 等于 str2n");elseprintf("字符串 str1 小于 str2n"); strcat(str1,str2);printf(" str2 连接到 str1 之后:%sn",str1);strcpy(str1,str3);printf("复制 str3 到 str1:%sn",str1);输入一个小写字母组成得英文句子,统计该句子有几个英文单词,并统计每个字母出现得次数,并将句子中每个单词得首字母大写后输出。如:输入: this is a cat! 输出:4 个单词;每个字母出现次数 t:2h:1i:2s:2a:2c:1 This Is A Cat!#include <stdio、h>void main()char s80;int count26=0;/与 26 个字母对应,统计各个字母出现得次数int i, j, wordnum=0, flag=0;printf("请输入一个英文句子(小写字母)以回车键结束:"); gets(s);for(i=0; si; i+)if(si>='a' && si<='z')/逐个字母判断,使其对应得出现次数增加 1j=si-'a'/ 计算该字母在 26 个字母中得序号countj+;if(i=0 && si!=' ' | flag=1)/句首单词及每个单词第一个字母得处理wordnum+;/单词个数增加 1si=si-32;/小写换大写flag=0;else if(si=' ' &&si+1>='a' && si+1<='z') flag=1;/当前就是空格,但下一个字符就是字母,则该字母一定就是单词得起始字母 flag=1。/即判断一个单词得起始字符,单词间用空格区分,这里考虑了单词间多个空格得情况printf("句子中有%d 个单词;n",wordnum); printf("每个字母出现得次数:");for(i=0; i<26; i+)if(counti!=0)printf("%c: %d ", i+'a', counti);printf("n");printf("每个单词首字母大写后:"); puts(s);

    注意事项

    本文(实验 数组——参考答案.docx)为本站会员(暗伤)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开