C语言程序设计(第3版)何钦铭-颜-晖-第10章--函数与程序结构
C语言程序设计第3版何钦铭-颜-晖--循环结构
第4章循环结构
【练习 4-1】在例 4-1 程序中,如果对 item 赋初值 0,运行结果是什么?为什么?如果将精度改为 10-3,运行结果有变化吗?为什么?
解答:
如果对item赋初值0,则程序运行结果是pi=0,因为item为0时不满足while 循环的执行条件,即不执行循环,故 pi 值为 0。如果将精度改为 10-3,运行结果会有变化,因为精度改变意味着 while 循环的条件改变,精度变大使得while循环次数减少,必然影响到n的值。
【练习 4-2】运行例 4-2程序时,如果将最后一个输入数据改为-2,运行结果有变化吗?如果第一个输入数据是 -1,运行结果是什么?为什么?解答:如果将最后一个输入数据改为-2,运行结果没有变化,因为最后一个负数是一结束标志,不进行统计,故任意一个负数都可以。如果第一个输入数据是-1,运行结果是:Grade averageis 0,因为第一个输入就是-1,则while循环条件不成立,不执行循环体。
【练习4-3】序列求和(1-1/4+1/7-1/10+1/13-1/16+…):输入一个正实数eps, 计算序列1-1/4+1/7-1/10+1/13-1/16+…的值,精确到最后一项的绝对值小于eps (保留6位小数)。试编写相应程序。
解答:
#include <stdio.h>
#include <math.h>
int main(void)
{
int denominator, flag;
double item, s,eps;
printf(“Input eps:”);
C语言程序设计(第三版)何钦铭-颜晖主编-知识点清单
C语言知识点清单(杭电姚晔整理)
第1章基本数据类型和表达式
1.1 关键字和标识符
标识符(p8)
1.2 基本数据类型
常用数据类型(p21,p122),字符型数据(p50,p123),原码反码补码(p120),实型数据的存储(p121)
1.3 常量和变量
常量和变量的定义(p21),整型字符型实型常量与变量(p123)
1.4 输入和输出函数
printf(p23),scanf(p27),字符型数据的输入和输出(scanf/printf/getchar/putchar/p51/p128),整型数的输入输出(scanf/printf格式控制p125),实型数的输入输出(scanf/printf格式控制p127) 1.5 常用库函数
常用数学函数(p28)
1.6 运算符和表达式
算术运算(p22),赋值运算(p23),关系运算(p25),逻辑运算(p52),位运算(p140),长度运算符(p142),算术表达式(p131),赋值表达式(p133),关系表达式(p134),逻辑表达式(p136),条件表达式(p139),逗号表达式(p139),运算符的优先级与结合性(p142),复合语句(P33),自动类型转换(p130),强制类型转换(p130)
第2章控制结构与语句
2.1 结构化程序设计
数据表达(p5),流程控制(p6),主要语法单位(p9),C语言的特点(p12)
2.2 顺序结构
顺序控制结构(p6)
2.3 选择结构
if-else语句(p26,p45),多分支else-if语句(p47,p60),switch语句(p57)
C语言程序设计(第3版)(2018年电子工业出版社出版的图书
作者简介
作者简介
蒋彦,男,济南大学计算机系主任、副教授,致力于计算机基础、专业、竞赛课程的教学、教研和科研工 作。
韩玫瑰,1973年生,女,山东济南Leabharlann Baidu,博士,济南大学信息科学与工程学院讲师。
谢谢观看
教材目录
(注:目录排版顺序为从左列至右列 )
教学资源
教学资源
该教材有配套教材——《C语言程序设计实验教程(第3版)》。 该教材提供课程网站、电子课件、习题答案及程序源代码。
教材特色
教材特色
该教材是国家精品课程教材,以任务驱动的方式,通过实例讲授程序设计的基本概念和基本方法,把重点放 在解题思路上,试图贯穿以程序编写带动语法教学的模式,引导读者掌握C语言的核心编程方法,提高应用能 力。
C语言程序设计(第3版) (2018年电子工业出版社出版
的图书
2018年电子工业出版社出版的图书
01 成书过程
03 教材目录 05 教材特色
目录
02 内容简介 04 教学资源 06 作者简介
基本信息
《C语言程序设计(第3版)》是由蒋彦、韩玫瑰主编,2018年3月电子工业出版社出版的国家精品课程教材、 国家级精品资源共享课教材、研究型教学模式系列教材。该教材可作为高等学校本科生教材,也可作为专科和高 职高专教材及计算机等级考试的参考书,还可供相关领域的工程技术人员学习参考。
c语言程序设计实验与习题指导颜晖答案
c语言程序设计实验与习题指导颜晖答
案
【篇一:c语言程序设计谭浩强版何钦铭颜晖版习题答
案全集】
【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数
字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组
成所有的排列后再去
掉不满足条件的排列。
2.程序源代码:
main()
{
int i,j,k;
printf(\n);
for(i=1;i5;i++) /*以下为三重循环*/
for(j=1;j5;j++)
for (k=1;k5;k++)
{
if (i!=ki!=jj!=k) /*确保i、j、k三位互不相同*/
printf(%d,%d,%d\n,i,j,k);
}
}
【程序2】
题目:企业发放的奖金根据利润提成。利润(i)低于或等于10万元时,奖金可提10%;利润高
于10万元,低于20万元时,低于10万元的部分按10%提成,高
于10万元的部分,可可提成7.5%;20万到40万之间时,高于
20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提
成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键
盘输入当月利润i,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义
成长整型。
2.程序源代码:
main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf(%ld,i);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
C语言程序设计(何钦铭_颜晖_主编)课件
……
32767 的补码 0 111 1111 1111 1111
(215-1,2个字节的存储单元能表示的最大正数)
负数的原码、反码和补码不同
-1 原码 1 000 0000 0000 0001 反码 1 111 1111 1111 1110 原码取反 补码 1 111 1111 1111 1111 反码+1
a
20
123 = 01111011 (B) 二进制 整数的表示
=173 (O) 八进制 =7B (X) 十六进制 123 0173 0x7b 16 020 0x10 10 012 0XA 10 010 0x10
不能超出整型数据的取值范围
比长整型数还要大的数只能用实数来表示
a
21
整数的类型
判断整数的类型 整数后的字母后缀
a
27
变量名:合法的标识符
变量的定义
小写字母;见名知义
变量的类型:在定义时指定
变量定义的一般形式
类型名 变量名表;
int celsius, fahr;
float x;
double area, length;
变量名代表内存中的一个存储单元,存放该变量的值 该存储单元的大小由变量的数据类型决定
4字节 七/八位
取值范围 ±(10-38 ~ 1038)
double 8字节 十六位 ±(10308 ~ 10308 )
C语言程序设计 (何钦铭 颜晖 著) 高等教育出版社第三章 课后答案
printf("Please input score #%d(0~100): ",i);
scanf("%f",&score);
if(score<60)nume++;
else if(score<70)numd++;
else if(score<80)numc++;
else if(score<90)numb++;
void main()
{
double x,y;
printf("Please input x: ");
scanf("%lf",&x);
if(x>15)y=2.5*x-10.5;
else
if(x<0)y=0;
else y=4*x/3;
printf("y=f(%lf)=%lf\n",x,y);
}
习题3-1
case 4:price=10.2;break;
default: price=0.0;break;
}
printf("The price is %.1f.\n",price);
}
}
c语言程序设计 谭浩强版 何钦铭颜晖版习题答案全集
c语言程序设计谭浩强版何钦铭颜晖版习题答案全集
【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去
掉不满足条件的排列。
2.程序源代码:
main()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++)/*以下为三重循环*/
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k) /*确保i、j、k三位互不相同*/
printf("%d,%d,%d\n",i,j,k);
}
}
【程序2】
题目:企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提
成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?
1.程序分析:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
2.程序源代码:
main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
《C语言程序设计(何钦铭颜晖主编)》习题8答案
P173习题8 第一题
#include<stdio.h>
int main(void)
{
char ch;
int a[10];
int i,j,m;
printf("请输入10个整数:\n");
for(i=0;i<10;i++){
printf("请输入%d第个数:",i+1);
scanf("%d",&a[i]);
}
printf("请输入A或D:");
scanf(" %c",&ch);
if(ch=='A'){
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
if(a[i]>a[j]){
m=a[i];
a[i]=a[j];
a[j]=m;
}
}
}
}
else if(ch=='D'){
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
if(a[i]<a[j]){
m=a[i];
a[i]=a[j];
a[j]=m;
}
}
}
}
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
return 0;
}
第二题
#include<stdio.h>
int main(void)
{
int a[10];
int i,j,x;
int search(int list[],int i,int x);
printf("输入10个整数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("输入一个整数x:");
scanf("%d",&x);
j=0;
for(i=0;i<10;i++){
辽宁师范大学2024年硕士研究生招生考试参考大纲 827 C语言程序设计
《C语言程序设计》(827)考试大纲
注意:本大纲为参考性考试大纲,是考生需要掌握的基本内容。主要考察知识点:
1.C语言概述
(1)了解程序设计语言的语法
(2)掌握C语言的特点
(3)掌握问题求解的过程
2.数据描述
(1)了解C语言的数据类型
(2)掌握常量的定义、表示方法
(3)掌握变量的定义、初始化、使用方法
(4)了解数据的类型转换
(5)掌握常用运算符及表达式
(6)了解数据的输入输出及在C语言中的实现
(7)掌握格式化输出函数printf( )和格式化输入函数scanf( )
3.分支结构
(1)了解分支结构
(2)全面掌握关系表达式运算、逻辑表达式和条件表达式
(3)全面掌握if语句
(4)全面掌握switch语句
(5)掌握嵌套分支结构
4.循环结构
(1)了解循环结构
(2)全面掌握while语句
(3)全面掌握do-while语句
(4)全面掌握for语句
(5)掌握break和continue语句
(6)掌握嵌套循环结构
5.函数
(1)了解函数的概念
(2)掌握函数定义的一般形式
(3)掌握函数的调用
(4)掌握函数的嵌套调用和递归调用
(5)掌握局部变量和全局变量的定义、使用方法
(6)掌握变量生存周期和静态局部变量
(7)掌握编译预处理
6.数组
(1)掌握一维数组的定义、初始化和使用方法
(2)掌握二维数组的定义、初始化和使用方法
(3)掌握字符数组的定义、初始化和使用方法
(4)全面掌握排序、查找等程序设计方法
7.指针
(1)了解指针的概念
(2)掌握指针变量的定义、初始化和使用方法
(3)掌握指针作为函数参数
(4)掌握使用字符串指针变量和字符数组
C语言程序设计 教学大纲
C语言程序设计教学大纲
C语言有许多独特的地方。从1970年代诞生起,它的历史使命就是编写系统程序,它被设计成非常贴近底层、贴近硬件。它的很多独特的设计都是为了能够准确地反映硬件操作。但是历史又和C语言开了一个玩笑,它被当作了第一个通用型语言,曾经广泛地用于各种场合,解决各种问题。它有哪些神秘之处呢?
课程概述
课程以一个Windows下的图形游戏程序入手,借助一个C语言图形库,展开全部的教学内容。
作为计算机的基础语言,C语言有许多独特的地方。从1970年代诞生起,它的历史使命就是编写系统程序,它被设计成非常贴近底层、贴近硬件。它的很多独特的设计都是为了能够准确地反映硬件操作。但是历史又和C语言开了一个玩笑,它被当作了第一个通用型语言,曾经广泛地用于各种场合,解决各种问题。可是它之后的语言,再也没有像它那样贴近硬件,它们拿掉了那些硬件相关的东西,变得越来越远离底层了。
这门课,就是要告诉你C语言到底有哪些独特的地方,为什么能长期占据15%上下的编程语言份额。它是在前序课程——《程序设计入门-C语言》或《程序设计入门-Java语言》的基础上,让你完全掌握C语言本身的课程。
课程大纲
第1周:指针与字符串
1 指针的使用
2 指针运算
3 字符串操作
4 字符串函数的实现
第1周编程题
第2周:ACLLib的基本图形函数
ACLLib入门
第3周:结构类型
1 枚举
2 结构
3 联合
第4周:链表
1 可变数组
2 链表
第4周编程练习
第5周:程序结构
1 全局变量
2 编译预处理和宏
3 大程序结构
第6周:交互图形设计
1 图形程序的终端输入输出
C语言程序设计何钦铭颜晖第7章数组
C语言程序设计何钦铭颜晖第7章数组《C语言程序设计(第3版)》是由何钦铭和颜晖共同编写的一本C
语言教材,主要介绍了C语言的基础知识和编程方法。其中第7章是关于
数组的内容,涵盖了数组的定义、初始化、访问元素以及数组的运算等方面。本文将从以下几个方面对本章进行详细介绍。
首先,第7章首先介绍了数组的概念和定义。数组是一组有序的、相
同类型的数据元素的集合,通过下标来唯一标识数组中的每个元素。章节
中详细介绍了数组的声明和初始化方式,包括静态数组和动态数组的定义。
其次,本章还讲解了数组元素的访问和操作。可以通过数组的下标来
访问数组中的元素,数组的下标从0开始,依次递增。章节通过实例演示
了如何通过循环遍历数组和输入输出函数来操作数组中的元素。同时,还
介绍了数组的一些特殊运算,比如数组的拷贝和交换等操作。
接着,本章进一步讨论了多维数组的概念和使用方法。多维数组是一
种特殊的数组类型,每个元素还可以拥有多个子元素。本章通过示例介绍
了多维数组的定义和初始化方式,并且详细演示了如何通过嵌套循环来遍
历多维数组。
此外,本章还介绍了C语言中常用的数组函数和头文件。通过引入相
关的头文件和函数,可以方便地进行数组的操作和处理。例如,
<stdlib.h>头文件中的rand(函数可以用来生成随机数,<string.h>头文
件中的strcpy(函数可以用来拷贝字符串等。
最后,本章还提供了一些数组的应用实例,包括数组的排序、查找和
统计。通过这些实例,读者可以更好地理解如何运用数组来解决实际问题。
总的来说,第7章《数组》是《C语言程序设计(第3版)》中的一章,主要介绍了数组的概念、定义、访问和操作,以及多维数组和数组函数的使用方法。通过本章的学习,读者可以全面掌握C语言中数组的知识和应用技巧,为后续的编程学习和实践奠定良好基础。
C程序设计教程(第3版)
教材目录
(注:目录排版顺序为从左列至右列 )
教学资源
该教材有配套教材——《C程序设计教程(第3版)学习辅导》,书中提供主教材中各章习题的参考答案以及 上机实践指导。
教材特色
该教材适当减少内容,突出重点,符合最基本的要求,适合学时相对较少的高校使用。该教材为普通高等教 育国家级规划教材,推荐给各校使用。
通过该教材的学习,可以基本掌握C语言的主要内容和使用方法,同时学习程序设计的方法及有关算法的基本 知识,初步掌握用计算机解题的全过程。重新构建教材体系,进一步压缩内容,突出重点,加强算法训练,更加 实用。用通俗易懂的方法和语言阐明复杂的概念。同时采取适当的方法,注意培养包括计算思维在内的科学思 维。
全书共9章,主要内容包括程序设计和C语言,最简单的C程序设计——顺序程序设计,选择结构程序设计, 循环结构程序设计等。
成书过程
修订情况
Fra Baidu bibliotek
出版工作
该教材根据中国国内一般大学非计算机专业的教学需要,作者在《C程序设计(第五版)》一书的基础上重新 改写并出版了《C程序设计教程(第3版)》。
该教材由谭浩强著,南京大学金莹副教授、薜淑斌高级工程师和谭亦峰工程师参加了该教材的策划、调研、 收集资料、研讨以及编写部分程序的工作。
C程序设计教程(第3版)
2018年清华大学出版社出版的图书
C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 全部课后习题答案
3. /*输入一个学生的数学成绩,低于 60,输出“Fail” ,否则,输出“Pass” 。*/ #include<stdio.h> void main() { double mark; //输入数序成绩 printf(" Input a mark:\n"); scanf("%lf", &mark);
5. /*输入 4 个整数 n, 输出最小值。*/ #include<stdio.h> void main() { int a,b,c,d, min; //输入 4 整数 printf(" Input number of integers n:\n"); scanf("%d%d%d%d", &a,&b,&c,&d);
//寻找 4 整数的最小者,放入 min min =a; if( b>min ) min=b; if( c>min ) min=c; if( d>min ) min=d; printf("min=%d \n",min); } --思考:如何用数组实现该题?--
6. /*输入一个职工的月薪 salary,输出个人应缴所得税 tax*/ tax= rate*(salary-850)/100;而
习题参考答案 习题三
1. /*输入 15 个字符,分别统计其中字母、回车符、数字和其他字符的个数*/ 分析——两种思路: (1)用单层循环实现:先输入 1 个字符、然后判断并统计字符个数,共循环 15 次;每次输 入的字符均放在同一个字符型变量中。 (2)用一维数组实现:定义一个长度为 15 的字符数组、输入 15 个字符分别存放在数组各元素中、对数组中的 各要素做分类统计。 源程序 1: #include<stdio.h> void main() { int k, alpha=0, enter=0, digit=0, other=0; //alpha:字母, enter: 回车, digit: 数字 , other:其他字符 char ch; for(k=1; k<=15; k++){//循环 15 次 ch=getchar(); if(ch>=’A’&&ch<=’Z’ || ch>=’a’&&ch<=’z’) else if(ch==’\n’) enter++; else if(ch>=’0’ &&ch<=’9’) digit++; else other++; }
C语言程序设计 (何钦铭 颜晖 著) 浙江科学技术出版社 习题10 课后答案
#include<stdio.h> void main() { int a[10], i; printf(“Input 10 integers:”); for( i=0; i<10; i++) scanf(“%d”, &a[i]); sort(a,10); printf(“After sorted:”); for(i=0; i<10; i++) printf(“%d “, a[i]); putchar(‘\n’); } 6. 编写程序:输入 5 个字符,输出其中最长的字符串 void sort( int a[], int n) //a 数组名,n 数组长度 #include<stdio.h> #include<string.h> void main() { int i, len, max_len; char s[80], max_s[80]; printf(“Input 5 strings:”); gets( max_s); //输入第 1 个字符串,暂作最长字符串 max_len= strlen(max_s); for( i=1; i<5; i++) { //输入剩余的 4 个字符串,并与当前的最长字符串做比较 gets( s ); len= strlen( s); if ( len > max_len ){ strcpy( max_s, s); //注意:不能写成 max_s =s; max_len= len; } } printf(“The max_s is:”); puts( max_s ); } 7. /*编写函数 delchar(s,c). 删除字符串 s 中出现的所有 c 字符。请同时编写主函数*/ 实例:s=”welcome!” c=’e’ s 初始值 w w i 删 1 次后 删 2 次后 w w e e l l l l c c c c o o o o m i m ! i \0 m m e e e ! ! ! \0 \0 \0
c语言程序设计(第3版)的习题答案
c语言程序设计(第3版)的习题答案c语言程序设计(第3版)的习题答案
本文为《c语言程序设计(第3版)》中的习题答案汇总,旨在帮助读者更好地理解和掌握该教材。以下是各章节习题的详细解答:第1章:计算机概述
习题1:
答案:计算机是一种能够接受输入数据、对其进行逻辑和算术运算,并产生输出结果的电子设备。
习题2:
答案:计算机主要由中央处理器(CPU)、主存储器、输入设备和输
出设备四个主要部分组成。
......
第2章:c语言概述
习题1:
答案:C语言是一种通用的高级编程语言,由贝尔实验室的Dennis Ritchie于1972年开发。
习题2:
答案:C语言的特点包括高效性、可移植性、灵活性和丰富的操作
符与控制语句。
......
第3章:数据类型、运算符和表达式
习题1:
答案:C语言中的基本数据类型包括int、float、double、char等。
习题2:
答案:C语言中的运算符包括算术运算符、关系运算符、逻辑运算符等。
......
第4章:程序控制结构
习题1:
答案:C语言中的程序控制结构主要包括顺序结构、选择结构和循环结构。
习题2:
答案:顺序结构是指程序按照语句的顺序依次执行,没有分支和循环。
......
第5章:函数
习题1:
答案:C语言中的函数由函数头和函数体组成。
习题2:
答案:函数的定义包括函数名、返回类型、参数列表和函数体。......
第6章:数组和字符串
习题1:
答案:数组是一组相同类型的数据元素的集合。
习题2:
答案:C语言中的字符串是以空字符'\0'结尾的字符数组。......
第7章:指针
习题1:
答案:指针是用来存储另一个变量的地址的变量。
C语言程序设计第版何钦铭颜晖函数
第5章函数
练习5-1使用函数求1到n之和:输入一个正整数 n,输出1~n之和.要求自定义和调用函数sum(n)求 1~n 之和.若要计算 m~n(m<n)之和,又该如何定义函数试编写相应程序.
解答:
include <stdio.h>
int sum(int n);
int main(void)
{
int n;
int sum;
printf("Enter n:")
scanf("%d", &n);
printf("sum = %d\n", sum(n));
return 0;
}
int sum(int n)
{
int result, i;
result = 0;
for(i = 1; i <= n; i++)
result = result + i;
return result;
}
若要计算 m~n(m<n)之和,则需要在 main()中定义 2 个变量 m 和 n: scanf("%d%d", &m, &n);
printf("sum = %d\n", sum(m, n));
同时在函数定义时需设置 2 个形参:
int sum(int m, int n)
{
int result, i;
result = 0;
for(i = m; i <= n; i++)
result = result + i;
return result;
}
练习5-2使用函数找最大值:输入2个数,输出其中较大(de)数.要求定义和调用函数 max(a, b)找出并返回 a、b 中较大(de)数.试编写相应程序.
解答:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第10章函数与程序结构
【练习10-1】使用递归函数计算1到n之和:若要用递归函数计算sum=1+2+3+…+n(n为正整数),请写出该递归函数的递归式子及递归出口。试编写相应程序。
解答:
递归式子: sum(i) = sum(i-1) + i;
递归出口: sum(i) = 0;
【练习10-2】请完成下列宏定义:
① MIN(a,b) 求 a,b 的最小值
② ISLOWER(c) 判断 c 是否为小写字母
③ ISLEAP(y) 判断 y 是否为闰年
④ CIRFER(r) 计算半径为 r 的圆周长
解答:
① MIN(a, b):求a,b的最小值。
#define MIN(a,b) (a
② ISLOWER(c):判断c是否为小写字母。
#define ISLOWER(c) (c>='a'&&c<='z')
③ ISLEAP(y):判断y是否为闰年。
#define ISLEAP(y) (y%4==0&&y%100!=0)||y%400==0)
④ CIRFER(r):计算半径为r的圆周长。
#define PI 3.14159
#define CIRFER(r) 2*PI*(r)
【练习10-3】分别用函数和带参宏实现从 3 个数中找出最大数,请比较两者在形式上和使用上的区别。
解答:
(1)函数实现
int max(int x,int y,int z)
{
int t;
if(x>=y)
if(x>=z) t=x;
else t=z;
else
if(y>=z) t=y;
else t=z;
return t;
}
(2)宏实现
#define MAX( x, y, z ) x>=y? (x>=z? x:z) : (y>=z? y:z)两者在定义形
式上完全不同。使用上函数是在执行时,从主调函数转到函数 max(),然后再返
回到主调函数,函数体始终存在;而宏是在编译预处理时,用条件表达式去替换
MAX(int x, int y, int z ),等程序执行时,执行的是条件表达式,而不再存
在 MAX(int x, int y,int z )的式子。
习题10
一、选择题
1.要调用数学函数时,在#include 命令行中应包含 C 。
A.”stdio.h” B.”string.h” C.”math.h”
D.”ctype.h”
2.对于以下递归函数 f,调用 f(4),其返回值为 A 。
int f(int n)
{ if (n) return f(n - 1) + n;
else return n;
}
A.10 B.4 C.0 D.以上均不是
3.执行下列程序:
#define MA(x, y) ( x*y )
i = 5;
i = MA(i, i + 1) – 7;
后变量 i 的值应为 B 。
A.30 B.19 C.23 D.1
4.宏定义“#define DIV(a, b) a/b”,经 DIV(x + 5, y - 5) 引用,替换展
开后是 A 。
A.x + 5 / y - 5 B.(x + 5 / y – 5)
C.(x + 5) / (y - 5) D.(x + 5) / (y - 5);
5.定义带参数的宏“#define JH(a,b,t) t = a; a = b; b = t”,对两个参数
a、b 的值进行交换,下
列表述中哪个是正确的 C 。
A.不定义参数a和b将导致编译错误 B.不定义参数a、b、t将导致编译错误
C.不定义参数 t 将导致运行错误 D.不需要定义参数 a、b、t 类型
6.执行下面程序,正确的输出是 A 。