




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计实验报告实验项目一:数组学号1605120308姓名何峰专业、班级计算机03班实验时间2017.02.28实验地点机房6指导教师孙爱蓉一、实验目的及要求(1) 正确理解数组的概念,熟练掌握一维数组和二维数组的定义和初始化方法。 (2) 熟练掌握字符数组和字符串的区别和使用、字符串函数的使用。 (3) 熟练掌握一维数组、二维数组以及字符串的输入和输出方法。(4) 掌握冒泡排序、选择排序及查找算法。 (5) 掌握字符窜的结束标志,正确使用字符串的结束标志对字符串进行处理。 通过编程和调试程序,加深对数组、字符数组和字符串函数应用的理解二、实验设备(环境)及要求使用Visual C+
2、6.0;windows系列操作系统的环境。三、实验内容与步骤(要求以“学号_姓名_题号”为名建立项目;例项目名为:2013050201_*_01)1 运行下面的c程序。 运行结果: 分析: Num数组里面有五个数,而循环式循环六次,对于第六个数,数组里面没有定义,所以输出时出现错误。2 运行下面的c程序:1) 从键盘输入字符串:how are you,观察结果。 运行结果:2) 将上述程序的第四行改成scanf(“%s”,&str);,重新运行上述程序,观察输出结果有什么不同,为什么?重新运行的结果:分析: 前者能输入字符串,而后者只能输入字符,相当于只输入了how3) 如果用%c格式
3、输入输出字符串,程序应怎样修改?根据用%c格式输入输出字符的特点,修改后的程序为:#include<stdio.h>int main()int i;char str11='h','o','w',' ','a','r','e',' ','y','o','u'for(i=0;i<=10;i+)printf("%c",stri);printf("n");return 0
4、;3 改错有一个3×4的矩阵,要求输出其中值最大的元素的值,以及它的行号和列号。 #include<stdio.h>#define M 3#define N 4int main()int max,i,j,r,c;r=0;c=0;int aMN=323,94,-10,218,3,9,10,-83,45,16,44,-99;max=a00;for(i=0;i<M;i+)for(j=0;j<N;j+)if(aij>max)max=aij;r=i;c=j;printf("max=%d,行=%d,列=%dn",max,r,c);return 0
5、;4 改错 下面是用来将数组a中元素按升序排序后输出的源程序。分析源程序中存在的问题,并对源程序进行修改,使之能争取完成任务。 #include<stdio.h>int main()int a10=27,13,5,32,23,3,17,43,55,39;int i;int sort(int,int);sort(a,10);for(i=0;i<10;i+)printf("%6d",ai);printf("n");return 0; int sort(int b,int n) int i,j,t;for(i=0;i<n-1;i+)fo
6、r(j=0;j<n-1;j+)if(bj<bj+1)t=bj;bj=bj+1;bj+1=t; return 0; 5 编一个程序,输入10个整数,统计并输出其中正数、负数和零的个数。)#include<stdio.h>int main()int a10,i,zheng,fu,ling; zheng=0;fu=0;ling=0;for(i=0;i<=9;i+) scanf("%d",&ai);for(i=0;i<=9;i+) if(ai>0) zheng=zheng+1; if(ai<0) fu=fu+1;if(ai=0
7、) ling=ling+1;printf("正数的个数是%dn",zheng); printf("负数的个数是%dn",fu); printf("零的个数是%dn",ling);return 0;6 应用数组求Fabonacci数列的前40项(该数列前两项为1,以后各项均为前相邻两项之和)要求以每行8个输出。#include<stdio.h>int main()int f40=1,1,i;for(i=1;i<=38;i+)fi+1=fi+fi-1; for(i=0;i<=39;i+)if(i+1)%8=0) p
8、rintf("n");printf("%9ld",fi);return 0;7 用冒泡法对20个整数排序。20个整数需要键盘键入。 #include<stdio.h>int main()int a20,i,j,t;for(i=0;i<=19;i+)scanf("%d",&ai);for(i=18;i>=0;i-) for(j=0;j<=i;j+) if(aj<aj+1) t=aj;aj=aj+1;aj+1=t;for(j=0;j<=19;j+) printf("%3d&quo
9、t;,aj);printf("n");return 0;8 用选择法对20个整数排序。20个整数需要键盘键入。#include<stdio.h>int main()int a20,i,j,t;for(i=0;i<=19;i+) scanf("%d",&ai);for(i=0;i<=18;i+)for(j=i+1;j<=19;j+)if(ai<aj)t=ai;ai=aj;aj=t;for(i=0;i<=19;i+) printf("%3d",ai);printf("n"
10、;);return 0;9 编程实现:对任意一个一维数组,从中找出数组元素的最大值和最小值。 要求: (1)数组为整型数组(10个元素)。 (2)使用scanf函数实现数组元素的输入。在输入前给出必要的提示。 (3)输出时给出必要的说明,首先输出原始的10个元素,换行后输出最大值以及最大值在数组中的位置、最小值以及最小值在数组中的位置。 (4)如果现改为20个元素的数组,怎样修改程序?修改程序后,运行程序进行检查。如果需要数组元素不断改变,应怎样修改程序?答:将数组a【10】扩大范围就可以,比如要输入20个数,就把数组定义成a【20】#include<stdio.h>int mai
11、n()int a10,i,max,min,t1,t2;t1=1,t2=1;1printf("请输入元素:");for(i=0;i<10;i+)scanf("%d",&ai);printf("输入的元素为:");max=a0,min=a0;for(i=0;i<10;i+)printf("%5d",ai);printf("n");for(i=1;i<=9;i+)if(ai>max)max=ai;t1=i+1; if(ai<min) min=ai; t2=i+1;
12、printf("最小的数为%d,为第%d个数n",min,t2); printf("最大的数为%d,为第%d个数n",max,t1);return 0;10 编写一个程序,从键盘读入数据,对一个3*4矩阵进行赋值,求其转置矩阵,然后输出原矩阵和转置矩阵。#include<stdio.h>int main()int a34=1,2,3,4,5,6,7,8,9,10,11,12;int b43,i,j;for(i=0;i<=2;i+)for(j=0;j<=3;j+)printf("%5d",aij);bji=aij
13、;printf("n");printf("n");for(i=0;i<=3;i+) for(j=0;j<=2;j+) printf("%5d",bij);printf("n"); return 0;11 编程实现“折半查找”的过程。折半查找的处理过程是:在一个数据已排好序的数组中,首先比较关键字与数组中间的元素,如果两者相等,则查找结束;如果前者比后者小,则要查找的数据必然在数组的前半部,此后只需在数组的前半部中继续折半查找;如果前者的数值比后者大,则要查找的数据必然在数组的后半部,此后只需在数组的后半
14、部继续进行折半查找。 要求: (1)设定一个数组存放20个数据,用赋初值的方法在程序中给出(假设这些数据已排序)。 (2)用scanf函数输入一个要找的数。 (3)对查找的结果给出相应的说明,如果找到该数,则给出该数是数组中第几个元素。如果该数不在数组中,则输出“无此数”信息。 (4)任意输入一些数据,检查程序的正确性。 (5)修改程序,设定输入的数据是无序的,采用scanf函数的形式输入,首先要对这些无序的数据进行排序,然后再采用“折半查找”。最后通过测试几组差别较大的数据检查程序的正确性。 (6)修改程序,改为函数调用的形式。编写一个选择法排序函数,对无序数据进行排序;编写一个查找函数对已
15、排好序的数据进行查找。在主函数中输入数据(无序),调用上述函数,输出结果。 #include<stdio.h>int main()int a20=1,2,5,6,12,13,15,16,18,19,20,24,25,26,28,29,31,34,54,56;int x,low,found,high,mid;low=0,high=19,found=0;scanf("%d",&x);while(low<high&&!found)mid=(low+high)/2;if(x>amid) low=mid+1;else if(x<a
16、mid) high=mid-1;else found=1;if(found)printf("这个数是第%d个数n",mid+1);elseprintf("未找到n");return 0;、#include<stdio.h>int main ()int a20,x,t,i;for(i=0;i<=19;i+) scanf("%d",&ai);int paixu(int,int);paixu(a,20);printf("排好序列的数为:");for(i=0;i<=19;i+)printf("%4d",ai);printf("n");scanf("%d",&x);int low,found,high,mid;low=0,high=19,found=0;while(low<high&&!found)mid=(low+high)/2;if(x>amid) low=mid+1;else if(x<amid) high=mid-1;else found=1;t=mid+1;if(found)print
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025合同范本汇编全册
- 企业战略管理的案例分析试题及答案
- 行政控制的基本原则试题及答案
- 行政管理学综合应用试题及答案
- 行政管理自考试题一览与答案总结
- 2025债务解决非诉讼性质的合同协议范本
- 2025二手房合同订立的程序是怎样的
- 2025公司员工秘密劳动合同模板
- 2025聚氨酯地坪涂料施工合同范本
- 2025中文版工程承包合同范本
- 健康主题班会 《如何正确与异性同学相处》班会课件
- 《反家庭暴力》课件
- 退租回复函范本
- 幼儿园孩子挑食培训
- 2024-2025学年初中八年级数学学期期末检测模拟卷(人教版)含答案
- 第22课 从局部抗战到全国抗战 说课稿-2023-2024学年高一上学期统编版(2019)必修中外历史纲要上
- 机器人技术在智能建造中的应用与发展现状
- 医学证据的临床转化
- 中考英语复习阅读理解-主旨大意题、推理判断题
- 分离工程知到智慧树章节测试课后答案2024年秋昆明理工大学
- 幼儿园观察记录书写培训
评论
0/150
提交评论