浙师大 C语言 实验10函数2+答案


学号姓名
一.目的要求
1.掌握函数声明、定义和调用的基本方法
2.掌握用递归函数解决问题的方法。
3.掌握局部变量与全局变量的作用域区别
4.掌握数组作为函数参数的基本方法。
二.实验内容
【实验题1】
分析如下:
Line 2中的变量k是_全局_变量;而Line 10中的k是__局部_变量。程序输出结果是k=1,k=1,k=1。
要求用函数调用的形式ቤተ መጻሕፍቲ ባይዱ提示:
主函数的功能:输入字符串,输入字符,调用count()函数统计次数,输出结果。
count()函数功能:统计出次数,将结果返会主函数。
【实验题4】程序填空:定义递归函数reverse(n),功能是实现对一个整数逆序输出,如输入整数153,则输出351.
算法分析:(1)递归函数reverse(int n)的基本思想:首先直接输出整数n的最低位(n%10),然后检查去除该最低位之后,n是否还存在高数位,若有,则对去除最低位的剩余部分(n/10)用递归函数reverse()予以输出;
【实验题2】程序填空:输入一个整数n (1≤n≤10),再输入n个整数,将它们按升序排列后输出。
程序分析_选择法:
(1)由于n最大是10,需要定义一个长度为10的整型数组a;
(2)整个排序只需要确定前n-1个元素(a[0]~a[n-2]),最后一个元素a[n-1]无需另外处理;
(3)在确定a[i](i=0,1,…,n-2)时,先将a[i]本身看成最小,即令k=i,并将a[k]与后面的元素a[j](j=i+1, i+2,…, n-1)一一比较,
(2)主函数main()负责:输入整数n;若n为负数,取相反数;调用reverse().
运行程序,并输入:12345,则输出:5 4 3 2 1
【实验题5】编程题:输入3个学生的4门课成绩,调用score函数计算得到个人最高总分,最后在主函数中输出个人最高总分
【算法分析】用一个二维数组s[3][4]存放学生成绩,一行对应一个学生,一列对应一门课程。
[思考题]程序填空:
将上述的程序用函数调用的方式去实现。定义一个sort()函数来实现数组的排序;
在main()函数中调用sort()函数来实现数组的排序,并将结果输出。
【编程题3】:输入一个以回车结束的字符串(有效长度少于80),再输入一个字符,统计其在字符串中出现的次数。
如:输入asdabc再输入a答案为2
如果a[j]< a[k],则更新k的值:k =j。找出对应于下标i的最小元素a[k]后,交换a[i]与a[k]。
(4)上述排序算法的代码:
运行程序,输入n:5,输入5个整数:23 -9 14 0 -3,显示结果为:
如果是按从大到小的降序排列,语句行Line 13应改为:if(a[k]> a[j])k=j;
如果将第10行改为“static int k=1;”,该k是_局部静态_变量,程序输出结果是k=1,k=2,k=1。
如果将第10行改为“k=1;”,该k是_全局//Line 2__变量,程序输出结果是k=1,k=1,k=2。
如果将第10行改为空语句“;”后,此时Fun中的k是_全局//Line 2_变量,程序输出结果是k=1,k=2,k=3。
合集下载

第10章C语言程序设计习题答案

第10章C语言程序设计习题答案

C 语言程序设计( Visual C++6.0 环境)》习题答案习题十、思考题1.简述公有类型成员与私有类型成员的区别。

公有(public) 类型成员不但可以被类的成员函数访问,而且可以被外界访问,所以说公有类型定义了类的外部接口。

私有(private) 类型成员只能被类的成员函数访问,外界不能直接访问它。

类的数据成员一般都应该声明为私有成员。

2.简述构造函数与析构函数的作用。

构造函数的作用就是在对象在被创建时利用特定的值构造对象,将对象初始化。

析构函数的作用与构造函数正好相反,它是用来在对象被删除前进行一些清理工作。

析构函数调用之后,对象被撤消了,相应的内存空间也将被释放。

3.简述什么是友元函数。

友元函数是在类定义中由关键字friend 修饰的非成员函数。

友元函数可以是一个普通函数,也可以其它类中的一个成员函数,它不是本类的成员函数,但它可以访问本类的私有成员和保护成员。

4.简述公有继承、私有继承和保护继承三种继承方式的区别。

⑴、当类的继承方式为公有(public 继承)时,基类的公有(public )成员和保护( protected )成员仍然成为派生类的公有成员和保护成员,而基类的私有成员不能被派生类访问。

⑵、当类的继承方式为保护( protected )继承时,基类的公有(public )成员和保护( protected )成员将成为派生类的保护成员,而基类的私有成员不能被派生类访问。

⑶、当类的继承方式为私有(private )继承时,基类的公有(public )成员和保护(protected )成员将成为派生类的私有成员,而基类的私有成员不能被派生类访问。

5.定义一个圆柱体类,其属性为圆柱体的底面半径和高,能计算出圆柱体的体积。

#include<iostream.h>class cylinder{public:cylinder(float r,float h){radius=r;height=h;}float Volume();private:float radius;float height;};float cylinder::Volume(){return 3.14*radius*radius*height;}void main(){float r,h;cout<<" 请输入圆柱体的底面半径和高:"; cin>>r>>h;cylinder x(r,h);cout<<x.Volume()<<endl;}6.从第 5 题中定义的圆柱体类中派生出圆锥类,覆盖计算体积的成员函数。

c语言实验报告(附答案版)

c语言实验报告(附答案版)
二、实验目的
1、熟练掌握while,do—while,for语句实现循环的方法,包括如何正确地设定循环条件,如何控制循环的次数。
2、掌握break语句与continue语句的使用方法。
3、熟悉循环的嵌套以及从循环体内退出循环的处理。
4、理解什么是循环程序结构。
三、实验指导
为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。
实验1简单判定性问题求解
一、实验学时
完成本实验需4学时。
二、实验目的
1、阅读程序题
(1)掌握C语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;
(2)掌握不同的类型数据之间赋值的规律;
(3)掌握数据在内存中的存储方式;
(4)学会输入、输出函数的基本格式和使用方法;
(5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。
1)解题分析:解决问题的关键算法为求圆的面积并按要求输出。循环求圆的面积area,若area<40,则用continue语句提前结束本次循环并开始新一轮循环,若area>90,则用break语句跳出循环。
2)算法流程图如图2-1:
3)综合分析
需要从循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下的语句而立即从头开始新的一轮循环,这时就要用到break和continue语句。
(1)将一个百分制成绩转换成等级制成绩,百分制与等级制的对应关系如下表:
百分制
90-100
80-89
70-79
60-69
<60
等级制
优
良
中
差
劣
具体要求如下:
1)用switch语句实现该功能;

C语言实验10(附参考答案)

C语言实验10(附参考答案)

实验10:循环结构(1)实验目的:(1)领会程序设计中构成循环的三要素;(2)熟练掌握用while语句实现循环的方法。

(3)熟练掌握用do-while语句实现循环的方法。

实验内容:1、C语言中,while与do-while循环的主要区别是________。

A)do-while的循环体至少无条件执行一次B)while的循环控制条件比do-while的循环控制条件严格C)do-while允许从外部转到循环体内D)do-while的循环体不能是复合语句2、设有程序段则下面描述中正确的是()。

A)while循环执行10次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次3、下述程序段的运行结果是__________。

int a=1,b=2,c=3,t;while(a<b<c){t=a;a=b;b=t;c--;}printf(“%d,%d,%d”,a,b,c);A)1,2,0B)2,1,0C)1,2,1D)2,1,14、下面程序的功能是用do-while语句求1至1000之间满足“用3除余2;用5除余3;用7除余2”的数,且一行只打印五个数。

请填空。

5、下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。

(2)A)n:m B)m:n C)m:m D)n:n程序设计题1、(必做题)求出以下表达式的值。

S1=1+1/2+1/3+1/4+……+1/100;S2=1-1/3+1/5-1/7+……-1/99;2、(必做题)输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

【程序分析】提示:利用while语句,条件为输入的字符不为'\n'.3、(必做题)求S=10!4、(选做题)从键盘上输入若干正整数,求其中最大数和最小数。

输入的数以0结束【程序分析提示】(1)设第一个读取的数是当前最大数和最小数;(2)若当前读取的整数不为0,则继续循环;(3)若当前读取的数比最大数大,则记录为最大数;比最小数小,则记录为最小数;(4)读取下一个整数。

C语言上机实验1-18

C语言上机实验1-18

实验一C程序的运行环境及简单程序编写一、实验目的1.了解tc2.0编译系统的基本操作方法,学会独立使用该系统。

2.了解在该系统上如何编辑、编译、连接和运行一个C程序。

3.通过运行简单的C程序,初步了解C源程序的特点。

二、实验内容1.编写一个计算球体体积的程序,要求用户自行录入球体的半径。

参考公式V=4/3πr3.。

2.编写一个程序,要求用户输入一个美金数量,然后显示出如何用最少的20美元、10美元、5美元和1美元来付款。

运行结果:Ener a dollar amount:93$20 bills:4$10 bills:1$5 bills:0$1 bills:3实验二顺序结构程序设计一、实验目的1.熟悉C语言中的基本数据类型,掌握定义常量和变量以及对它们赋值的方法,了解数据输出时所用格式转换符。

2.掌握格式输入/输出函数的用法。

3.学会简单顺序程序的设计。

4.养成良好的程序设计习惯。

二、实验内容1.编写一个程序,对用户录入的产品信息进行格式化。

Enter item number:583Enter unit price:13.5Enter purchase date(mm/dd/yyyy):3/24/2010Item Unit PurchasePrice date583 $ 13.50 3/24/20102.编写一个程序,要求用户输入一个两位数,然后按数位的逆序打印出这个数。

Enter a two-digit number:28The reversal is :82实验三选择结构程序设计一、实验目的1.熟练使用if、switch编写程序。

二、实验内容1.编写一个程序,确定一个数的位数。

Enter a number:374The number 374 has 3 digits假设输入的数最多不超过4位。

提示:利用if语句进行数的判定。

例如,如果数在0到9之间,那么位数为1;如果数在10到99之间,那么位数为2。

浙江大学C语言上机练习参考答案汇总

浙江大学C语言上机练习参考答案汇总
夏 4 周...............................................................................................................................................35 10012 函数程序设计........................................................................................................ 35 10024 计算最长的字符串长度........................................................................................ 36 10025 字符串的连接........................................................................................................ 37 40017 求 2/1+3/2+5/3+8/5+.......................................................................................38 80021 找最大的字符串.................................................................................................... 39 80022 找最长字符串........................................................................................................ 40 80023 使用函数删除字符串中的字符............................................................................ 41 80024 使用函数实现字符串复制.................................................................................... 42 80025 判断回文字符串.................................................................................................... 43 80026 分类统计字符个数................................................................................................ 44

实验十函数应用答案

实验十函数应用答案

实验十函数应用一、实验目的1.掌握函数的定义和调用;2.理解形参和实参的使用和传值调用;3.理解函数声明的使用;4.掌握函数的嵌套调用;5.了解函数的嵌套与递归调用,掌握递归函数的编写规律;6.了解数组元素、数组名作函数参数。

二、实验学时数2学时三、实验步骤(一)阅读程序1.#include <stdio.h>int fun (int x, int y, int z){ z=x * x + y * y;}main(){ int a=38;fun(7,3,a);printf("%d",a);2.#include <stdio.h>void fun (int x,int y );main(){int x=5,y=3;fun(x,y);printf("%d,%d\n",x,y);}void fun (int x,int y ){ x=x+y;y=x-y;x=x-y;printf("%d,%d\n",x,y);3.#include <stdio.h>int f (int a);main(){ int s[ 8 ] = {1,2,3,4,5,6} ,i, d=0;for (i=0; f( s[i] ) ; i++)d+=s[i];printf("%d\n",d);}int f(int a){ return a%2;}4.#include<stdio.h>long f( int g){ switch(g){ case 0:return 0;case 1:case 2: return 1;}return ( f(g-1)+ f(g-2));}main ( ){ long int k;k = f(7);printf("\nk= %d\n",k);}5. #include<stdio.h>int f(int b[ ][4]){ int i,j,s=0;for(j=0;j<4;j++){ i=j;if(i>2) i=3-j;s+=b[i][j];}return s;}main( ){int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};printf("%d\n",f(a) );}(二)要求:依据题目要求,分析已给出的语句,填写空白。但是不要增行或删行,改动程序的结构。1. 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行。#include <stdio.h>double max(double a,double b);//或者double max(double,double);main(){double x,y;scanf("%lf%lf",&x,&y);printf("%.8lf\n",max(x,y));}double max(double a,double b){return (a>b ? a:b) ;}2.以下函数的功能是:求x的y次方,请填空,并配写出主调函数。

C语言test10答案

1.阅读、调试、运行程序,比较阅读的结果和运行的结果1)运行结果2)运行结果3)运行结果4)运行结果5)运行结果6)运行结果7)运行结果2. 完善程序,并调试运行1) (1) p=a; (2) p=p-1;2) (1) *s=*t (2)*s='\0';(3) s(a,b);3) (1) *k=p; (2) &k4) (1) pa+n; (2) *q5) (1) p (2) i (2) return 1 ;6) (1) s (2) *++p3. 修正程序,并调试运行1)(1) int fun(int *a,int *b,int n)(2) 改成*b=c-a;(3) max=fun(a,&p,N);2)(1)char *p1,*p2;(2)while(*p1!='\0')(3)p1= str1+m-1 ;(4)strcopy(str1,str2,m); 3)(1)scanf("%d",p++); (2)max=p;(3)if(max==arr)(4)printf("%3d",*p++);4.编写程序1)#include<stdio.h>void main(){int a[100],n,k,m,*p,s,i; scanf("%d%d%d",&n,&k,&m); for(p=a;p<a+n;p++)*p=1;p=a+k-1;i=0;while(i!=n){s=0;while(s!=m){s=s+*p;p++;if(p==a+n)p=a;}if(p!=a){printf("%4d",p-a);*(p-1)=0;}else{printf("%4d",10);*(p+n-1)=0;}i++;}}2)#include<stdio.h>void con(char *s,char *t) {char *p;p=s;while(*p)p++;while(*t)*p++=*t++;*p='\0';}void main(){char a[80],b[80];gets(a);gets(b);con(a,b);puts(a);}3)#include<stdio.h>void main(){int a[80],b[80],c[80]; int m,n,*pa,*pb,*pc;scanf("%d",&m);for(pa=a;pa<a+m;pa++) scanf("%d",pa);scanf("%d",&n);for(pb=b;pb<b+n;pb++) scanf("%d",pb);pa=a;pb=b;pc=c;while(pa<a+m&&pb<b+n) if(*pa<*pb)*pc++=*pa++;else*pc++=*pb++;while(pa<a+m)*pc++=*pa++;while(pb<b+n)*pc++=*pb++;for(pc=c;pc<c+m+n;pc++) printf("%6d",*pc);printf("\n");}4)#include<stdio.h>void main(){int a[80],b[80],c[80]; int m,n,*pa,*pb,*pc,k; scanf("%d",&m);for(pa=a;pa<a+m;pa++) scanf("%d",pa);scanf("%d",&n);for(pb=b;pb<b+n;pb++) scanf("%d",pb);pa=a;pb=b;pc=c;while(pa<a+m) *pc++=*pa++;k=m;while(pb<b+n){pa=a;while(pa<a+m&&*pb!=*pa) pa++;if(pa==a+m){*pc++=*pb;k++;}pb++;}for(pc=c;pc<c+k;pc++)printf("%6d",*pc);printf("\n");}。

C实验报告答案

C程序设计初步一、实验目的(1) 熟悉C语言程序的运行环境(VC++ 。

(2) 掌握C语言程序的上机步骤,了解运行C程序的方法。

(3) 掌握C语言程序的书写格式和C语言程序的结构。

二、实验内容(均要求给出运行结果)1.程序改错题(1) 以下程序实现计算x×y的值并将结果输出。

请改正程序中的错误。

#include ""void main()/**********FOUND**********/{ int x=y=4;z=x*y;/**********FOUND**********/printf("z=%d/n", Z);}答案:=======(答案1)=======int x=,4,y=4,z;=======(答案2)=======printf("z=%d\n", z);(2) 以下程序实现输入圆的半径,求圆的周长。

请改正程序中的错误。

#include ""void main(){ int r;float l;printf("Enter r:");scanf("%d", &r);/**********FOUND**********/l=2πr/**********FOUND**********/printf("l=%d\n",l);}答案:=======(答案1)=======l=2**r;=======(答案2)=======printf("l=%f\n", l);2.程序填空题(1) 下面程序能对两个整型变量的值进行交换,请填空。

#include ""void main(){ int a=3,b=4,t;t=a;/***********SPACE***********/【】;/***********SPACE***********/【】;printf("a=%d,b=%d\n",a,b);}答案:=======(答案1)=======a=b=======(答案2)=======b=t(2) 下面程序不用第三个变量,实现两个数的对调操作。

C语言实验答案(2-6)

实验二 1.验证性实验 (1) 程序运行结果
x=10,y=10,z=10 x=8,y=10,z=16 c1=M,c2=4d,c3=115,c4=77 c1=M,c2=M,c3=M,c4=M c1=77,c2=77,c3=77,c4=77 c=m,c=109
(2)程序运行结果
输入:
1,2 3,4 5,6 7,6 a,b
运行一: 1 0,1,0,0
运行二: 2 0,0,1,1
运行三: 3 0,0,0,1
运行四: 4 1,0,0,0
运行五: 5 1,0,0,0
输入不同数据以后,a,b,c,d 的结果不一样,分析其原因主要在于:输入值不同, switch 语句进入的 case 分支不同;当分支语句中未出现 break 时 switch 语句会继 续继续进入下一 case 分支分支执行,直到遇到 break 或最后。
实验三
一、验证性试验 15M5.55
b=25,y=2.6,c2=N a= 15,b=25 x=5.550000,y=2.600000 c1=M,c2=N 在 scanf("%d%c%f",&a,&c1,&x);的输入中,由于输入字符型数据时空格会作为 有效输入字符处理,所以空格不能作为数据输入的分隔符,在输入 a 的值后,接 下来输入的应是一个字符型,若之间用空格则此空格将被视为一个字符,但若是 先输字符再输一个数,其间就可以用空格。 二、程序填空: ①a/b ②a%b ③quot,resi 三、程序改错: scanf("%f %f ",&x,&y) 改为 scanf("%d%d",&x,&y); printf("%d+%d=%d",x+y) 改为 printf("%d+%d=%d",x,y,x+y) ; (2) getchar(x) 改为 x=getchar() y=x-32 改为 y=x+32 四、设计性试:

《程序设计基础(C语言)》实验指导书

《程序设计基础(C语言)》目录第1 章概述 (1)1.1 课程简介 (1)1.2 实验环境选择 (1)第 2 章实验要求 (1)2.1 实验过程要求 (1)2.2 考核及评分标准 (1)第 3 章实验内容 (2)3.1 实验1 熟悉C语言运行环境 (2)3.2 实验2 数据类型 (3)3.3 实验3 运算符和表达式 (4)3.4 实验4 顺序结构及输入和输出 (6)3.5 实验5 选择结构 (7)3.6 实验6 循环结构 (9)3.7 实验7 数组(1) (11)3.8 实验8 数组(2) (12)3.9 实验9 字符串及其操作 (13)3.10 实验10 函数 (14)3.11 实验11 结构体 (15)3.12 实验12 指针 (16)第 1 章概述1.1 课程简介《程序设计基础(C语言)》是软件工程各专业或其它相近专业学生的公共职业基础课,是软件类各专业的入门课程,直接影响学生后继职业技术课程的学习及可持续发展能力的培养。

通过本书,学习基本的程序设计概念和程序设计方法,学会使用C语言解决实际问题,进行初级的程序设计。

1.2 实验环境选择VC++6.0第 2 章实验要求2.1 实验过程要求本课程中,实验者必须服从指导教师和实验室工作人员的安排,遵守纪律与实验制度,爱护设备及卫生。

在指定的实验时间内,必须到机房内实验,其余时间可自行设计和分析。

本课程所涉及的程序代码,都要求有较高的可读性和效率,多文件表示。

2.2 考核及评分标准若实验者在指定上机时间三次不到课,取消考核资格。

请假,必须提前出具正式假条,不接受事后假条。

如果发现抄袭、篡改、伪造实验数据,或实验报告和设计报告雷同,涉及的所有学生的该课程成绩计为0 分。

本课程采用结构化评分,主要由指导教师灵活处理,可以是考勤等。

第 3 章实验内容3.1 实验1 熟悉C语言运行环境一、实验目的1.了解什么是C语言2.熟悉C语言程序开发环境二、实验内容和步骤1.大学生涯的第一个程序1)运行Microsoft Visual Studio 2008或者VC6.02)创建项目,选择win32控制台应用程序或者空项目,项目名为MyFirstApp3)新建项目,选择C++源文件,文件名为HelloWorld4)在程序编辑窗口,输入如下代码#include <stdio.h>/* 主程序*/void main(){printf("hello world\n");}5)执行程序,Ctrl+F56)观察输出结果,并记录2.修改程序1)增加语句,观察输出结果是否不同printf("hello world\n");printf("world is me\n");2)删除输出字符串中的“\n”,观察输出结果是否不同printf("hello world\n");3)进行换行输出,观察输出结果是否不同printf("hello, ");printf("world");printf("\n");4)将上个程序块中的printf("\n");去掉,观察输出结果是否不同3.用自己的语言,描述下对C语言程序的第一印象4.简单描述下,第二步骤中,输出结果相同与不同的原因;以及“\n”的用途3.2 实验2 数据类型一、实验目的1.掌握变量的命名规则和定义2.掌握C语言程序中的各种数据类型并使用它们二、实验内容和步骤1.定义3个变量numInt、numFloat、charInfo,他们的类型分别为整型,单精度类型,字符型;并分别初始化为2,2.0和‘A’,最后输出这三个变量的值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档