当前位置:文档之家› C程序设计上实验报告(完整版)

C程序设计上实验报告(完整版)

C语言程序设计上机实验报告学院:机械工程学院班级:机自161213姓名:**学号:***********实验时间: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,80—90分为B,70――79分为C,60――69分为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 语句编写程序,求100112 (100)nn==+++∑。

(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:#include<stdio.h>void fun1(char *b ){int i;for(i=0;i<7;i++){printf("%c",b[i]);}printf("\n");}void fun2(char *d){int j;for(j=0;j<7;j++){printf("%c",d[j]);}}main(){char a[8]={'A','B','C','D','E','F','G'};char c[8]={'H','I','J','K','L','M','N'};fun1(a);fun2(c);}运行结果1:程序分析1:执行两次同样的输出函数。

代码2:#include<stdio.h>void fun1(double *b,double *d ){double max;max=*b;if(*d>*b){max=*d;}printf("两个数中较大的数是%f\n",max);}void fun2(double *b, double *d){double j;j=*b+*d;printf("%f+%f=%f\n",*b,*d,j);}main(){double a,c;printf("请输入两个数,数据之间用空格隔开\n");scanf("%lf %lf",&a,&c);fun1(&a,&c);fun2(&a,&c);}运行结果2:程序分析2:将两个功能通过两个函数来单独完成,有利于程序的阅读。

代码3:#include<stdio.h>int 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("四个数中最大的数为%d\n",o);return 0;}int max(int n1,int n2){if(n1>n2){return n1;}else{return n2;}}运行结果3:程序分析3:代码4:#include<stdio.h>long jc(int m);main(){int n,jg;printf("-----该程序用来计算阶乘-----\n");printf("你要计算的是几的阶乘就输入几\n");scanf("%d",&n);jg=jc(n);printf("%d的阶乘是%d\n",n,jg);}long jc(int m){if(m==0){return 1;}else{return 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:#include<stdio.h>{int i,j,m,t, a[100];printf("请输入一维数组的元素个数(注意:数组元素个数最多为100):\n");scanf("%d",&m);j=m-1;printf("请输入一维数组的元素(注意:每输入一个数据按回车再输入下一个数据):\n");for(i=0;i<m;i++){scanf("%d",&a[i]);}printf("你所输入一维数组为:");for(i=0;i<m;i++){printf("%d\t",a[i]);}printf("\n");if(m%2==0){printf("该一维数组逆序输出为:");for(i=0;i<m/2;i++){t=a[i];a[i]=a[j];a[j]=t;j--;}}if(m%2!=0){printf("该一维数组逆序输出为:");for(i=0;i<(m-1)/2;i++)t=a[i];a[i]=a[j];a[j]=t;j--;}}for(i=0;i<m;i++){printf("%d\t",a[i]);}}运行结果1:程序分析1:代码2:#include<stdio.h>main(){int i,j,m,t,a[100];printf("请输入一维数组的列数(注意:列数最多为100):\n");scanf("%d",&m);printf("请输入一维数组的元素(注意:每输入一个数据按回车再输入下一个数据):\n");for(i=0;i<m;i++){scanf("%d",&a[i]);}printf("你所输入的一维数组为:\n");for(i=0;i<m;i++){printf("%d\t",a[i]);}for(i=1;i<m;i++){for(j=0;j<m-i;j++){if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}printf("\n");printf("你所输入的一维数组由小到大排序为:\n");for(i=0;i<m;i++){printf("%d\t",a[i]);}}运行结果2:程序分析2:代码3:#include<stdio.h>main(){int i,j,m,n,p=1,o=1,max1,a[100][100];printf("请输入二维数组的行数(注意:行数最多为100):\n");scanf("%d",&m);printf("请输入二维数组的列数(注意:列数最多为100):\n");scanf("%d",&n);printf("请输入二维数组的元素(注意:每输入一个数据按回车再输入下一个数据,一行输入完后,再输入下一行):\n");for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);}}printf("你所输入的二维数组为:\n");for(i=0;i<m;i++){for(j=0;j<n;j++){printf("%d\t",a[i][j]);if(j==n-1){printf("\n");}}}max1=a[0][0];for(i=0;i<m;i++){for(j=0;j<n;j++){if(a[i][j]>max1){max1=a[i][j];o=j+1;p=i+1;}}}printf("该数组中最大的数为%d\n其位于该数组的第%d行第%d列",max1,p,o);}运行结果3:程序分析3:代码4:#include<stdio.h>main(){int i,j,m,t,a[100];printf("请输入一维数组的列数(注意:列数最多为100):\n");printf("请输入一维数组的元素(注意:每输入一个数据按回车再输入下一个数据):\n");for(i=0;i<m;i++){scanf("%d",&a[i]);}printf("你所输入的一维数组为:\n");for(i=0;i<m;i++){printf("%d\t",a[i]);}for(i=0;i<m;i++){for(j=i+1;j<m;j++){if(a[j]<a[i]){t=a[i];a[i]=a[j];a[j]=t;}}}printf("你所输入的一维数组由小到大排序为:\n");for(i=0;i<m;i++){printf("%d\t",a[i]);}}运行结果4:程序分析4:代码5:#include<stdio.h>main(){int i,j,m,n,t,a[100][100];printf("请输入二维数组的行数(注意:行数最多为100):\n");scanf("%d",&m);printf("请输入二维数组的列数(注意:列数最多为100,因为是矩阵,要求行数等于列数):\n");scanf("%d",&n);printf("请输入二维数组的元素(注意:每输入一个数据按回车再输入下一个数据,一行输入完后,再输入下一行):\n");for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);}}printf("你所输入的二维数组为:\n");for(i=0;i<m;i++){for(j=0;j<n;j++){printf("%d\t",a[i][j]);if(j==n-1){printf("\n");}}}for(i=0;i<m-1;i++){for(j=i+1;j<n;j++){t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}}printf("你所输入的二维数组转置后为:\n"); for(i=0;i<m;i++){for(j=0;j<n;j++){printf("%d\t",a[i][j]);if(j==n-1){printf("\n");}}}运行结果5:程序分析5:五、实验总结C语言程序设计上机实验报告实验七一、实验名称:字符数组和字符串二、实验目的:学会字符数组的输入/输出和初始化;掌握对字符数组进行连接、复制和比较的函数,掌握对字符数组进行排序的有关算法;了解字符串变量及字符串数组的使用技巧。

相关主题