c语言实验报告册答案

(此文档为word 格式,下载后您可任意编辑修改!)

实验

一、实验学时

1

简单判定性问题求解

完成本实验需4学时。 二、实验目的 1、阅读程序题

(1)掌握C 语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;

(2)掌握不同的类型数据之间赋值的规律; (3)掌握数据在内存中的存储方式;

(4)学会输入、输出函数的基本格式和使用方法;

(5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。

2、编程题

(1)如何运用if-else 判定性结构进行程序设计; (2)如何运用switch 判定性结构进行程序设计。 3、调试题

(1)熟悉C 程序的编辑、编译、连接和运行的过程。 三、实验指导

为了达到最佳的实验效果,以下提供几条适于编程的指导意见,可供参考。

1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察数据在内存中的存储方式、含不同种运算符表达式的输出结果。

2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,完成程序的设计。要注意简单判定性问题的结构选择。

3、调试题应明确程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。

四、实验内容 1、阅读程序题 (1)main( )

{ *定义字符型变量* char c1,c2; *向字符变量赋以整数* c1=97; c2=98;

printf("%c %c\n",c1,c2); *以字符形式输出* printf("%d %d\n",c1,c2); *以整数形式输出*

}

该程序的输出结果是 a b(换行)97 98 。 思考:可否改成int c1,c2;输出结果是? 相同 (2)main()

{

int a=7,b=5;

printf("%d\n",b=ba); }

思考:若将printf 可以 (3)main()

{

int a=9;

a+=a-=a+a; *包含复合的赋值运算符的赋值表达式*

printf("%d\n",a); }

思考:赋值表达式a 第一步:a=a-(a+a)=-9 第二步a=a+a=18 (4)main()

{

int k=-1;

printf("%d,%u\n",k,k); }

该程序的输出结果是 -1 。 思考:-1在内存中的存储形式? 取反加一 (32个)

(5)main()

{

unsigned x1; int b=-1;

x1=b; *有符号数据传送给无符号变量*

printf("%u",x1); }

该程序的输出结果是 。

思考:不同类型的整型数据相互赋值时,规则是什么?

(有符号赋值给无符号)

(6)main()

{

int a=3,b=4,c=5;

printf("%d\n",(!(a

思考:若将第一个 1(换行)6 (7)main()

{ int a=1,b=2,c=3;

if(c=a) ; printf("%d\n",c); else printf("%d\n",b); }

该程序的输出结果是 1 。

2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)

(1)将一个百分制成绩转换成等级制成绩,百分制与等级制的对应

具体要求如下:

1) 用switch 语句实现该功能;

2) 用键盘输入百分制成绩,输入前要有提示信息,对于不合理的数

据应输出错误信息;

3) 输出结果应包含百分制成绩和成绩等级;

4) 分别输入成绩-10,30,60,68,75,83,95,102,查看记录运

行结果。

见下页

测试数据:100,50,-20

输出结果:优,劣,成绩输入错误

(2)银行整存整取存款不同期限的月息利率分别为:

输入存款的本金和年限,求到期时能从银行得到的利息与本金的合计。(利息的计算公式为:利息=本金×月息利率×12 ×存款年限。 见下页

测试数据:

4,100 04,-10

输出结果:

133.12 本金金额不能为负!

(3)调试下面程序,使之具有如下功能:输入a 、b 、c 三个整数,求最小值。

main() {

int a,b,c;

scanf("%d%d%d",a,b,c); if((a>b)&&(a>c))

if(b

printf("min=%d\n",b); else

printf("min=%d\n",c);

if((a

printf("min=%d\n",a); } 程序中包含有一些错误,按下述步骤进行调试。

1)设置断点。

2)通过单步执行,观测变量,发现程序中的错误。 程序调试记录

1、程序出现的错误及改正

第四行,abc 前都加&,在%d%d%d中两个%d之间加空格; { }括住六到九行;把第十行if 改成else if;

2、程序的改进 1. 每个后加一个=; 2. 在程序末尾添加如下指令

else if((a=c)||(a>=b)&&(a

printf("min=%d\n",b); printf("min=%d\n",c); if (b

实验

一、实验学时

2

循环结构及其应用

完成本实验需4学时。 二、实验目的

1、熟练掌握while ,do —while ,for 语句实现循环的方法,包括如

何正确地设定循环条件,如何控制循环的次数。 2、掌握break 语句与continue 语句的使用方法。

3、熟悉循环的嵌套以及从循环体内退出循环的处理。 4、理解什么是循环程序结构。 三、实验指导

为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。

1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意循环语句的一般使用方法,以及复合运算符的使用。

2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,以面向过程的、模块化设计方法完成程序设计。

【例题解析】

编写一个程序,输出半径为1到10的圆的面积,若面积在40到90之间则予以输出,否则,不予输出。

1)解题分析:解决问题的关键算法为求圆的面积并按要求输出。循环求圆的面积area ,若area90,则用break 语句跳出循环。

2)算法流程图如图2-1: 3)综合分析

需要从循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下的语句而立即从头开始新的一轮循环,这时就要用到break 和continue 语句。

图2-1 输出半径为1到10且面积在40 到90之间的圆面积的流程图

4)程序代码 #include

int r;

for(r=1;r

area=pi*r*r; if (area90) break;

printf ("area=%5.2f\n",area); }

}

四、实验内容 1、阅读程序题。

#include

do{

x=x*x; } while(!x);

printf("%x=\n",x);

}

#include

printf("%d\n",num); }

}

int a,b;

for (a=1,b=1 ; a=20) break;

if (b%3==1) { b+=3 ; continue ; } b-=5;

}

printf(“%d\n”,a);

}

int y=2,a=1;

while (y--!=-1) do {

a*=y ; a++ ; } while (y--) ;

printf(“%d,%d\n”,a,y);

}

2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)

(1) 输入整数n ,求 n!(1

(2) 打印出所有“水仙花数”。所谓“水仙花数”是指一个三位数,

其各位数字的立方之和正好等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33

【提示】根据题目要求只要分别求出一个三位数的个位、十位、百位上的数字,然后判断是否满足(某一三位数a=a的百位的立方+a的十位的立方+a的个位的立方)这个公式,满足这个条件的三位数就是“水仙花数”。

(3) 一个整数,它加上100后是一个完全平方数,再加上168又

是一个完全平方数,请问该数是多少?

【提示】在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。 3、程序选做题

(1) 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃掉了一

半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子

吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的总数一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。

【提示】 使用逆向推导的方式,设后一天的桃子为N 个,则其前面一天的桃子为(N+1)*2个,以此类推。

(2) “百钱买百鸡”问题:公鸡每只5元,母鸡每只3元,小鸡每3

只1元;用100元买100只鸡,问公鸡,母鸡,小鸡各买多少只?

【提示】设公鸡x 只,母鸡y 只,小鸡z 只;则有1

要求:写出题号,并编写顺序号。如四(1)出现的错误 (1)······ (2)······

1、程序出现的错误及改正 2、程序的改进

实验

一、实验学时

3

模块化设计与应用

完成本实验需要4学时。 二、实验目的 1、阅读程序题

(1) 掌握函数实参和形参的对应关系以及“值传递”的方式; (2) 理解函数调用的过程以及函数的返回值; (3) 弄清楚带参函数和带参的宏之间的异同。 2、编程题

(1) 深刻理解模块化程序设计的思想及如何进行模块划分; (2) 掌握定义函数的方法以及函数原型的声明;

(3) 灵活运用函数调用(有参函数和无参函数、有返回值的函数和无返回值的函数) 。

三、实验指导

为了达到最佳的实验效果,下面提出几点指导意见或要求以供参考: 1、阅读程序题应先运用自己在课堂所学的知识,推导出结果。上机时输入计算机,验证自己推导的结果是否正确。若不正确,应分析原因。

2、编程题注意事项:

(1) 一个模块(或函数) 应有一个入口点和一个退出点。

(2) 一般每个模块(或函数) 只执行一个任务。不要将无关的任务放于同一模块中,只将完成同一任务的语句组合在一起。

(3) 先画流程图,后写程序代码;

(4) 变量和函数标示符尽量“见名知义”; (5) 程序中应有适当注释。

3、应记录调试程序时出现的错误,以便经验的积累。

四、实验内容 1、阅读程序题

(1)

#include

void main( ) {

int s; s=f(2);

printf("%d, %d\n", s, f(s)); }

(2)

} for( i =0;i

(3)

#include

int x=3,y=5,*p=&x,*q=&y; }

(4) #include

int a=1,b=2,c=3;

printf("%d\n", M(a+b,b+c,c+a)); }

(5)

#include

void main() M(a+b,b+c,c+a));

{ }

2、编程序并上机调试运行。

(1) 请设计一个函数fun(),它的功能是:判断pm 是否是素数。若

pm 是素数,返回1;若不是素数,返回0。pm 的值由主函数从键盘读入。

函数fun():

主函数main():

测试数据及输出结果:

33 0

37 1

(2) 请设计一个函数fun(),它的功能是:将两个两位数的正整数a 、b 合并形成一个整数放在c 中。合并的方式是:将a 数的十位和个位数依次放在c 数的千位和十位上, b 数的十位和个位数依次放在c 数的百位和个位上。例如,当a =45,b=12。调用该函数后,c=4152。

函数fun():

主函数main():

测试数据及输出结果:

9 21 输入数字错误!

21 23 2123

(3) 请设计两个函数MaxCommonFactor()和

MinCommonMultiple(),它们的功能是:前者用于求两个正整数的最大公约数,后者用于求两个正整数的最小公倍数。

函数MaxCommonFactor():

函数MinCommonMultiple():

函数main():

测试数据及输出结果:

2 4 2(换行)4

3 5 1(换行)15

-1 5 数字输入错误!

五、程序调试记录

要求记录以下内容:

1、程序出现的错误及改正

2、程序的改进

实验

一、实验学时 4 相同数据类型集合

完成本实验需4学时。

二、实验目的

1、阅读程序题

(1)掌握一维和二维数组的定义、赋值和输入输出

(2)学会使用一维数组、二维数组

(3)学会使用多维数组、字符数组

(4)学会使用字符串处理函数

2、编程题

(1)如何运用数组进行程序设计

(2)了解字符串处理函数

三、实验指导

为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。

1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意数组下标的使用方法。

2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,注意数组下标不要越界(为了加深认识,自己可以尝试一下下标越界的情况)。

3、调试程序要有耐心,反复的调试过程,虽然表面看起来费时费力,但是你一定会受益非浅。

四、实验内容

1、阅读程序题

(1)main()

{char ch[7]={"65ab21"};

int i,s=0;

for(i=0;ch[i]>='0'&&ch[i]

s=10*s+ch[i]-'0';

printf("%d\n",s);}

(2)#define MAX 5

main()

{int a[MAX],i;

for(i=0;i

a[i]=i;

printf("\n*****a*****\n");

for(i=0;i

{

printf(" a[%d]=",i);

printf("%d\n",a[i]);

}

}

该程序的输出结果是 。

(3) #include "stdio.()

{

int i,j,temp;

int a[N+1];

int count=0;

printf(" input %d data : \n",N);

for (i=1;i

scanf("%d",&a[i]);

printf("********sort course********\n");

for(i=1;i

{

count++;

for(j=1;j

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

printf("%3d:",count); for(j=1;j

printf(" %d",a[j]);

printf("\n");

}

printf("the result is:\n");

for(i=1;i

printf("%d",a[i]); }

(4)#include "stdio.()

{

int f[N],i;

f[0]=1;

f[1]=1;

for(i=2;i

f[i]=f[i-1]+f[i-2];

printf("\nFibonacci\n"); for(i=0;i

{

if(i%4==0) printf("\n\n");

printf("f[%-2d]=%-5d ",i,f[i]);

}

}

该程序的运行结果为 。

(5)#include "stdio.()

{

int i,j, temp;

int a[3][3]={{ },{},{}};

printf("---matrix a---\n");

for(i=0;i

{

for(j=0;j

printf("%3d",a[i][j]);

printf("\n\n");

}

for(i=0;i

for(j=0;j

{ temp=a[i][j];

a[i][j]=a[j][i];

a[j][i]=temp;

}

printf("---matrix a changed---\n");

for(i=0;i

{

for(j=0;j

printf("\n\n");

}

}

该程序的输出结果是 。

(6)#include "stdio.()

{ char s[40];

int i;

printf("input string:");

for(i=0;(s[i]=getchar())!='\n';i++);

s[i]='\0'; printf("\noutput string:");

for(i=0;s[i]!='\0';i++)

{ if(s[i]>='a'&&s[i]

s[i]=s[i]-32;

else if(s[i]>='A'&&s[i]

s[i]=s[i]+32;

printf("%c",s[i]);

}

}

2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)

(1)编写一个3*4矩阵,找出每行中最大元素并与第一列元素交换。具体要求如下:

(a )使用二维数组存放该3*4矩阵;

(b )定义并初始化该二维数组;

(c )输出原矩阵和变换后的矩阵进行比较;

(d )有必要的提示信息。

见下页

(2)编程实现如下功能:将字符数组str1中的全部字符拷贝到字符数组str2中,具体要求如下:

(a )不能使用字符串拷贝函数strcpy();

(b )必须将str1中的字符串结束标志‘\0’一起拷贝,但其后的字符不拷贝;

(c )str1的长度不超过80,str2的长度必须足够大;

(d )有必要的提示信息。。

(3)设某班共有10名学生,为了平定某门课程的奖学金,按照规定超过全班平均成绩10%者发给一等奖,超过全班平均成绩5%者发给二等奖。编写程序,输出学生学号、成绩和奖学金等级。

见下页 主函数中调用代码:

五、程序调试记录

(1)调试下面程序。

#define N 10

main()

{ int i,num,data[]={56,70};

* num存放被查找的整数, 数组data 存放有序数列*

int low=0,");

scanf("%d",&num); *输入要查找的整数*

printf("the sorted numbers are:\n");

for(i=1;i

printf("%d ",data[i]); *输出有序数列*

while(low

*若low 大于high, 则查找失败*

}

程序中包含有一些错误,按下述步骤进行调试。

程序调试记录 1、程序出现的错误及改正

1. 用{}把十四十五行括起来

2. 第十行i=1改成i=0;

2、程序的改进

1. 把七八九三行与十十一两行换一下位置,方便用户操作;

实验

一、实验学时 5 深入模块化设计与应用

完成本实验需4学时。

二、实验目的

1、阅读程序题

(1)学会使用函数嵌套调用的使用方法

(2)学会使用一维数组做为函数参数

(3)递归调用的设计与使用

(4)学会使用指针做为函数的参数

2、编程题

(1)如何运用指针进行程序设计

(2)如何以一维数组、二维数组做为函数参数进行程序设计

(3)冒泡排序、选择排序的灵活应用

三、实验指导

为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。

1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察函数嵌套调用、一维数组做为函数参数、指针做为函数的参数、递归调用的使用方法。

2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,以面向过程的、模块化设计方法完成程序设计。要注意变量设置、函数参数及返回值在数据传递或共享中的重要作用。

四、实验内容

1、阅读程序题

(1)int func(int a, int b)

{ return (a+b);}

void main()

{ int x=2,y=5,z=8,r;

r=func(func(x,y),z);

printf(“%d\n”,r);

}

(2)int f(int b[], int n)

{ int i,r;

r=1;

for(i=0;i

return r;

}

void main()

{ int x,a[]={8,9};

x=f(a,3);

printf(“%d\n”,x);

}

(3) long fib(int n)

{ if(n>2) return(fib(n-1)+fib(n-2));

else return(2);

}

void main()

{ printf(“%d\n”,fib(3));}

(4)int f(char *s)

{ int k=0;

while(*s) k=k*10+*s++-‘0’;

return(k);

}

以f(“1234”)

(5)void sort(int *b,int n) { int i,j,k,t; for(i=0;i

(此文档为word 格式,下载后您可任意编辑修改!)

实验

一、实验学时

1

简单判定性问题求解

完成本实验需4学时。 二、实验目的 1、阅读程序题

(1)掌握C 语言数据类型,熟悉如何定义一个整型、字符型的变量,以及对它们赋值的方法;

(2)掌握不同的类型数据之间赋值的规律; (3)掌握数据在内存中的存储方式;

(4)学会输入、输出函数的基本格式和使用方法;

(5)学会使用有关算术运算符、逻辑运算符、关系运算符,以及包含这些运算符的表达式。

2、编程题

(1)如何运用if-else 判定性结构进行程序设计; (2)如何运用switch 判定性结构进行程序设计。 3、调试题

(1)熟悉C 程序的编辑、编译、连接和运行的过程。 三、实验指导

为了达到最佳的实验效果,以下提供几条适于编程的指导意见,可供参考。

1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察数据在内存中的存储方式、含不同种运算符表达式的输出结果。

2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,完成程序的设计。要注意简单判定性问题的结构选择。

3、调试题应明确程序的调试、测试是一项非常烦琐的工作,也是非常重要的工作。对于初学者来说应该建立良好的习惯,在调试程序的时候,应该尽可能考虑到程序运行时各种可能情况。

四、实验内容 1、阅读程序题 (1)main( )

{ *定义字符型变量* char c1,c2; *向字符变量赋以整数* c1=97; c2=98;

printf("%c %c\n",c1,c2); *以字符形式输出* printf("%d %d\n",c1,c2); *以整数形式输出*

}

该程序的输出结果是 a b(换行)97 98 。 思考:可否改成int c1,c2;输出结果是? 相同 (2)main()

{

int a=7,b=5;

printf("%d\n",b=ba); }

思考:若将printf 可以 (3)main()

{

int a=9;

a+=a-=a+a; *包含复合的赋值运算符的赋值表达式*

printf("%d\n",a); }

思考:赋值表达式a 第一步:a=a-(a+a)=-9 第二步a=a+a=18 (4)main()

{

int k=-1;

printf("%d,%u\n",k,k); }

该程序的输出结果是 -1 。 思考:-1在内存中的存储形式? 取反加一 (32个)

(5)main()

{

unsigned x1; int b=-1;

x1=b; *有符号数据传送给无符号变量*

printf("%u",x1); }

该程序的输出结果是 。

思考:不同类型的整型数据相互赋值时,规则是什么?

(有符号赋值给无符号)

(6)main()

{

int a=3,b=4,c=5;

printf("%d\n",(!(a

思考:若将第一个 1(换行)6 (7)main()

{ int a=1,b=2,c=3;

if(c=a) ; printf("%d\n",c); else printf("%d\n",b); }

该程序的输出结果是 1 。

2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)

(1)将一个百分制成绩转换成等级制成绩,百分制与等级制的对应

具体要求如下:

1) 用switch 语句实现该功能;

2) 用键盘输入百分制成绩,输入前要有提示信息,对于不合理的数

据应输出错误信息;

3) 输出结果应包含百分制成绩和成绩等级;

4) 分别输入成绩-10,30,60,68,75,83,95,102,查看记录运

行结果。

见下页

测试数据:100,50,-20

输出结果:优,劣,成绩输入错误

(2)银行整存整取存款不同期限的月息利率分别为:

输入存款的本金和年限,求到期时能从银行得到的利息与本金的合计。(利息的计算公式为:利息=本金×月息利率×12 ×存款年限。 见下页

测试数据:

4,100 04,-10

输出结果:

133.12 本金金额不能为负!

(3)调试下面程序,使之具有如下功能:输入a 、b 、c 三个整数,求最小值。

main() {

int a,b,c;

scanf("%d%d%d",a,b,c); if((a>b)&&(a>c))

if(b

printf("min=%d\n",b); else

printf("min=%d\n",c);

if((a

printf("min=%d\n",a); } 程序中包含有一些错误,按下述步骤进行调试。

1)设置断点。

2)通过单步执行,观测变量,发现程序中的错误。 程序调试记录

1、程序出现的错误及改正

第四行,abc 前都加&,在%d%d%d中两个%d之间加空格; { }括住六到九行;把第十行if 改成else if;

2、程序的改进 1. 每个后加一个=; 2. 在程序末尾添加如下指令

else if((a=c)||(a>=b)&&(a

printf("min=%d\n",b); printf("min=%d\n",c); if (b

实验

一、实验学时

2

循环结构及其应用

完成本实验需4学时。 二、实验目的

1、熟练掌握while ,do —while ,for 语句实现循环的方法,包括如

何正确地设定循环条件,如何控制循环的次数。 2、掌握break 语句与continue 语句的使用方法。

3、熟悉循环的嵌套以及从循环体内退出循环的处理。 4、理解什么是循环程序结构。 三、实验指导

为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。

1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意循环语句的一般使用方法,以及复合运算符的使用。

2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,以面向过程的、模块化设计方法完成程序设计。

【例题解析】

编写一个程序,输出半径为1到10的圆的面积,若面积在40到90之间则予以输出,否则,不予输出。

1)解题分析:解决问题的关键算法为求圆的面积并按要求输出。循环求圆的面积area ,若area90,则用break 语句跳出循环。

2)算法流程图如图2-1: 3)综合分析

需要从循环体中提前跳出循环,或者在满足某种条件下,不执行循环中剩下的语句而立即从头开始新的一轮循环,这时就要用到break 和continue 语句。

图2-1 输出半径为1到10且面积在40 到90之间的圆面积的流程图

4)程序代码 #include

int r;

for(r=1;r

area=pi*r*r; if (area90) break;

printf ("area=%5.2f\n",area); }

}

四、实验内容 1、阅读程序题。

#include

do{

x=x*x; } while(!x);

printf("%x=\n",x);

}

#include

printf("%d\n",num); }

}

int a,b;

for (a=1,b=1 ; a=20) break;

if (b%3==1) { b+=3 ; continue ; } b-=5;

}

printf(“%d\n”,a);

}

int y=2,a=1;

while (y--!=-1) do {

a*=y ; a++ ; } while (y--) ;

printf(“%d,%d\n”,a,y);

}

2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)

(1) 输入整数n ,求 n!(1

(2) 打印出所有“水仙花数”。所谓“水仙花数”是指一个三位数,

其各位数字的立方之和正好等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33

【提示】根据题目要求只要分别求出一个三位数的个位、十位、百位上的数字,然后判断是否满足(某一三位数a=a的百位的立方+a的十位的立方+a的个位的立方)这个公式,满足这个条件的三位数就是“水仙花数”。

(3) 一个整数,它加上100后是一个完全平方数,再加上168又

是一个完全平方数,请问该数是多少?

【提示】在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后的结果满足如下条件,即是结果。 3、程序选做题

(1) 猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃掉了一

半,还不过瘾,又多吃了一个。第二天早上又将剩下的桃子

吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的总数一半零一个。到第10天早上想再吃时,见只剩一个桃子了。求第一天共摘了多少桃子。

【提示】 使用逆向推导的方式,设后一天的桃子为N 个,则其前面一天的桃子为(N+1)*2个,以此类推。

(2) “百钱买百鸡”问题:公鸡每只5元,母鸡每只3元,小鸡每3

只1元;用100元买100只鸡,问公鸡,母鸡,小鸡各买多少只?

【提示】设公鸡x 只,母鸡y 只,小鸡z 只;则有1

要求:写出题号,并编写顺序号。如四(1)出现的错误 (1)······ (2)······

1、程序出现的错误及改正 2、程序的改进

实验

一、实验学时

3

模块化设计与应用

完成本实验需要4学时。 二、实验目的 1、阅读程序题

(1) 掌握函数实参和形参的对应关系以及“值传递”的方式; (2) 理解函数调用的过程以及函数的返回值; (3) 弄清楚带参函数和带参的宏之间的异同。 2、编程题

(1) 深刻理解模块化程序设计的思想及如何进行模块划分; (2) 掌握定义函数的方法以及函数原型的声明;

(3) 灵活运用函数调用(有参函数和无参函数、有返回值的函数和无返回值的函数) 。

三、实验指导

为了达到最佳的实验效果,下面提出几点指导意见或要求以供参考: 1、阅读程序题应先运用自己在课堂所学的知识,推导出结果。上机时输入计算机,验证自己推导的结果是否正确。若不正确,应分析原因。

2、编程题注意事项:

(1) 一个模块(或函数) 应有一个入口点和一个退出点。

(2) 一般每个模块(或函数) 只执行一个任务。不要将无关的任务放于同一模块中,只将完成同一任务的语句组合在一起。

(3) 先画流程图,后写程序代码;

(4) 变量和函数标示符尽量“见名知义”; (5) 程序中应有适当注释。

3、应记录调试程序时出现的错误,以便经验的积累。

四、实验内容 1、阅读程序题

(1)

#include

void main( ) {

int s; s=f(2);

printf("%d, %d\n", s, f(s)); }

(2)

} for( i =0;i

(3)

#include

int x=3,y=5,*p=&x,*q=&y; }

(4) #include

int a=1,b=2,c=3;

printf("%d\n", M(a+b,b+c,c+a)); }

(5)

#include

void main() M(a+b,b+c,c+a));

{ }

2、编程序并上机调试运行。

(1) 请设计一个函数fun(),它的功能是:判断pm 是否是素数。若

pm 是素数,返回1;若不是素数,返回0。pm 的值由主函数从键盘读入。

函数fun():

主函数main():

测试数据及输出结果:

33 0

37 1

(2) 请设计一个函数fun(),它的功能是:将两个两位数的正整数a 、b 合并形成一个整数放在c 中。合并的方式是:将a 数的十位和个位数依次放在c 数的千位和十位上, b 数的十位和个位数依次放在c 数的百位和个位上。例如,当a =45,b=12。调用该函数后,c=4152。

函数fun():

主函数main():

测试数据及输出结果:

9 21 输入数字错误!

21 23 2123

(3) 请设计两个函数MaxCommonFactor()和

MinCommonMultiple(),它们的功能是:前者用于求两个正整数的最大公约数,后者用于求两个正整数的最小公倍数。

函数MaxCommonFactor():

函数MinCommonMultiple():

函数main():

测试数据及输出结果:

2 4 2(换行)4

3 5 1(换行)15

-1 5 数字输入错误!

五、程序调试记录

要求记录以下内容:

1、程序出现的错误及改正

2、程序的改进

实验

一、实验学时 4 相同数据类型集合

完成本实验需4学时。

二、实验目的

1、阅读程序题

(1)掌握一维和二维数组的定义、赋值和输入输出

(2)学会使用一维数组、二维数组

(3)学会使用多维数组、字符数组

(4)学会使用字符串处理函数

2、编程题

(1)如何运用数组进行程序设计

(2)了解字符串处理函数

三、实验指导

为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。

1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意数组下标的使用方法。

2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,注意数组下标不要越界(为了加深认识,自己可以尝试一下下标越界的情况)。

3、调试程序要有耐心,反复的调试过程,虽然表面看起来费时费力,但是你一定会受益非浅。

四、实验内容

1、阅读程序题

(1)main()

{char ch[7]={"65ab21"};

int i,s=0;

for(i=0;ch[i]>='0'&&ch[i]

s=10*s+ch[i]-'0';

printf("%d\n",s);}

(2)#define MAX 5

main()

{int a[MAX],i;

for(i=0;i

a[i]=i;

printf("\n*****a*****\n");

for(i=0;i

{

printf(" a[%d]=",i);

printf("%d\n",a[i]);

}

}

该程序的输出结果是 。

(3) #include "stdio.()

{

int i,j,temp;

int a[N+1];

int count=0;

printf(" input %d data : \n",N);

for (i=1;i

scanf("%d",&a[i]);

printf("********sort course********\n");

for(i=1;i

{

count++;

for(j=1;j

if(a[j]>a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

printf("%3d:",count); for(j=1;j

printf(" %d",a[j]);

printf("\n");

}

printf("the result is:\n");

for(i=1;i

printf("%d",a[i]); }

(4)#include "stdio.()

{

int f[N],i;

f[0]=1;

f[1]=1;

for(i=2;i

f[i]=f[i-1]+f[i-2];

printf("\nFibonacci\n"); for(i=0;i

{

if(i%4==0) printf("\n\n");

printf("f[%-2d]=%-5d ",i,f[i]);

}

}

该程序的运行结果为 。

(5)#include "stdio.()

{

int i,j, temp;

int a[3][3]={{ },{},{}};

printf("---matrix a---\n");

for(i=0;i

{

for(j=0;j

printf("%3d",a[i][j]);

printf("\n\n");

}

for(i=0;i

for(j=0;j

{ temp=a[i][j];

a[i][j]=a[j][i];

a[j][i]=temp;

}

printf("---matrix a changed---\n");

for(i=0;i

{

for(j=0;j

printf("\n\n");

}

}

该程序的输出结果是 。

(6)#include "stdio.()

{ char s[40];

int i;

printf("input string:");

for(i=0;(s[i]=getchar())!='\n';i++);

s[i]='\0'; printf("\noutput string:");

for(i=0;s[i]!='\0';i++)

{ if(s[i]>='a'&&s[i]

s[i]=s[i]-32;

else if(s[i]>='A'&&s[i]

s[i]=s[i]+32;

printf("%c",s[i]);

}

}

2、编程序并上机调试运行(包括题目及要求、流程图、程序清单、测试数据及结果)

(1)编写一个3*4矩阵,找出每行中最大元素并与第一列元素交换。具体要求如下:

(a )使用二维数组存放该3*4矩阵;

(b )定义并初始化该二维数组;

(c )输出原矩阵和变换后的矩阵进行比较;

(d )有必要的提示信息。

见下页

(2)编程实现如下功能:将字符数组str1中的全部字符拷贝到字符数组str2中,具体要求如下:

(a )不能使用字符串拷贝函数strcpy();

(b )必须将str1中的字符串结束标志‘\0’一起拷贝,但其后的字符不拷贝;

(c )str1的长度不超过80,str2的长度必须足够大;

(d )有必要的提示信息。。

(3)设某班共有10名学生,为了平定某门课程的奖学金,按照规定超过全班平均成绩10%者发给一等奖,超过全班平均成绩5%者发给二等奖。编写程序,输出学生学号、成绩和奖学金等级。

见下页 主函数中调用代码:

五、程序调试记录

(1)调试下面程序。

#define N 10

main()

{ int i,num,data[]={56,70};

* num存放被查找的整数, 数组data 存放有序数列*

int low=0,");

scanf("%d",&num); *输入要查找的整数*

printf("the sorted numbers are:\n");

for(i=1;i

printf("%d ",data[i]); *输出有序数列*

while(low

*若low 大于high, 则查找失败*

}

程序中包含有一些错误,按下述步骤进行调试。

程序调试记录 1、程序出现的错误及改正

1. 用{}把十四十五行括起来

2. 第十行i=1改成i=0;

2、程序的改进

1. 把七八九三行与十十一两行换一下位置,方便用户操作;

实验

一、实验学时 5 深入模块化设计与应用

完成本实验需4学时。

二、实验目的

1、阅读程序题

(1)学会使用函数嵌套调用的使用方法

(2)学会使用一维数组做为函数参数

(3)递归调用的设计与使用

(4)学会使用指针做为函数的参数

2、编程题

(1)如何运用指针进行程序设计

(2)如何以一维数组、二维数组做为函数参数进行程序设计

(3)冒泡排序、选择排序的灵活应用

三、实验指导

为了达到最佳的实验效果,以下提供几条适于模块化编程的指导意见,可供参考。

1、阅读程序题应先运用自己在课堂所学的知识,推导出结果,在上机时输入计算机,印证自己推导的结果,注意观察函数嵌套调用、一维数组做为函数参数、指针做为函数的参数、递归调用的使用方法。

2、编程题必须首先画出流程图,并反复思考判断程序设计的正确性,以面向过程的、模块化设计方法完成程序设计。要注意变量设置、函数参数及返回值在数据传递或共享中的重要作用。

四、实验内容

1、阅读程序题

(1)int func(int a, int b)

{ return (a+b);}

void main()

{ int x=2,y=5,z=8,r;

r=func(func(x,y),z);

printf(“%d\n”,r);

}

(2)int f(int b[], int n)

{ int i,r;

r=1;

for(i=0;i

return r;

}

void main()

{ int x,a[]={8,9};

x=f(a,3);

printf(“%d\n”,x);

}

(3) long fib(int n)

{ if(n>2) return(fib(n-1)+fib(n-2));

else return(2);

}

void main()

{ printf(“%d\n”,fib(3));}

(4)int f(char *s)

{ int k=0;

while(*s) k=k*10+*s++-‘0’;

return(k);

}

以f(“1234”)

(5)void sort(int *b,int n) { int i,j,k,t; for(i=0;i


相关内容

  • 教育研究方法
  • 学前教育研究方法 填空题 1.按研究方法分,课题主要可分为调查研究课题.().理论研究(思辨)课题.()及典型的个案研究等几种 标准答案:实验研究课题 行动研究课题 2.根据文献资料的性质.内容的加工方式及用途的不同,文献分为().二级文献和三级文献 标准答案:一级文献 3."幼儿探索型主 ...

  • 西交[护理学研究]在线作业15秋100分答案
  • 西交<护理学研究>在线作业15秋100分答案 一.单选题(共 40 道试题,共 80 分.) 1. 英文题一般不能超过的英文实词个数是() . A. 10 B. l5 C. 20 D. 25 正确答案:A 2. 某研究调查了本科和专科护生在实习期间的技术操作成绩(成绩分优秀.良好.中等. ...

  • 社会调查研究与方法形成性考核册答案
  • <社会调查研究与方法> 2.探索性研究的任务是什么?应该如何进行? 答:探索性研究的任务主要有: 第一, 确定社会调查研究的课题: 第二, 明确社会调查研究的目的: 第三, 明确社会调查研究的对象: 第四, 明确社会调查研究的内容和范围: 第五, 确定社会调查研究的观点: 第六, 确定社 ...

  • 10-11-2c实验报告(答案)
  • <C程序设计> 实验报告 学 期:2010--2011学年第二学期 教师姓名: 教研室: 实验1 熟悉C语言程序的运行环境,掌握数据描述 1.1 实验目的 1.了解在开发环境中如何编辑.编译.连接和运行一个C语言程序. 2.通过运行简单的 C语言程序,初步了解C语言程序的结构特点. 3. ...

  • 多媒体语言的构成分析
  • 学习资源 文章编号:1006-9860(2007)05-0060-04 总第244期中国电化教育2007.5 多媒体语言的构成分析 王润兰1,刘成锁2,黄嘉丰2 (1.河北师范大学信息技术学院,河北石家庄050016:2.河北师范大学新闻传播学院,河北石家庄050091) 摘要:伴随着多媒体技术的发 ...

  • 7猜数字游戏课程设计完整版
  • 北京邮电大学世纪学院 实验.实习.课程设计报告撰写格式与要求 (试行) 一.实验报告格式要求 1.有实验教学手册,按手册要求填写,若无则采用统一实验报告封面. 2.报告一律用钢笔书写或打印,打印要求用A4纸:页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米:行间距取固定值(设置值为2 ...

  • 应用语言学中_研究_的界定及分类
  • 2009年3月第13卷第2期 扬州大学学报(人文社会科学版) Journal of Y angzhou University (Humanities &S ocial Sciences ) Mar. 2009V ol 113N o 12 应用语言学中"研究"的界定及分类 ...

  • 社会调查研究与方法作业答案
  • 社会调查研究与方法作业1 一.填空题: 1.资料收集整理 分析研究 2.自然环境 文化 3.全面调查 非全面调查 4.因果关系 相关关系 5.完整性 互斥性 二.选择题: (一).单选题: 1.D 2.B 3.A 4.D 5.C (二).多选题: 1.ACE 2.ABCDE 3.AE 4.BCD 5 ...

  • 学术规范测试
  • 一.单项选择题 每题2分,只有一个正确答案,正确作答得2分,错选不得分. 1. 学术成果是指人们通过科学研究活动,如实验观察.调查研究.综合分析.研制开发.生产考核等一系列脑力和体力劳动所取得的,并经过同行专家审评或鉴定,或在公开的学术刊物上发表,确认具有一定的()的创新性结果. A.学术意义或实用 ...