c语言课内实验报告四(精选4篇)
(四)一、实验目的
1.掌握C语言中函数和模块
2.掌握怎样定义函数,如何调用或使用函数,如何声明函数 3.掌握函数的参数,了解在函数调用时,参数是如何传递的 4.在使用函数的过程中怎样确定函数的参数 5.如何使用局部变量和全局变量
二、实验内容
1.偶数判断
描述: 编写一个用户自定义函数,该函数有一个整型参数,函数的功能是:当这个整型数的值是偶数时,函数的返回值为0,当这个整型数的值是奇数时,返回值为1。编写一个程序,从键盘输入m个整数,分别调用用户自定义函数来判断这m个整数的奇偶性。
输入: 第一行为一个整数m,表示要判断m个整数的奇偶性;紧接着是m行,每行一个整数。
输出:有m行,分别对应输入的第2到第m+1行的整数的奇偶性 样例输入: 2 1 6 样例输出: 奇数
偶数 ·程序代码:
#include“stdio.h” int isEven(int a){ if(a%2==0)
return 1;else
return 0;} int main(){ int m,i,b;scanf(“%d”,&m);
for(i=1;i<=m;i++)
{
scanf(“%d”,&b);
if(isEven(b)==1)
printf(“偶数n”);
else printf(“奇数n”);
}
return 0;}
2.温度转换
描述: 编写一个用户自定义函数,函数的功能是:将华氏温度转F换为摄氏温度C。转换公式为:C=5*(F-32)/9。编写一个程序,输出指定范围的华氏温度与摄氏温度的对照表,其中华氏温度步长为4。
输入: 两个空格隔开的整数n,m(且0 #include “stdio.h” float conver(int f){ return 5*(f-32)/9.0;} int main(){ int n,m,i;scanf(“%d%d”,&n,&m);for(i=n;i<=m;i+=4) printf(“%d%10.2fn”,i,conver(i));return 0;} 3.最大值函数 描述:编写一个用户自定义函数,该函数有三个整数参数,函数的功能是:求解这三个整数的最大值,函数的返回值为三个参数的最大值。编写一个程序,从键盘输入任意5个整数,分别两次调用用户自定义函数来求出这5个整数中的最大值。 输入:第一行为N,表示有N组数据,接下来是N行,每行是5个用空格隔开的整数(在VC++6.0 int范围)。输出:有N行,每行是对应输入的5个整数的最大值。样例输入: 3 1 2 3 4 5 5 4 3 2 1 1 2 5 3 4 样例输出: 5 5 5 ·程序代码: #include “stdio.h” int max(int a, int b, int c){ int t;t=a;if(b>t) t=b;if(c>t) t=c;return t;} int main(){ int n,a,b,c,d,e,i;scanf(“%d”,&n);for(i=1;i<=n;i++){ scanf(“%d%d%d%d%d”,&a,&b,&c,&d,&e); printf(“%dn”,max(a,b,max(c,d,e)));} return 0;} 4.三位数数字排序 描述: 对于给定的若干个三位正整数,将它们的各位上的数字按由小到大的顺序输出。要求,写一个函数,能将其整型参数的各位数字按照由小到大进行输出。主函数完成对输入的若干个三位数,分别调用该函数,完成指定的输出。输入: 若干行,每行有一个三位正整数,输入为0结束。输出: 有若干行,依次对应于非0的整数,将相应三位正整数的数字由小到大输出,数字间没有空格。 样例输入: 123 987 670 0 样例输出: 123 789 067 ·程序代码: #include “stdio.h” int main(void){ int n,a[4],xx,sum;scanf(“%d”,&n);while(n!=0){ int i,j; for(i=1;i<=3;i++) { a[i]=n%10; n/=10; } for(i=1;i<=3;i++) { for(j=i;j<=3;j++) { if(a[i]>a[j]) { xx=a[j]; a[j]=a[i]; a[i]=xx; } } } for(i=1;i<=3;i++) } { printf(“%d”,a[i]);} printf(“n”); scanf(“%d”,&n);} return 0;5.排列数计算 描述: 表示从m个元素中抽出n个元素的排列的个数。 计算公式为:编写一个用户自定义函数,该函数有一个整数参数,函数的功能是求解这个整数的阶乘,函数的返回值为这个整数的阶乘。编写一个程序,从键盘输入m、n值,分别两次调用用户自定义函数来求解 : 多行测试数据,每行两个用空格隔开的整数,0 0 表示结束。 输出: 有多行,对应于非0 0行的排列值。 样例输入: 5 3 8 2 0 0 样例输出: 60 56 ·程序代码: #include “stdio.h” int main(void){ double n,m,t;double x1,x2,i,k,kk;scanf(“%lf%lf”,&m,&n);while(n!=0&&m!=0){ x1=1; /*if(m { t=m; m=n; n=t; } */ for(i=1;i<=m;i++) { x1*=i; } k=m-n; x2=1; for(i=1;i<=k;i++) { x2*=i; } kk=x1/x2; printf(“%.0lfn”,kk); scanf(“%lf%lf”,&m,&n);} return 0;} 6.素数对 描述: 哥德巴赫猜想大家都知道一点吧.我们现在不是想证明这个结论,而是想在程序语言内部能够表示的数集中,任意取出一个偶数,来寻找两个素数,使得其和等于该偶数.做好了这件实事,就能说明这个猜想是成立的.由于可以有不同的素数对来表示同一个偶数,所以专门要求所寻找的素数对是两个值最相近的,而且素数对中的第一个数不大于第二个数.输入:输入中是一些偶整数M(6 #include “stdio.h” int prime(int n){ int i;for(i=2;i if(n%i==0) return 0; return 1;} int main(){ int m,i;while(scanf(“%d”,&m)==1)for(i=m/2;i>=2;i--) if(prime(i)&&prime(m-i)&&i!=m-i) { printf(“%d %dn”,i,m-i); break; } return 0;} 7.函数表达式计算 描述:计算下列表达式的值: 输入:输入x和n的值,其中x为非负实数,n为正整数。输出:输出f(x,n),保留2位小数。样例输入: 3 2 样例输出: 2.00 ·程序代码: #include “math.h” #include “stdio.h” /* f(x,1)=sqrt(1+x);f(x,2)=sqrt(2+sqrt(1+x))=sqrt(2+f(x,1));f(3,x)=sqrt(3+sqrt(2+qrt(1+x)))=sqrt(3+f(x,2));......f(x,n)=sqrt(n+f(x,n-1));*/ double f(double x,int n){ if(n>1) return sqrt(n+f(x,n-1));else return sqrt(1+x);} int main(){ int n;double x;scanf(“%lf%d”,&x,&n);printf(“%.2fn”,f(x,n));return 0;} 8.递归公约数 描述:递归形式的公约数定义如下: 使用此定义求两个整数的最大公约数。 输入: 有多行,每行为两个用空格隔开的整数。 输出: 对应的有多行,每行为对应输入的两个整数的最大公约数。 样例输入: 12 6 9 5 11 3 样例输出: 6 1 1 ·程序代码: # include “stdio.h” int gcd(int m, int n){ if(m%n==0) return n;else gcd(n,m%n);} int main(void){ int a,b;while(scanf(“%d%d”,&a,&b)==2){ 数据类型,运算符和简单的输入输出 姓名 王颖晶 班级 材料2班 学号 22140059 日期2015年3月 24日 指导老师 赵芳 1.实验目的 (1)掌握C语言数据类型,了解字符型数据和整形数据的内在关系。(2)掌握对各种数值型数据的正确输入方法。 (3)学会使用C的有关算数运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 (4)学会编写和运行简单的应用程序。 (5)进一步熟悉C程序的编辑,编译,连接和运行的过程。2.实验内容和步骤 (1)输入并运行教材第3章第4题给出的程序 (2)输入第3章第5题的程序 用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。问在键盘上如何输入? (3)输入以下程序 ① ② 将6,7行改为 m=i++; n=++j; ③ 程序改为 #include Printf(“i =%d,j=%d,m=%d,n=%dn”,i,j,m,n);}(4)假如我国国民生产总值的年增长率为9%,计算十年后我国国民生产总值与现在相比增长多少百分比,编写程序。计算公式为:p=(1+r)^n r为年增长率,n为年数,p为与现在相比的倍数。 ① 输入编好的程序,编译并运行。 ② 年增长率不在项目中指定,改用scanf函数语句输入,分别输入%7,%8,%10,观察结果。 ③ 在程序中增加printf函数语句,用来提示输入什么数据,说明输入的是什么数据。 心得体会 1.掌握使用if~else语句和switch~case语句实现分支结构的方法。 2.掌握使用三种循环语句实现循环结构的方法。 二、实验内容 1.显示两级成绩 程序填空,不要改变与输入输出有关的语句。 输入一个学生的数学成绩,如果它低于 60,输出“Fail”,否则,输出“Pass”。 文件命名---学号B1.C 源程序: #include /*运用if~else实现分支结构*/ printf(“Fail.n”); /*mark<60为真时执行*/ } else{ printf(“Pass.n”); /*mark<60为假时执行*/ } return 0; /*程序的结束状态*/ } 2.求三角形的面积和周长 程序填空,不要改变与输入输出有关的语句。 输入三角形的三条边 a, b, c,如果能构成一个三角形,输出面积area 和周长perimeter(保 留2 位小数);否则,输出“These sides do not correspond to a valid triangle”。 在一个三角形中,任意两边之和大于第三边。三角形的面积计算公式: aere*area = s(s-a)(s-b)(s-c)其中:s =(a+b+c)/2 文件命名---学号B2.C 源程序: #include /*运用if~else实现分支结构,逻辑与的运用要到位*/ s=(a+b+c)/2;printf(“perimeter=%.2fn”,a+b+c); /*调用printf()函数输出周长*/ printf(“area=%.2fn”,sqrt(s*(s-a)*(s-b)*(s-c)));/*平方根函数sqrt()*/ } else{ printf(“These sides do not corrrespond to a valid trianglen”);/*if条件语句为假时执行*/ } return 0;} 3.计算个人所得税 程序填空,不要改变与输入输出有关的语句。 输入一个职工的月薪 salary,输出应交的个人所得税tax(保留2 位小数)。 tax = rate *(salary-850)当 salary <= 850 时,rate = 0;当 850 < salary <= 1350 时,rate = 5;当 1350 < salary <= 2850 时,rate = 10;当 2850 < salary <= 5850 时,rate = 15;当 5850 < salary 时,rate = 20;文件命名---学号B3.C 源程序: #include /*运用else-if语句求解多分段函数*/ rate=0;} else if(salary<=1350){ rate=5;} else if(salary<=2850){ rate=10;} else if(salary<=5850){ rate=15;} else{ rate=20;} tax = rate *(salary-850);printf(“tax=%0.2fn”, tax);} /*else-if语句的分支*/ /*else-if语句的分支*/ /*else-if语句的分支*/ /*调用printf()函数输出结果*/ 4.求1+1/2+1/3+......+1/n 程序填空,不要改变与输入输出有关的语句。读入 1 个正整数 n(n<=50),计算并输出1+1/2+1/3+......+1/n(保留3 位小数)。 文件命名---学号B4.C 源程序: #include for(i=1;i<=n;i++){ sum*/ sum=sum+1.0/i; } printf(“%.3fn”, sum); } /*输入提示“n<=50,Enter n:”*/ /*对sum赋初值0*/ /*使用for循环,循环执行n次,计算 /*调用printf()函数输出sum的值*/ 5.求n!程序填空,不要改变与输入输出有关的语句。读入 1 个正整数 n(n<=50),计算并输出 n!。 文件命名---学号B5.C 源程序: #include /*输入提示*/ scanf(“%d”, &n);i=1,sum=1;do /*do~while循环语句*/ { sum=sum*i; /*循环体语句*/ i++;}while(i<=n);printf(“%.3fn”, sum); /*调用printf()函数输出sum的值*/ } 6.统计素数并求和 程序填空,不要改变与输入输出有关的语句。 输入 2 个正整数m 和n(1<=m,n<=500),统计并输出m 和n 之间的素数的个数以及这些素数的和(素数就是只能被1 和自身整除的正整数,1 不是素数,2 是素数)。注:嵌套循环 文件命名---学号B6.C #include /*调用求平方根函数,需要包含数学库*/ int main(){ int count, digit, i, j, k, m, n, sum;printf(“Enter m,n,n<=500:”); /*输入提示*/ scanf(“%d%d”, &m, &n); /*调用scanf()函数输入m,n*/ count=0,sum=0; /*count与sum分别记录素数个数与和,用于控制输出格式*/ for(j=m;j<=n;j++){ /*循环嵌套*/ k=sqrt(j);for(i=2;i<=k;i++) /*for循环,注意素数的判断*/ if(j%i==0) /*若m能被某个i整除,则j即m不是素数,循环提前结束*/ break;if(i>k&&j!=1){ /*如果m是素数*/ count++;sum=sum+j;} } printf(“count=%d, sum=%dn”, count, sum);} 三、收获、体会及问题 收获、体会:总的来说,这次实验的完成较实验一来说轻松了许多,因为对代码有了近一步的熟悉,实验的完成过程相对得心应手了许多。本次实验我基本掌握了运用三种循环语句循环结构的方法,对do~while、if~else、switch~case三种语句有了更深的理解,并能够准确的将之运用到编程的过程中,同时三类语句的作用与实现方法我也有了近一步的认识。 系部:计算机科学系 年级:2013 级 班级: 姓名: 学号: 实验时间: 实验成绩: 2013年月日 实验三顺序结构程序的设计 一 实验名称:顺序结构程序的设计 二.实验环境:windows XP系统,VC++6.0软件 三.实验目的: 四.实验内容: 五.算法描述流程图 六.源程序 七.测试数据及运行结果 八.实验心得 实验成绩评分要求 1、原创性发现抄袭或雷同成绩为0分 2、正确性程序正确60分 3、可读性格式清楚,有注释,变量命名规范20分 4、健壮性对特殊测试数据有考虑有测试10分 【c语言课内实验报告四】推荐阅读: C语言实验报告模版07-10 c语言实验报告总结07-13 进程管理实验c语言版10-26 C语言图形程序设计报告10-13 c语言总结07-15 c语言概念题09-22 C语言教学建议10-25 c语言递归程序11-06 c语言设计程序11-11 c语言排序算法总结06-25C语言实验报告 篇2
C语言实验报告3 篇3
C语言程序设计上机实验报告 篇4