C语言实验报告六
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二:编写的程序为 #include <stdio.h> #include <math.h> int main() {
double a,b,c,x1,x2,delta,p,q; scanf("%lf %lf %lf\n",&a,&b,&c); if(a==0) printf("不是一元二次方程\n"); else {
} else {
printf("有两个不相等的复数根\n"); p=-b/(2*a); q=sqrt(-delta)/(2*a); printf("%.2lf+%.2lfi\n",p,q); printf("%.2lf-%.2lfi\n",p,q); } } return 0; } 第三个程序输入后
南京信息工程大学 实验(实习)报告
实验(实习)名称 函数 日期 2019.5.22
得分
指导老师
系
专业ห้องสมุดไป่ตู้
年级 2018 级 班次班 姓名 学号
一、实验目的
1.实验目的 (1) 掌握 C 语言函数定义及调用的规则。 (2) 理解参数传递的过程。 (3) 掌握函数返回值的大小和类型确定的方法。 (4) 理解变量的作用范围。
delta=b*b-4*a*c; if(delta==0) { printf("方程有两个相等的实数根\n"); x1=-b/(2*a); x2=x1; printf("%.2lf,%.2lf\n",x1,x2); } else if(delta>0)
第3页共7页
{ printf("方程有两个不相等的实数根\n"); x1=-b/(2*a)+sqrt(delta)/(2*a); x2=-b/(2*a)-sqrt(delta)/(2*a); printf("%.2lf,%.2lf\n",x1,x2);
五、实验小结
注意打程序时标点符号不要用成中文的,不然会显示错误但是你始终找不到错误在 哪;函数定义时候后面要加标点符号。
第7页共7页
出错原因是 int 后不应直接跟逗号,而是定义的变量名称;剩下的错误就是程序当中所要使用 到的变量未能给出定义 改正上述提到的错误后 #include<stdio.h> int main( ) { int a,b,sum,x,y; printf(" %d\n",sum(x+y)) ; int sum(a,b) { int a,b; return(a+b) ; } return 0 ; }
第4页共7页
语句,保留原来的值。(也就是说,如果 item 是 static 的,那么只有在第一次进入这个函数 的时候会执行 item=0,以后都不会执行。)
四、实验步骤
一:第一个程序输入后
出错原因是 int 后不应直接跟逗号,而是定义的变量名称;剩下的错误就是程序当中所要使用 到的变量未能给出定义 改正上述提到的错误后 #include<stdio.h> int main( ) { int a,b,sum,x,y; printf(" %d\n",sum(x+y)) ; int sum(a,b) { int a,b; return(a+b) ; } return 0 ; }
第6页共7页
x1=-b/(2*a)+sqrt(delta)/(2*a); x2=-b/(2*a)-sqrt(delta)/(2*a); printf("%.2lf,%.2lf\n",x1,x2); } else { printf("有两个不相等的复数根\n"); p=-b/(2*a); q=sqrt(-delta)/(2*a); printf("%.2lf+%.2lfi\n",p,q); printf("%.2lf-%.2lfi\n",p,q); } } return 0; } 第三个程序输入后
这里说明了我们要使用到的子函数 sum 未给出定义,继续改正 #include<stdio.h> int sum(int ,int ); int main( ) { int x=1,y=1,t; t=sum(x,y);
第5页共7页
printf(" %d\n",t); return 0 ; } int sum(int a,int b) { int m; m=a+b; return m; } 由于我自己给 x 和 y 赋值,所以输出了
delta=b*b-4*a*c; if(delta==0) { printf("方程有两个相等的实数根\n"); x1=-b/(2*a); x2=x1; printf("%.2lf,%.2lf\n",x1,x2); } else if(delta>0) { printf("方程有两个不相等的实数根\n");
二、实验内容
(1) 上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。 #include<stdio.h> int main( ) { int,y; printf(" %d\n",sum(x+y)) ; int sum(a,b) { int a,b; return(a+b) ; } return 0 ; } (2)编写一个程序,输人系数 a、b、c,求一元二次方 ax^2+bx+c=0 的根,包括主函数 和如下子函数。 ① 判断 a 是否为零。 ② 计算判别式 b^2-4ac。 ③ 计算根的情况。 ④ 输出根。 (3) 输入下面程序,分析运行结果。 #include<stdio.h> int func (int,int); int main () { int k=4,m=1,p1,p2;
三、分析与讨论
(1) 针对以上实验内容写出相应的参数传递过程并分析结果。 第一个程序中 x 到 a,y 到 b; 第二个程序未使用子函数; 第三个程序 k 到 a,m 到 b。 (2) 函数在定义时要注意什么。 函数名,参数个数,注释 (3) 讨论静态局部变量的继承性。 静态局部变量相当于全局变量(只是只有在这个函数中能访问,但是生命周期是和全局变量差 不多的),函数退出之后变量还在,而且只在第一次进入的时候做初始化,以后会跳过初始化
二:编写的程序为 #include <stdio.h> #include <math.h> int main() {
double a,b,c,x1,x2,delta,p,q; scanf("%lf %lf %lf\n",&a,&b,&c); if(a==0) printf("不是一元二次方程\n"); else {
这里说明了我们要使用到的子函数 sum 未给出定义,继续改正 #include<stdio.h> int sum(int ,int ); int main( ) {
第2页共7页
int x=1,y=1,t; t=sum(x,y); printf(" %d\n",t); return 0 ; } int sum(int a,int b) { int m; m=a+b; return m; } 由于我自己给 x 和 y 赋值,所以输出了
pl=func(k.m); p2=func(k,m); printf("%d,%d\n",p1,p2);
第1页共7页
return 0 ; } Int func (int a,int b) { static int m=0,i=2;
i+=m+1; m=i+a+b; return(m); } 一:第一个程序输入后
double a,b,c,x1,x2,delta,p,q; scanf("%lf %lf %lf\n",&a,&b,&c); if(a==0) printf("不是一元二次方程\n"); else {
} else {
printf("有两个不相等的复数根\n"); p=-b/(2*a); q=sqrt(-delta)/(2*a); printf("%.2lf+%.2lfi\n",p,q); printf("%.2lf-%.2lfi\n",p,q); } } return 0; } 第三个程序输入后
南京信息工程大学 实验(实习)报告
实验(实习)名称 函数 日期 2019.5.22
得分
指导老师
系
专业ห้องสมุดไป่ตู้
年级 2018 级 班次班 姓名 学号
一、实验目的
1.实验目的 (1) 掌握 C 语言函数定义及调用的规则。 (2) 理解参数传递的过程。 (3) 掌握函数返回值的大小和类型确定的方法。 (4) 理解变量的作用范围。
delta=b*b-4*a*c; if(delta==0) { printf("方程有两个相等的实数根\n"); x1=-b/(2*a); x2=x1; printf("%.2lf,%.2lf\n",x1,x2); } else if(delta>0)
第3页共7页
{ printf("方程有两个不相等的实数根\n"); x1=-b/(2*a)+sqrt(delta)/(2*a); x2=-b/(2*a)-sqrt(delta)/(2*a); printf("%.2lf,%.2lf\n",x1,x2);
五、实验小结
注意打程序时标点符号不要用成中文的,不然会显示错误但是你始终找不到错误在 哪;函数定义时候后面要加标点符号。
第7页共7页
出错原因是 int 后不应直接跟逗号,而是定义的变量名称;剩下的错误就是程序当中所要使用 到的变量未能给出定义 改正上述提到的错误后 #include<stdio.h> int main( ) { int a,b,sum,x,y; printf(" %d\n",sum(x+y)) ; int sum(a,b) { int a,b; return(a+b) ; } return 0 ; }
第4页共7页
语句,保留原来的值。(也就是说,如果 item 是 static 的,那么只有在第一次进入这个函数 的时候会执行 item=0,以后都不会执行。)
四、实验步骤
一:第一个程序输入后
出错原因是 int 后不应直接跟逗号,而是定义的变量名称;剩下的错误就是程序当中所要使用 到的变量未能给出定义 改正上述提到的错误后 #include<stdio.h> int main( ) { int a,b,sum,x,y; printf(" %d\n",sum(x+y)) ; int sum(a,b) { int a,b; return(a+b) ; } return 0 ; }
第6页共7页
x1=-b/(2*a)+sqrt(delta)/(2*a); x2=-b/(2*a)-sqrt(delta)/(2*a); printf("%.2lf,%.2lf\n",x1,x2); } else { printf("有两个不相等的复数根\n"); p=-b/(2*a); q=sqrt(-delta)/(2*a); printf("%.2lf+%.2lfi\n",p,q); printf("%.2lf-%.2lfi\n",p,q); } } return 0; } 第三个程序输入后
这里说明了我们要使用到的子函数 sum 未给出定义,继续改正 #include<stdio.h> int sum(int ,int ); int main( ) { int x=1,y=1,t; t=sum(x,y);
第5页共7页
printf(" %d\n",t); return 0 ; } int sum(int a,int b) { int m; m=a+b; return m; } 由于我自己给 x 和 y 赋值,所以输出了
delta=b*b-4*a*c; if(delta==0) { printf("方程有两个相等的实数根\n"); x1=-b/(2*a); x2=x1; printf("%.2lf,%.2lf\n",x1,x2); } else if(delta>0) { printf("方程有两个不相等的实数根\n");
二、实验内容
(1) 上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。 #include<stdio.h> int main( ) { int,y; printf(" %d\n",sum(x+y)) ; int sum(a,b) { int a,b; return(a+b) ; } return 0 ; } (2)编写一个程序,输人系数 a、b、c,求一元二次方 ax^2+bx+c=0 的根,包括主函数 和如下子函数。 ① 判断 a 是否为零。 ② 计算判别式 b^2-4ac。 ③ 计算根的情况。 ④ 输出根。 (3) 输入下面程序,分析运行结果。 #include<stdio.h> int func (int,int); int main () { int k=4,m=1,p1,p2;
三、分析与讨论
(1) 针对以上实验内容写出相应的参数传递过程并分析结果。 第一个程序中 x 到 a,y 到 b; 第二个程序未使用子函数; 第三个程序 k 到 a,m 到 b。 (2) 函数在定义时要注意什么。 函数名,参数个数,注释 (3) 讨论静态局部变量的继承性。 静态局部变量相当于全局变量(只是只有在这个函数中能访问,但是生命周期是和全局变量差 不多的),函数退出之后变量还在,而且只在第一次进入的时候做初始化,以后会跳过初始化
二:编写的程序为 #include <stdio.h> #include <math.h> int main() {
double a,b,c,x1,x2,delta,p,q; scanf("%lf %lf %lf\n",&a,&b,&c); if(a==0) printf("不是一元二次方程\n"); else {
这里说明了我们要使用到的子函数 sum 未给出定义,继续改正 #include<stdio.h> int sum(int ,int ); int main( ) {
第2页共7页
int x=1,y=1,t; t=sum(x,y); printf(" %d\n",t); return 0 ; } int sum(int a,int b) { int m; m=a+b; return m; } 由于我自己给 x 和 y 赋值,所以输出了
pl=func(k.m); p2=func(k,m); printf("%d,%d\n",p1,p2);
第1页共7页
return 0 ; } Int func (int a,int b) { static int m=0,i=2;
i+=m+1; m=i+a+b; return(m); } 一:第一个程序输入后