C程序设计上机实验报告(完整版).doc_第1页
C程序设计上机实验报告(完整版).doc_第2页
C程序设计上机实验报告(完整版).doc_第3页
C程序设计上机实验报告(完整版).doc_第4页
C程序设计上机实验报告(完整版).doc_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计上机实验报告学院: 机械工程学院班级: 机自161213 姓名: 刘昊 学号:20162181310实验时间:2017年3月6号 任课老师: 张锐 C语言程序设计上机实验报告实验一一、实验名称: C程序的运行环境和运行C程序的方法二、实验目的: 了解在C编译系统上如何编辑、编译、连接和运行一个C程序三、实验内容: (1). 输入并运行一个简单的C程序。 (2). 设计程序,对给定的两个数求和。 (3). 设计程序,对给定的两个数进行比较,然后输出其中较大的数。四、源程序代码:代码1:运行结果1:程序分析1: 该程序用来判断所输入的整数是否为一个素数,如果一个数能被除了1和它本身整除,还能被其它数整除,那么它就不是一个素数,因此,用for循环来进行整除过程的简写。代码2: 运行结果2: 程序分析2: 简单的使用printf()和scanf()函数进行简单的数据运算。代码3:运行结果3:程序分析3:使用if语句进行判断。五实验总结C语言程序设计上机实验报告实验二一、实验名称:顺序结构程序设计二、实验目的:正确使用常用运算符(算术运算符、赋值运算符)的用法,熟练掌握算术运算符及其表达式,逻辑运算符和逻辑表达式。三、实验内容:(1). 编写程序,实现小写字母转大写。(2). 编写程序,实现输入两个不同类型数据后,经过适当的运算(加、减、乘、除)后输出。(3). 编写程序,计算三角形面积、立方体的体积和表面积、圆的面积和周长。(4). 编写程序,实现单字符getchar和putchar输入输出。(5). 编写程序,实现十进制、八进制、十六进制不同数制的输出。四、源程序代码代码1:运行结果1:程序分析1: 所有的字符都有一个对应的数字与之对应,每一个小写字母对应的数与大写字母对应的数之间总是相差32,所以只需要对所输入的字符进行减法运算就可以转换为与之对应的大写字母。代码2:运行结果2:程序分析2:简单的数据运算和格式字符的输出。代码3:运行结果3: 程序分析3: 简单的数据运算实现相应的功能。代码4:运行结果4:程序分析4: getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.代码5:运行结果5:程序分析5:重要的是格式字符的使用,%d(输出十进制整型数) %o(以八进制格式输出整形数)%x(以十六进制格式输出整型数)%f(以带小数点的形式输出浮点数)%c(输出一个字符)%s(输出字符串,直到遇到0)五、实验总结C语言程序设计上机实验报告实验三一、实验名称:选择结构程序设计二、实验目的:正确使用逻辑运算符和逻辑表达式,熟练掌握if 语句和switch 语句,学习调试程序。三、实验内容:(1). 编写程序,用if 语句编程实现一分段函数的求解。(2).用if 语句编写程序,求一元二次方程的根。(3). 用switch 语句编写程序,给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,8090分为B,7079分为C,6069分为D,60分以下为E)。(4). 用switch 语句编写程序,输入一小于6位数的整数,判断它是几位,并逆序输出。(5). 用if 语句编写程序,判断某一年是否为闰年。四、源程序代码代码1运行结果1:程序分析1:使用if 函数对不同的输入参数进行不同的算术运算。代码2:运行结果2:程序分析2: 运用math库函数中的根号运算sqrt()函数实现求根公式的表达。代码3:运行结果3: 程序分析3: 运用switch语句对所有的情况分开,注意如果没有break语句,那么判断到要执行的case后,其后面的语句也要执行。代码4:运行结果4:程序分析4:重要的是判断一个数几位数的算法:每次对10取整,记录一次,降低了一位位数,直到取整位0就降到了一位数,计数完毕。然后,对于不同的基数值,输出相应的判断结果。代码5:运行结果5:程序分析5:重要的是闰年判断条件“四年一闰,百年不闰;四百年一闰”的c语言表示:i%4=0&i%100!=0|i%400=0;五、实验总结C语言程序设计上机实验报告实验四一、实验名称: 循环控制程序设计二、实验目的: 掌握在程序设计中使用循环的方法实现一些常用算法(如:穷举、迭代和递推等)。三、实验内容: (1). 分别用while语句、do-while语句和for 语句编写程序,求。 (2). 用while 语句编写程序,对输入一行字符的字母、数字、空格和其他字符的个数分别予以统计,并输出。(3). 用for 或while语句编写程序,输出所有的水仙花数。(4). 用for 语句编写程序,找出100-200间的所有素数。(5). 用for语句编写程序,实现规定图案的输出。四、源程序代码代码1运行结果1:程序分析1: 三种循环语句的使用。代码2:运行结果2:程序分析2:代码3:运行结果3: 程序分析3: 重要的是如何使用取整,取余运算符将一个数的每一位取出来。代码4:运行结果4:程序分析4:重要的是,素数的判断条件的c表达:如果对于小于其本身的能能够把其整除,说明其不是一个素数,反之则为素数。代码5:运行结果5:程序分析5:重要的是发现打印空格和字符个数与打印第n行之间的数字关系,根据数量关系,利用for循环实现循环打印。五、实验总结C语言程序设计上机实验报告实验五一、实验名称:函数二、实验目的:掌握函数形参和实参的对应关系;以及“值传递”的方式,掌握函数的嵌套调用和递归调用的方法。三、实验内容:(1). 通过无参函数实现多行字串的输出;(2). 通过有参函数数据传递,用函数来实现:(a)两个数比较,输出其中较大的数;)(b)对给定的两个数求和;(3). 编写程序,用函数的嵌套调用来实现输入4个数,找出其中最大的数。(4). 编写程序,用函数递归调用,计算n!; (5). 写一个判素数的函数,在主函数输入一个整数,输出是否素数的信息。四、源程序代码代码1:#includevoid fun1(char *b )int i;for(i=0;i7;i+)printf(%c,bi);printf(n);void fun2(char *d)int j;for(j=0;j7;j+)printf(%c,dj);main()char a8=A,B,C,D,E,F,G;char c8=H,I,J,K,L,M,N;fun1(a);fun2(c); 运行结果1:程序分析1:执行两次同样的输出函数。代码2:#includevoid fun1(double *b,double *d )double max;max=*b;if(*d*b)max=*d;printf(两个数中较大的数是%fn,max);void fun2(double *b, double *d)double j;j=*b+*d;printf(%f+%f=%fn,*b,*d,j);main()double a,c;printf(请输入两个数,数据之间用空格隔开n);scanf(%lf %lf,&a,&c); fun1(&a,&c);fun2(&a,&c); 运行结果2:程序分析2:将两个功能通过两个函数来单独完成,有利于程序的阅读。代码3:#includeint max(int n1,int n2);int main()int i,j,k,l,m,n,o;printf(请输入四个数(用空格隔开)n);scanf(%d %d %d %d,&i,&j,&k,&l);m=max(i,j);n=max(k,l);o=max(m,n); printf(四个数中最大的数为%dn,o);return 0;int max(int n1,int n2)if(n1n2)return n1;elsereturn n2;运行结果3: 程序分析3:代码4:#includelong jc(int m);main()int n,jg;printf(-该程序用来计算阶乘-n);printf(你要计算的是几的阶乘就输入几n);scanf(%d,&n);jg=jc(n);printf(%d的阶乘是%dn,n,jg); long jc(int m)if(m=0)return 1; elsereturn m*jc(m-1);运行结果4:程序分析4:5!=5*4*3*2*15!=5*4!; 4!=4*3!; 3!=3*2!; 2!=2*1!; 1!=1*0!; 0!=1;实现函数的直接递归调用,并且递归使用的是选择结构,一定会有结束递归调用的语句,例如上题中if(m=0)的执行语句:return 1;就结束了再次调用函数jc函数。代码5:运行结果5:程序分析5:只需要传递一个简单的整形数据即可,注意功能函数()里的变量一定要注明类型。五、实验总结C语言程序设计上机实验报告实验六一、实验名称: 一维和二维数组二、实验目的:掌握与数组有关的排序算法:冒泡排序和选择排序。三、实验内容:(1). 用一维数组,对给定的一组数据逆序输出。(2). 用一维数组,对10个数进行由小到大的冒泡排序。(3). 用二维数组,求一个矩阵中的最大数据元素及所在的行列位置。(4). 用一维数组,对10个数进行由小到大的选择排序。(5). 用二维数组,求一个矩阵的转置矩阵。 四、源程序代码代码1:#includemain()int i,j,m,t, a100;printf(请输入一维数组的元素个数(注意:数组元素个数最多为100):n);scanf(%d,&m); j=m-1;printf(请输入一维数组的元素(注意:每输入一个数据按回车再输入下一个数据):n);for(i=0;im;i+)scanf(%d,&ai);printf(你所输入一维数组为:);for(i=0;im;i+)printf(%dt,ai);printf(n);if(m%2=0)printf(该一维数组逆序输出为:);for(i=0;im/2;i+)t=ai;ai=aj;aj=t;j-;if(m%2!=0)printf(该一维数组逆序输出为:);for(i=0;i(m-1)/2;i+)t=ai;ai=aj;aj=t;j-;for(i=0;im;i+)printf(%dt,ai); 运行结果1:程序分析1:代码2:#includemain()int i,j,m,t,a100;printf(请输入一维数组的列数(注意:列数最多为100):n);scanf(%d,&m);printf(请输入一维数组的元素(注意:每输入一个数据按回车再输入下一个数据):n);for(i=0;im;i+)scanf(%d,&ai); printf(你所输入的一维数组为:n);for(i=0;im;i+)printf(%dt,ai);for(i=1;im;i+)for(j=0;jaj+1)t=aj;aj=aj+1;aj+1=t;printf(n);printf(你所输入的一维数组由小到大排序为:n);for(i=0;im;i+)printf(%dt,ai);运行结果2:程序分析2:代码3:#includemain()int i,j,m,n,p=1,o=1,max1,a100100;printf(请输入二维数组的行数(注意:行数最多为100):n);scanf(%d,&m); printf(请输入二维数组的列数(注意:列数最多为100):n);scanf(%d,&n); printf(请输入二维数组的元素(注意:每输入一个数据按回车再输入下一个数据,一行输入完后,再输入下一行):n);for(i=0;im;i+)for(j=0;jn;j+)scanf(%d,&aij);printf(你所输入的二维数组为:n);for(i=0;im;i+)for(j=0;jn;j+)printf(%dt,aij);if(j=n-1)printf(n);max1=a00;for(i=0;im;i+)for(j=0;jmax1)max1=aij;o=j+1;p=i+1;printf(该数组中最大的数为%dn其位于该数组的第%d行第%d列,max1,p,o); 运行结果3: 程序分析3:代码4:#includemain()int i,j,m,t,a100;printf(请输入一维数组的列数(注意:列数最多为100):n);scanf(%d,&m);printf(请输入一维数组的元素(注意:每输入一个数据按回车再输入下一个数据):n);for(i=0;im;i+)scanf(%d,&ai); printf(你所输入的一维数组为:n);for(i=0;im;i+)printf(%dt,ai);for(i=0;im;i+)for(j=i+1;jm;j+)if(ajai)t=ai;ai=aj;aj=t;printf(n);printf(你所输入的一维数组由小到大排序为:n);for(i=0;im;i+)printf(%dt,ai);运行结果4:程序分析4:代码5: #includemain()int i,j,m,n,t,a100100;printf(请输入二维数组的行数(注意:行数最多为100):n);scanf(%d,&m); printf(请输入二维数组的列数(注意:列数最多为100,因为是矩阵,要求行数等于列数):n);scanf(%d,&n); printf(请输入二维数组的元素(注意:每输入一个数据按回车再输入下一个数据,一行输入完后,再输入下一行):n);for(i=0;im;i+)for(j=0;jn;j+)scanf(%d,&aij);printf(你所输入的二维数组为:n);for(i=0;im;i+)for(j=0;jn;j+)printf(%dt,aij);if(j=n-1)printf(n);for(i=0;im-1;i+)for(j=i+1;jn;j+)t=aij;aij=aji;aji=t;printf(你所输入的二维数组转置后为:n);for(i=0;im;i+)for(j=0;jn;j+)printf(%dt,aij);if(j=n-1)printf(n);运行结果5:程序分析5:五、实验总结C语言程序设计上机实验报告实验七一、实验名称:字符数组和字符串二、实验目的:学会字符数组的输入/输出和初始化;掌握对字符数组进行连接、复制和比较的函数,掌握对字符数组进行排序的有关算法;了解字符串变量及字符串数组的使用技巧。三、实验内容:(1). 用一维字符数组,实现字符数组的输入/输出和初始化,及对字符数组进行连接、复制和比较运算。(2). 用一维字符数组,对输入一行字符的字母、数字、空格和其他字符的个数分别予以统计,并输出。(3). 用二维字符数组,实现输出钻石图形。(4). 用二维字符数组,对8个姓氏进行由小到大的冒泡排序(或选择排序)。(5). 用字符串数组,输入输出一组学生的简单信息。四、源程序代码代码1:#include#includevoid fun1(char*g ,char*h)int i,j,k;printf(a,b两个数组比较的结果为;n);j=strlen(g);k=strlen(h);for(i=0;ij;i+)printf(%c,gi);printf(-);for(i=0;ik;i+)printf(%c,hi);printf(t);printf(%d,strcmp(g,h);printf(n);void fun2(char*c ,char*d)strcat(c,d);printf(a,b两个字符数组连接后的结果为:n );puts(c);printf(n);void fun3(char*e ,char*f)int m,i;strcpy(e,f);printf(把b字符数组复制粘贴到a字符数组后两个数组元素的情况为:n );m=strlen(e);for(i=0;im;i+)printf(a%d=%ct,i,ei);printf(n);m=strlen(f);for(i=0;im;i+)printf(b%d=%ct,i,fi);main()char a100,b100;int i,m;printf(请输入第一个字符数组中的元素(注意:字符个数不得超过100,字符串结束符也占一个存储空间)n);gets(a);printf(a字符数组为:n );m=strlen(a);for(i=0;im;i+)printf(a%d=%ct,i,ai);printf(n);printf(请输入第二个字符数组中的元素(注意:字符个数不得超过100,字符串结束符也占一个存储空间)n);gets(b);printf(b字符数组为:n );m=strlen(b);for(i=0;im;i+)printf(a%d=%ct,i,bi);printf(n);printf(n);fun1(a,b);printf(n);fun2(a,b);printf(n);fun3(a,b);运行结果1:代码2:#includeint main()printf(请输入字符串,按回车键结束n);char str100;int i=0;int num=0,ch=0,blank=0,other=0;gets(str);while(stri!=0)if(stri=A&stri=a&stri=0&stri=9) num+; else if(stri= )blank+; elseother+; i+; printf(数字%d个,字母%d个,空格%d个,其他%d个n,num,ch,blank,other); return 0;运行结果2:程序分析2:代码3:#includeint main()int i,j,m=0,n=7;char a58;for(i=0;i5;i+)for(j=0;j8;j+)aij= ;for(j=1;j7;j+)a0j=*;for(i=1;i5;i+) aim=*;ain=*;m+;n-;for(i=0;i5;i+)for(j=0;j8;j+)printf(%c ,aij);printf(n);return 0;运行结果3:代码4:#include#includeint main() int i, j; char a100100,t100; printf(-对8个姓氏进行由小到大的冒泡排序-n); printf(请依次输入姓氏的拼音n); for(i=0;i8;i+) printf(请输入第%d个姓氏的拼音:,i+1); gets(ai); for(i=0;i8-1;i+) for(j=0;j0 ) strcpy(t,aj); strcpy(aj,aj+1); strcpy(aj+1,t); printf(对8个姓氏进行由小到大进行重新排序的结果为:n); for(i=0;i8;i+) puts(ai); return 0;运行结果4:程序分析4:代码5:#include#includeint main() int i, j; char a100100; printf(请输入学生的姓名:);gets(a0); printf(请输入学生的性别:); gets(a1); printf(请输入学生的年龄:); gets(a2); printf(请输入该学生的学号); gets(a3); printf(该学生的简明信息为:n); printf(姓名t性别t年龄t学号n); for(i=0;i4;i+) printf(%st,ai); return 0;运行结果5:五、实验总结C语言程序设计上机实验报告实验八一、实验名称: 指针二、实验目的:能正确使用数组的指针和指向数组的指针变量,以及字符串的指针和指向字符串的指针变量。三、实验内容:(1). 用指针和函数通过地址传递,实现输入三个数,按照由大到小的顺序输出; (2). 使用指向数组的指针变量,实现数组元素的输出 (3). 用一个函数实现两个字符的比较,函数原型为:int strcmp(char *p1,char *p2); (4). 两个字符串s1,s2由main()函数输入,strcmp函数的返回值也由main()函数输出; (5).用指针数组,实现对字符串进行由小到大的选择排序;用指向指针的指针,实现字符串的输出。四、源程序代码代码1:#include#includeint main(void)int len=3,i,j,Temp;/printf(请输入你要建立一个多大的数组len=);/scanf(%d,&len);int *p=(int*)malloc(sizeof(int)*len);printf(请输入三个整数n);for(i=0;ilen;i+)scanf(%d,&pi);for(i=0;i2;i+)for(j=i+1;jpi)Temp=pi;pi=pj;pj=Temp; printf(你所输入的整数按照从大到小的顺序排序为:n);for(i=0;ilen;i+)printf(%dt,pi);free(p);p=NULL;return 0; 运行结果1:代码2:#include#includeint main(void)int len,i;printf(请输入你要建立一个多大的数组len=);scanf(%d,&len);int *p=(int*)malloc(sizeof(int)*len);printf(请输入数组元素n);for(i=0;ilen;i+)scanf(%d,&pi);printf(你所输入的数组为:n);for(i=0;ilen;i+)printf(%dt,pi);free(p);p=NULL;return 0; 运行结果2:代码3:#include /当不包含头文件时,strcmp()函数就是一个自定义的函数,因此本题的目的在于编写一个标准函数 int strcmp(char *s1,char *s2);void main()char str121,str221;printf(第一段字符为(最长为20):);gets(str1);printf(n第

温馨提示

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

评论

0/150

提交评论