《C语言程序设计实验》实验报告.doc
《《C语言程序设计实验》实验报告.doc》由会员分享,可在线阅读,更多相关《《C语言程序设计实验》实验报告.doc(35页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、C语言程序设计实验实验报告指导老师: 专业: 班级: 学号: 姓名: 日期:2011-05-29 重庆邮电大学计算机科学与技术学院实验一实验名称:一维数组程序设计实验目的:1、 熟练掌握使用一维数组编程的方法。2、 熟练掌握排序算法。实验内容:1、 调试示例输入一个整数n(0n9)和一组数,再输入一个整数,把x插入到这个数据中,使该组数据仍然有序。源程序:略调试好的程序:#includeint main()int i,j,n,x,a10;printf(输入数据的个数n:);scanf(%d,&n);printf(输入%d个整数:,n);for(i=0;in;i+)scanf(%d,&ai);p
2、rintf(输入要插入的整数:);scanf(%d,&x);for(i=0;iai)continue;j=n-1;while(j=i)aj+1=aj;j-;ai=x;break;if(i=n)an=x;for(i=0;i=n;i+)printf(%dt,ai);return 0;2、 编程题1输入一个正整数n(0n=10),再输入n个整数,输出平均值(保留两位小数)。程序代码:#includeint main()int i,n,sum=0,a10;float av;printf(输入数据的个数n:);scanf(%d,&n);printf(输入%d个整数:,n);for(i=0;in;i+)s
3、canf(%d,&ai);for(i=0;in;i+)sum+=ai;av=(float)sum/n;printf(%0.2ft,av);return 0;3、 编程题2输入一个正整数n(0n=10),再输入n个整数,按逆序输出这些数。程序代码#includeint main()int i,n,a10;printf(输入数据的个数n:);scanf(%d,&n);printf(输入%d个整数:,n);for(i=0;i=0;i-)printf(%dt,ai);return 0;4、 编程题3输入一个正整数n(0n=10),再输入n个整数,输出最大值及其下标(设最大值唯一,下标从零开始)。程序代
4、码:#includeint main()int i,j,n,x,a10;printf(输入数据的个数n:);scanf(%d,&n);printf(输入%d个整数:,n);for(i=0;in;i+)scanf(%d,&ai);x=a0;for(i=0;ix)x=ai;j=i;printf(最大数:%dt下标:%dt,x,j);return 0;5、 编程题4输入一个正整数n(0n=10),再输入n个整数,将最小值与第一个数交换,最大值与最后一个数交换,然后输出交换后的n个数。程序代码:#includeint main()int i,n,j=0,k=0,x,y,a10;printf(输入数据的
5、个数n:);scanf(%d,&n);printf(输入%d个整数:,n);for(i=0;in;i+)scanf(%d,&ai);y=a0;x=a0;for(i=0;ix)x=ai;j=i;if(aiy)y=ai;k=i;aj=a0;a0=y;ak=ai-1;ai-1=x;for(i=0;in;i+)printf(%dt,ai);return 0;6、 编程题5输入一个正整数n(0n=10),再输入n个整数,再将它们从小到大排序后输出。程序代码:#includeint main()int i,n,j=0,x,a10;printf(输入数据的个数n:);scanf(%d,&n);printf(
6、输入%d个整数:,n);for(i=0;in;i+)scanf(%d,&ai);x=a0;for(i=0;in-1;i+)for(j=i;jaj+1)x=ai;ai=aj+1;aj+1=x;else continue;for(i=0;in;i+)printf(%dt,ai);return 0;实验总结:本次C语言上机实验,主要是对一维整数数组进行处理,通过本次实验,我熟练掌握了一维数组元素的处理组排序算法(冒泡排序法和选择排序法)。实验二实验名称:字符串程序设计 【实验1】判断回文 从键盘输入一串字符,判断该字符串是否是回文,即该字符串从左向右读,与从右向左读都一样,如“ABCBA”、“ABC
7、CBA”。编程思路:定义指针start和end,分别指向字符串首、尾。分别从串首、尾开始向中间比较,若指针所指字符不同,则不是回文。源程序: #include#includeint is(char*ptr);void main()char str100;printf(input a stringn);gets(str);if(is(str)printf(%s is a Palindromen,str);elseprintf(%s is a not palindromen,str);int is(char*ptr)int i,a,flag=0;a=(int)strlen(ptr)-1;/数组下标
8、从0开始!for(i=0;a=0;i+,a-)if(ptra=ptri)flag=1;elseflag=0;break;return flag;【实验2】删除排序已知某已排好序的数组,其元素为1,3,5,7,9,从键盘输入x的值,若数组中存在与x相等的元素,则删除。编程思路:搜索整个数组判断x是否存在于数组中;如果在,定位待删除元素的下标 ;从该下标开始,将所有后续元素往前移。注意移动顺序应从最后一个元素开始,还是先从待删除元素的位置开始! 源程序:#include#includeint *Delete(int a,int n,int x)int i,pos,k;for(i=0;in;i+)i
9、f(ai=x)pos=i; break; for(k=pos;kn-1;k+)ak=ak+1;return a;int main()int arr5=1,3,5,7,9,x,i;printf(input x= );scanf(%d,&x);printf(before delete);for(i=0;i5;i+)printf(%4d,arri);printf(n);Delete(arr,5,x);printf(after delete);for(i=0;i4;i+)printf(%4d,arri);printf(n);return 0;实验总结:通过这次实验,了解了字符串的特点,它在数组中有结束
10、标志“0”,而其长度又不将起算在内,牢记这点对编程速率很有帮助。实验三实验名称:指针和二维数组【实验1】对N个字符串进行排序编程思路:第一种实现方式:要求从键盘输入N个字符串,将其存储在二维数组中,在主函数中进行排序。第二种实现方式:要求定义指针数组指向N个字符串,调用函数sort()进行排序。sort()具有如下原型:/*函数返回值:多级指针类型char*,返回指针数组首地址形式参数:指针p,char *,用于操纵N个字符串line,int,表示字符串个数*/char * sort(char * p,int linel)源程序:#include #include #define N 5int
11、 main() /*定义二维数组*/int i,k,j;char aN30,temp20; /*从键盘输入N 个字符串*/ printf(从键盘输入%d个字符串n,N);for(i = 0;i N;i+)gets(ai); for(i=0;iN-1;i+) k = i; /*若当前字符串大于 strk,记录其下标*/ for(j=i+1;jN;j+)if(strcmp(ak,aj)0)/ai改为akk=j; if(k!=i) /*交换字符串 strk和 stri*/ strcpy(temp,ai);strcpy(ai,ak);strcpy(ak,temp); puts(nAfter sort:
12、); for( i = 0;i N;i+) puts(ai); return 0; 【实验2】找众数定义函数实现: (1)输出整数数组中重复出现的数和重复的次数。(2)找出整数数组中的众数(即出现次数最多的数) 并编写相应的主函数测试之。编程思路:先对数组排序,排序后数组内的元素如有相同值就会紧邻存储。 定义maxCount、maxI、seek,分别表示最多重复次数、最多重复次数对应的元素下标、当前正在查找的数值,将两数置0。从头扫描整个数组,统计每个元素出现的次数,如果出现次数大于maxCount,记录其出现次数和该元素对应下标。扫描完毕即可找到众数及其出现次数。源程序:#include #
13、include #define N 6 int main() int aN; int i,j,k,temp; int maxCount = 0,maxI = 0,seek = 0,count = 0; for(i = 0;i N ;i+) printf(请输入第%d 个数:,i + 1); scanf(%d,a + i); /*选择法对数组排序*/ for(i=0;iN-1;i+) k=i; for(j=i;jaj)/ai改为ak k=j; if(i!=k) temp=ai;ai=ak;ak=temp; for(i = 0,seek = a0;i maxCount)maxCount=count
14、;maxI=i-1; count = 0; count+; seek = ai; printf(nmaxNumber = %d,maxCount = %dn,amaxI,maxCount); return 0; 实验总结:本次实验运用了选择法对数组进行排序,不管是二维数组,还是一维数组,其思路是一样的,只是具体的实现有所不同,比如比较字符串要用函数strcmp()。实验四实验名称:结构体【实验1】计算椭圆面积 已知坐标系统中两点p1、p2构成的矩形是椭圆的外切矩形,如图3-1所示。定义结构体struct ellipse struct point int x; int y; p1,p2; dou
15、ble a ; double b ; ; 从键盘输入p1、p2的坐标值,计算椭圆面积,已知积计算公式为:S = ab。程序代码:#include #include struct ellipsestruct pointint x;int y;p1,p2;double a ;double b ;typedef struct ellipse ell;int main()ell e;double s;printf(请输入左上角顶点坐标:);/*输入坐标*/scanf(%d%d,&e.p1.x,&e.p1 .y);printf(请输入右下角顶点坐标:);/*输入坐标*/scanf(%d%d,&e.p2.
16、x,&e.p2.y);/*计算椭圆面积*/e.a=abs(e.p1 .y-e.p2 .y)/2.0;/取整函数abs()e.b=abs(e.p1 .x-e.p2 .x)/2.0;s=3.14*e.a*e.b;printf(area = %lfn,s);return 0;实验总结:这次实验用到了结构体的嵌套定义,通过实验,让我更深入了解结构体的定义,使用,访问等操作。实验五实验名称:指针强化1【实验1】字符串逆序存储编写一个函数inverse,实现将字符串逆序存放,即原字符串为“abcdef”,将其重新存储为“fedcba”。实验思路:从字符串中第一个字符开始,使其和最后一个字符交换,第二个字符
17、和倒数第二个字符交换,一直到字符串中间的字符为止。 程序代码:#include #include char * inverse(char *p)/*定义需要用到的变量*/int i,len;char tmp;len = strlen(p);/*将原字符串逆序存储于p所指数组中*/for(i=len-1;i=len/2;i-)tmp=*(p+i);*(p+i)=*(p+len-1-i);*(p+len-1-i)=tmp;return p;int main()char str100;printf(请输入字符串:);gets(str);puts(inverse(str);return 0;【实验2】
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计实验 语言程序设计 实验 报告
限制150内