C语言程序设计A--实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C
语
言
程
序
设
计
指
导
书
(电类专业使用)
电气与信息工程学院计算机系 2009—12-24
目录
前言 (3)
实验一C语言环境实验 (4)
实验二简单程序设计 (19)
实验三分支结构程序设计 (24)
实验四循环结构程序设计 (29)
实验五函数程序设计 (36)
实验六数组程序设计 (42)
实验七指针程序设计 (49)
实验八结构程序设计 (55)
实验九文件结构程序设计 (60)
实验十综合程序设计 (64)
实验十一综合程序设计 (67)
附录1 C语言程序的上机步骤 (68)
附录2 程序调试的方法 (70)
前言
一、本课程实验教学的地位和作用
《C语言程序设计》课程是一门重要的公共基础课。
其主要任务是使学生掌握C语言的基本概念与结构化程序设计方法等方面的知识。
实验课是本课程重要的教学环节,通过本课程的学习使学生加深对讲授内容的理解,熟悉所用计算机系统的操作方法,学会上机调试程序基本操作,能够运用C语言程序解决本专业某些实际问题,并养成严谨的科学态度和科学的思维方法,从而提高分析和解决问题的能力,为后续课程的学习和在毕业设计时使用计算机解决实际问题打下良好的基础.
二、本课程应讲授的基本实验理论
1、掌握所用VC++6.0系统的基本操作方法,学会独立使用该系统;了解在该系统上如何编辑、编译、连接和运行C程序;
2、掌握结构化程序设计方法。
三、本课程实验教学应达到的能力要求
1、掌握赋值语句的使用方法及各种类型数据的输入输出方法;
2、掌握实现选择和循环的编程方法,学习调试程序;
3、掌握数组的定义、赋值和输入输出方法,掌握字符数组和字符串函数的使用等;
4、掌握定义函数及调用函数的方法;
5、通过实验进一步掌握指针的概念,学会定义和使用指针变量,能正确使用指向数组的指针变量,能正确使用指向字符串的指针变量;
6、掌握结构体类型变量的定义和使用;
7、掌握文件以及文件指针的概念,初步学会文件的操作函数。
四、本课程实验教学目的与要求
学生在实验过程中注意自始至终贯彻课程中所介绍的程序设计风格,养成良好的编程习惯。
应独立完成所布置的上机作业,为保证尽量在统一安排的上机时间内编译运行通过程序,在每次实验前应事先预习,按照要求写好预习报告,编写好程序.课后撰写实验报告.
1、了解所用的计算机系统(包括C编译系统)的性能和使用方法。
2、复习和掌握与本实验有关的教学内容。
3、准备好上机所需的程序,在上机实验时必须完成预习要求中规定的任务,切忌不编程或抄别人的程序去上机。
4、对程序中出现的问题应事先估计,对程序中自己有疑问的地方应先作上记号,以便上机时给予注意。
5、准备好调试程序和运行程序所需的数据。
6、在实验中,学生根据实验指导中的内容进行验证与总结,然后再去完成实验内容中安排的任务。
五、本课程实验教学考核办法
实验课成绩占本课程总成绩的20%.对于没有按照预习要求预习的,视本次实验无效。
对无故缺实验者,本门课程实验成绩以零分计。
实验一 C语言环境实验
【实验目的】
1、熟悉C语言的集成环境,了解菜单的使用方法。
2、通过运行简单的C程序,了解C语言程序的结构.
【实验性质】验证性
【实验要求】
1、认真本实验的实验内容,熟悉VC环境使用过程
2、会使用VC编写最简单的程序
【预习要求】
1、仔细阅读实验内容中关于VC环境使用的步骤
2、有条件的话可以在电脑上按照实验内容实际操作
3、在预习报告中回答问题
【实验内容】
(一)、VC环境介绍
Visual C++是微软公司开发的,面向Windows 编程的C++语言工具。
它不仅支持C++语言的编程,也兼容C 语言的编程。
由于VC++被广泛地用于各种编程,使用面很广,本课程采用Visual C++作为开发环境。
下面介绍如何在VC++下开发、运行C 语言程序.
1、启动VC++
VC++是一个庞大的语言集成工具,经安装后将占用几百兆磁盘空间。
点击“开始”—>“程序”—〉“Microsoft Visual Studio 6。
0”—〉“Microsoft Visual C++ 6.0”,可启动VC++环境,如下图所示.
启动VC++环境
启动VC后,屏幕上将显示如下图所示的窗口。
VC++启动后界面
2、创建工程
在启动VC环境后,需要为C程序创建一个工程,如下图所示,点击“文件”菜单下的“新建”菜单项。
新建C工程1
选择
选择
输入工程的名字
工程所有文件的位置新建工程2
如上图所示,在“工程"一栏中选择“Win32 Console Application”类型,在“工程”
输入框中输入你为工程起的名称,点击“C位置”后面的“…”按钮,显示如下界面.
先选择需要保存在哪个盘
再选择需要保存该盘的哪个文件夹
选择保存位置
在上图中选择需要保存的文件夹的位置,点击“确定”按钮。
显示如下界面。
选择工程类型
在上图中,选择“An empty project”选项,点击“完成"按钮,弹出如下界面。
完成工程新建
点击“确定”按钮,新建一个空工程。
如下图所示。
新建工程后界面
新建完工程后,点击“文件"菜单.如下图所示。
新建C源程序文件1
点击“新建”子菜单,弹出如下图的界面,新建C源程序文件.
选择
选择输入新建C 程序的文件名
新建C 源程序文件2
选择“文件”下的“C++ Source File ”选项,在“文件”输入框中输入C 源程序的文件名(注意需要加.C 表示是C 源程序文件,假如不指定扩展名.C ,VC++会把扩展名定义为。
CPP ,即C++程序。
如果程序没有错误)。
点击“确定”按钮。
进入编辑C 程序界面。
3、编写代码
如下图所示. 代码区,编写程序工程区,查看工程菜单栏,提供功能操作
工具栏,提供快捷操作信息区,提供编译信息,如果编译错误,需要在此查看
VC 版面介绍
在上图所示的代码区中输入需要编写的C程序代码。
如果需要查看已经编写的C程序文件,点击工程区中的“File View”,展开“Source Files”,下面包含的文件即为所创建的C源程序文件,点击可以打开。
选择展开,C1-1.C即为所创建的C程序,双
击可以打开
查看C程序文件
输入程序的代码,如下图。
注释,编写程序时,请养成
给代码注释的好习惯
一行一条语句
代码采用锯齿形式,有利于代码的阅读
定义变量时不要偷懒,需要将变量名做到见名知义
编写C程序文件
在编写代码时请注意养成一些好习惯:
1)行编写一条语句,代码采用锯齿形式,有利于代码的阅读;
2)定义名需要做到见名知义;
3)编写程序时,请养成给代码注释的好习惯,方便代码阅读;
4、编译运行
在代码编写完成后,点击“编译”菜单下的“编译”子菜单,将C程序编译成.Obj文件.如下图所示。
编译C程序
如果编译成功,在信息区中,会出现“0 error(s)”的提示信息,如果编译不成功,则会在在信息区中提示出错信息,如下图所示。
请注意,该程序中,出现了以下错误:
第五行 prinf()语句后少了一个分号”;”
第六行scanf()函数中,没有”符号和“配对
第七行value2写成了value
由于源程序错误,在编译代码时,提示出错信息,共有三个错误
(注意由于编译器不能完全智能化,提示的信息可能和实际错误有些出入)
出错位置信息错误详细信息
编译C程序的错误信息
在编译出错后,请仔细根据错误信息,双击某行出错信息,程序窗口中会指示对应出错位置,根据信息窗口的提示分别予以纠正.
在编译程序时,请注意“工具栏”上的“保存"按钮,将程序保存,以免造成不必要的损失,如果出现VC环境“死了”的情况(程序点击不动),关闭VC环境出现如下图
这时,请按“Ctrl+ALT+Del"键,选择“VC++"点击“结束任务”,将VC强制关闭,重新启动即可,如下图所示。
任务管理器
点击“编译"菜单下的“构建"子菜单,将.Obj文件连接成。
EXE文件.如下图所示。
构建C程序
构建成功后,点击“编译"菜单下的“执行”子菜单,可以运行程序,如下图。
执行C程序
当运行C 程序后,VC++将自动弹出数据输入输出窗口,在其中输入数据,完成程序执行,显示结果,如下图所示。
按任意键将关闭该窗口。
C程序运行界面
对于编译连接执行操作,VC++还提供了一组工具按钮,如图下图所示.
工具栏上的编译、执行按钮
5、关闭程序工作区
当一个程序编译连接后,VC++系统自动产生相应的工作区,以完成程序的运行和调试。
若想执行第二个程序时,必须关闭前一个程序的工作区,然后通过新的编译连接,产
生第二个程序的工作区.否则的话运行的将一直是前一个程序.
“文件”菜单提供关闭程序工作区功能,如下图右,执行“关闭工作区”菜单功能,会弹出询问是否保存的对话框,如下图左。
如果选择“是”,将同时关闭源程序窗口。
关闭工作区
6、程序调试
调试程序是编写代码的一个非常重要的步骤,当程序编译成功,需要查看程序执行过程以及其变量值的情况,需要启动调试。
VC++是一个完全基于Windows 的系统,它的调试过程通过鼠标比较容易进行.
(1)程序执行到中途暂停以便观察阶段性结果:
方法一:使程序执行到光标所在的那一行暂停。
①在需暂停的行上单击鼠标,定位光标;
②如图A-17 所示,分别点击菜单“编译”—“开始调试”—“Run to Cursor",或按【Ctrl】+【F10】,程序将执行到光标所在行会暂停。
如果把光标移动到后面的某个位置,再按【Ctrl】+【F10】,程序将从当前的暂停点继续执行到新的光标位置,第二次暂停。
程序执行到光标所在行暂停
方法二:在需暂停的行上设置断点;
①在需设置断点的行上单击鼠标,定位光标;
②按“编译微型条"中最右面的按钮,如图A—18 所示,或按【F9】.
调试
被设置了断点的行前面会有一个红色圆点标志。
与TC 一样,不管是通过光标位置还是断点设置,其所在的程序行必须是程序执行的必经之路,亦即不应该是分支结构中的语句,因为该语句在程序执行中受到条件判断的限制,有可能因条件的不满足而不被执行。
这时程序将一直执行到结束或下一个断点为止.
(2)设置需观察的结果变量
按照上面的操作,使程序执行到指定位置时暂停,目的是为了查看有关的中间结果.
在如图A—19 中,左下角窗口中系统自动显示了有关变量的值,其中value1 和value2 的值分别是3、4,而变量i、sum 的值是不正确的,因为他们还未被赋值。
图中左侧的箭头表
示当前程序暂停的位置。
如果还想增加观察变量,可在图中右下角的“Name”框中填入相应变量名.
观察结果变量
(3)单步执行
当程序执行到某个位置时发现结果已经不正确了,说明在此之前肯定有错误存在。
如
果能确定一小段程序可能有错,先按上面步骤暂停在该小段程序的头一行,再输入若干个查看变量,然后单步执行,即一次执行一行语句,逐行检查下来,看看到底是哪一行造成
结果出现错误,从而能确定错误的语句并予以纠正。
单步执行按“调试条”中“Step Over”按钮或【F8】,如图A—20 所示。
如果遇到自定义函数调用,想进入函数进行单步执行,可按“Step Into”按钮或【F11】。
当想结束函数的单步执行,可按“Step Out”按钮或【Shift】+【F11】。
对不是函数调用的
语句来说,【F11】与【F8】作用相同。
但一般对系统函数不要使用【F11】。
单步调试
(4) 断点的使用
使用断点也可以使程序暂停。
但一旦设置了断点,不管你是否还需要调试程序,每次执行程序都会在断点上暂停。
因此调试结束后应取消所定义的断点。
方法是先把光标定位在断点所在行,再按“编译微型条”中最右面的按钮或【F9】,该操作是一个开关,按一次是设置,按二次是取消设置。
如果有多个断点想全部取消,可执行“编辑”菜单中的“断点”菜单项,屏幕上会显示“Breakpoints”窗口,如图A—21 所示,窗口下方列出了所有断点,按“Remove All”按钮,将取消所有断点.断点通常用于调试较长的程序,可以避免使用“Run to Cursor"(运行程序到光标处暂停)或【Ctrl】+【F10】功能时,经常要把光标定位到不同的地方。
而对于长度为上百行的程序,要寻找某位置并不太方便。
如果一个程序设置了多个断点,按一次执行键【Ctrl】+【F5】会暂停在第一个断点,再按一次【Ctrl】+【F5】会继续执行到第二个断点暂停,依次执行下去。
取消所有断点
(5)停止调试
使用“Debug”菜单的“Stop Debugging”菜单项,或【Shift】+【F5】键可以结束调试,从而回到正常的运行状态。
上面只介绍了VC++中主要的功能,对于其他的操作可以自己试验或参考有关VC++手册。
(二)、程序练习
1、请将下面程序在VC环境中输入,并运行观察结果
1) #include<stdio。
h〉
void main()
{
printf("我爱学C语言!\n");
printf("告诉你学好C语言的秘笈:\n”);
printf("编程!编程!再编程!\n”);
}
2) #include<stdio。
h〉
void main()
{
int price,weight,value;
price=10;weight=20;
value=price*weight;
printf("价格为%d,重量为%d货物,价值为%d\n”,price,weight,value);
price=5;weight=8;
printf(”价格为%d,重量为%d货物,价值为%d\n",price,weight,value);
value=price*weight;
printf(”价格为%d,重量为%d货物,价值为%d\n”,price,weight,value); }
3) #include<stdio.h〉
void main()
{
float r,s;
FILE *fp;
r=12.4;
s=r*r*3。
14;
fp=fopen(”c:\\data。
txt","w");
fprintf(fp,"半径为%f的圆,其面积为%f",r,s);
printf("计算成功!,具体请看C盘下的data。
txt文件");
fclose(fp);
}
2、依照1-3中函数的写法,编写一程序,求高为5。
4,半径为2.3的圆柱体的体积
【实验报告】
【思考题】
1、使用VC编程时,应先创建的工程是什么类型?
2、如何运行一个C程序?
实验二简单程序设计
【实验目的】
1、掌握scanf、printf函数语句的使用
2、掌握算术表达式和赋值表达式的使用
3、能够编程实现简单的数据处理
【实验性质】验证性
【实验要求】
1、认真阅读本次实验的目的,了解本次实验要求掌握的内容
2、在上机前,需要预习,在程序改错题旁将程序中存在的错误修改过来,将编程题的代
码和流程图写在预习报告中
3、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码,
在VC环境中编写出来
4、在VC中将编写的程序编译、调试,能正确运行结果,各题目的具体要求请看题目下
的要求
5、将正确程序上传FTP服务器
6、争取完成选作题
【实验内容】
1、程序改错
1) 下面程序需要从键盘输入三个数,计算其平均值在屏幕上显示输出。
要求平均值需
要保留两位小数.源代码如下,程序中存在错误,请将其改正写在旁边,并注明为什么错误。
include stdio。
h
Main(){
int x,y,z,float ave; /*定义变量*/
printf(”请输入三个数:\n);/*输入提示*/
scanf(”%d,%d,%d”,x,y,z);/*从键盘输入*/
ave=x+y+z/3;/*计算*/
printf("平均值是:ave=%f",AVE);
}
2、编程题
1)编写程序,在计算机屏幕上显示如下信息。
【要求】
(1)使用printf 函数输出字符 2) 设一个正圆台的上底半径r1,下底半径r2,高h 。
请设计一程序,从键盘输入r1,r2,r3;计算并在显示器上输出该圆台的上底面积s 1,下底面积s 2,圆台的体积V 。
【要求】
(1)r1,r2,h 用scanf 函数输入,且在输入前要有提示;
(2)在输出结果时要有文字说明,每个输出值占一行,且小数点后取2位数字。
【思路点拔】
(1)圆面积计算公式为 s=πr 2。
其中r 为圆半径. (2)圆台体积计算公式为 V=3/)r1r2r2r1(h 22++π
3) 鸡兔同笼,已知鸡兔总头数为h ,总脚数为f ,求鸡兔各有多少只? 【要求】
(1)用scanf 函数输入h 和f ,且在输入前要有提示; (2)在输出结果时要有文字说明。
【思路点拔】
设有x 只鸡,有y 只兔,则有:
求出x 和y 的公式:
从而可以计算出x 和y 。
3 选作题
1)编程求ax 2
+bx+c=0的解
【思路点拔】用求根公式x 1,2=(-b ±√b 2
—4ac)/2a ) 2)编程求y=sin (ax )+ln(a+x). 要求a 和x 从键盘输入 【思路点拔】使用数学函数计算
【预习报告】
【实验报告】
【思考题】
1、变量在程序中有什么作用,如何从键盘中输入多个变量的值
2、用#define定义的常量与变量有什么区别,什么时候应该使用#define定义符号常量
3、程序中有哪几种流程结构,具体在程序中用什么体现
实验三分支结构程序设计
【实验目的】
1、掌握关系表达式和逻辑表达式的使用
2、掌握使用if语句实现分支结构程序设计
3、了解switch语句
【实验性质】验证性
【实验要求】
1、认真阅读本次实验的目的,了解本次实验要求掌握的内容
2、在上机前,需要预习,在程序改错题旁将程序中存在的错误修改过来,将编程题的代
码和流程图写在预习报告中
3、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码,
在VC环境中编写出来
4、在VC中将编写的程序编译、调试,能正确运行结果,各题目的具体要求请看题目下
的要求
5、将正确程序上传FTP服务器
6、争取完成选作题
【实验内容】
1、程序改错
1)下面程序需要从键盘输入一个数,判断其是奇数还是偶数。
源代码如下,程序中存在错误,请将其改正写在旁边,并注明为什么错误.
#include "stdio.h”
main(){
int x;
printf("请输入一个数:/n”);/*提示输入*/
scanf(”%d”,&x);
if(x==2*n); /*判断*/
printf(”x是偶数");
printf(”x是奇数");
}
2、编程题
1)编写一程序,从键盘输入三角形的三条边,如果能构成一个三角形判断其是否是
等腰三角形(等边三角形是等腰三角形的特例);
【要求】
(1)用scanf函数输入三角形的三条边a,b,c,且在输入前要有提示;
(2)使用if语句判断,对每种情况都需要有提示
2)在商场购物时,若所购物品的总价值x(由键盘输入)在某一范围时,付款y按对应折扣支付,即
x x<1000
y= 0.9x 1000≤x<2000
0。
8x 2000≤x〈3000
0。
7x x≥3000
编写一程序,根据x的值计算y
【要求】
(1)用scanf函数输入x(x为小数),且在输入前要有提示;
(2)使用if—else if—else语句判断,计算y的值
(2)使用printf输出y的值,小数点保留2位
3)从键盘输入3个数,输出最大值和最小值
【要求】
(1)用scanf函数输入三个数,且在输入前要有提示;
(2)使用嵌套结构出最大值,然后求出最小值,并使用printf输出
3 选作题
1)编写一程序,从键盘输入一个不多于4位的正整数,能显示出它是几位数,并按正反两种顺序显示出各位数字。
例如,若输入1234,输出为:
位数:n=4
正序:1234
反序:4321
【编程点拨】
(1)先判断x是否为满足要求n大于9999,小于0时,则不满足要求
(2)通过%和/运算分离出各个位上的值,先判断千位是否为零,如果为零,则不可能为四位数,再判断百位上的数是否为零
(3)反序输出时,先输出个位,再十位,百位,千位
2)从终端输入两个实数和一个四则运算符(+、-、*、/),执行相应的运算并输出运算结果.(如输入12+4,结果为48)
【编程点拨】
(1)先用scanf函数,输入四则运算的两个操作数和运算符,分别保存在不同的变量,注意保存运算符的变量只能是字符型
(2)对运算符变量进行判断,根据运算规则,编写相应的表达式求运算结果
【预习报告】
【实验报告】
【思考题】
(1)对于编程题2,如何使用if语句嵌套的方式和switch语句的方式实现(2)对于多分支结构,使用if…else if 还是使用嵌套结构,需要注意什么?(3)编写分支结构时,条件的编写需要注意什么
实验四循环结构程序设计
【实验目的】
1、掌握使用for、while和do…while语句实现循环程序设计
2、理解循环条件、循环体
3、掌握break、continue语句的使用
【实验性质】验证性
【实验要求】
1、认真阅读本次实验的目的,了解本次实验要求掌握的内容
2、在程序改错题旁,将程序中存在的错误修改过来
3、将编程题的代码在预习报告中写出来
4、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码,
在VC环境中编写出来
5、在VC中将编写的程序编译、调试,能正确运行结果
6、将正确程序上传FTP服务器
7、争取完成选作题
【实验内容】
1、程序改错
1) 编写程序,求1!+2!+3!+。
.+10!的和, 源代码如下,程序中存在错误,请
将其改正写在旁边.
#include "stdio。
h"
main(){
int i;
long sum,temp;/*定义变量*/
for(i=1,i〈=10,i++){/*循环*/
temp=temp+i; /*计算i的阶乘*/
sum=sum*temp;/*求和*/
}
printf("1!+2!+3!+。
.。
10!=%d”,sum);
}
2、编程题
1) 编写程序,打印出所有的“abcd=(ab+cd)2”性质的数,例如3025=(30+25)2.
【要求】
(1)打印的数字占8个字符宽,每行显示3个
(2)使用for语句实现
2)有一分数序列:1/2-2/3+3/5-5/8+8/13-13/21。
,求出这个数列的前20项
之和。
【要求】
(1)和需要保留两位小数
(2)使用for语句实现
3)从键盘输入一个数n,打印高度为2*n—1行的菱形,例如:n=4时,打印图形如下:
*
* * *
* * * * *
* * * * * * *
* * * * *
* * *
*
【要求】
(1)打印的高度需要通过键盘输入的n控制
(2)使用for语句实现
3 选作题
1)一个数如恰好等于它的因子之和,这个数就称为“完数".编写一程序找出1000以内的所有完数,并输出其因子(6是一个”完数",它的因子是1,2,3)。
【编程点拨】
(1)使用for循环,遍历1-1000之内的所有数n
(2)在内层循环中,遍历比n的数,判断其是否是n的因子,如果是将其加到累加器。
(3)内层循环结束时,判断累加器中的数是否和n相当,如果是则输出。
2)输入一个字母,输出由这个字母决定其高度的字符“金字塔”。
例如输入小写字母d,则输出左边的图形,如输入大写字母D,则输出右边图形。
A A
B
A A
B
C
B
A A
B
C
D
C
B A a
a
b
a
a
b
c
b
a
a
b
c
d
c
b
a A A B A A B C B A A B C D C B A a a
b a a b
c b a a b c
d c b a
【编程点拨】
(1)首先根据输入的字符判断需要输出的字母是大写还是小写,以及需要输出的行数
(2)在外层循环中控制行数
(3)内层循环控制输出每一行,对每一行可分为两部分:从首字母到该行的最大字母,
从该行最大字母的前一个字母到首字母如第3行是 ABC和BA,分别用两个循环实现。
(4)每一行的最大字母跟行号有关系,请注意其变化规律。
【预习报告】
【实验报告】
【思考题】
1、区分while和do…while的区别,使用do…while改造教材P61页中例4—2程序
2、什么时候使用for语句比较方便
3、break和循环条件有什么联系和区别,什么时候使用break
实验五函数程序设计
【实验目的】
1、掌握函数的定义和调用
2、掌握使用函数编写程序
3、掌握函数参数传递形式和返回值的概念
【实验性质】验证性
【实验要求】
1、认真阅读本次实验的目的,了解本次实验要求掌握的内容
2、在程序改错题旁,将程序中存在的错误修改过来
3、将编程题的代码在预习报告中写出来
4、在实验时,将实验要求的基本题(程序改错和编程题)根据预习报告中编写的代码,
在VC环境中编写出来
5、在VC中将编写的程序编译、调试,能正确运行结果
6、将正确程序上传FTP服务器
7、争取完成选作题
【实验内容】
1、程序改错
1) 下面程序从键盘输入两个数,输出两个数的最大公约数和最小公倍数,源代码如
下,程序中存在错误,请将其改正写在旁边。
#include ”stdio.h"
main(){
int x,y,acd,amd;/*定义变量,acd保存最大公约数,amd保存最小公倍数*/ printf("请输入两个数:/n”);/*提示输入*/
scanf(”%d,%d”,&x,&y);
if(x>y){/*如果x>y,两个值互换,保证第一个参数为小值*/
x=y;
y=x;
}
acd=acd(int m1,int m2);/*调用函数求最大公约数*/
amd=(x*y)/acd;/*求最小公倍数*/
printf("最大公约数=%d,最小公倍数=%d",acd,amc);
}
/**
函数功能:使用辗转相除法求两个数的最大公约数
参数m1:两个数中较小者
参数m2:两个数中较大者
返回值:m1和m2的最大公约数
**/
int acd (int m1,int m2);
{
int r;
while (m1=0){/*使用辗转相除法求最大公约数*/
r=m2%m1;
m1=r ;
m2=m1;
}
return r;/*返回最大公约数*/
}
2、编程题
1) 若正整数A 的所有因子(包括1但不包括自身,下同)之和为B ,而B 的因子之和为A,则称A 和B 为一对亲密数.例如,6的因子之和为1+2+3=6,因此6与6为一对亲密数(即6自身构成一对亲密数);又如,220的因子之和为l+2+4+5+10+11+20+22+44+55+110=284,而284的因子之和为1+2+4+71+142=220,因此,220与284为一对亲密数。
编写程序,求500以内的所有亲密数对.
【要求】
(1)编制facsum(n ) 函数,返回n 的所有因子(包括1但不包括自身)之和。
(2)在main 函数中调用facsum(),寻找并输出500以内的所有亲密数对.
(3)输出要有文字说明。
并且小数在前、大数在后,去掉重复的数对。
(4)采用程序改错题的的编码风格对源代码做注释
2) 计算并输出 !
n )!n m (!m 【要求】
(1)编制一个函数pq (n ),返回n !值。
(2)在main 函数中,从键盘输入m 与n,调用函数pq 计算。
(3)在main 函数中,输入m 与n 之前要有提示,并检查输入数据的合理性(m ≥n ≥O ),对于不合理的输入,应输出出错信息,不再进行计算。
(4)采用程序改错题的的编码风格对源代码做注释
3)使用函数的方法求1000之内的自守数,自守数是指一个数的平方的尾数等于该数自身
的自然数。
例如:252=625 ;762=5776;93762=87909376
(1)编制一个函数isAutomorphic (n),判断n 是否为自守数数,如果是返回1,如果不是返回0.
(2)在main 函数中,使用for 循环,调用函数isAutomorphic 判断n 是否为自守数。
(3) 打印的数字占8个字符宽,每行显示5个自守数。
(4)采用程序改错题的的编码风格对源代码做注释。