C Primer Plus 第9章 函数 编程练习
复习题:
8.
int choice(int a,int b,int c){
int max;
max = a;
if (b > max)
max = b;
if (c > max)
max = c;
return max;
}
9.
#include <stdio.h>
void menu(void);
int choice(int low,int high);
int main(void){
menu();
int ch = choice(1,4);
switch (ch){
case 1:printf("you choice is : copy files\n");
break;
case 2:printf("you choice is : move files\n");
break;
case 3:printf("you choice is : remove files\n");
break;
case 4:break;
}
printf("Bye~");
return 0;
}
void menu(void){
printf("Please choose one of the following:\n");
printf("1) copy files 2) move files\n");
printf("3) remove files 4) quit\n");
printf("Enter the number of your choice:");
return;
}
int choice(int low,int high){
int ch;
if (scanf("%d", &ch) != 1)
return 4;
while (ch > high || ch < low){
menu();
ch = choice(1,4);
}
return ch;
}
编程练习:
1.
#include <stdio.h>
double min(double a, double b);
int main(void){
double x = 1.0;
double y = 2.0;
double c;
c = min(1,2);
printf("%.2f", c);
}
double min(double a, double b){
return ( b < a ? b : a);
}
2.
#include <stdio.h>
void chline(char ch, int i, int j);
int main(void){
char ch = '*';
int row = 5, col = 10;
chline(ch,row,col);
return 0;
}
void chline(char ch, int i, int j){
for (int x = 0; x < i; ++x) {
for (int y = 0; y < j; ++y) {
putchar(ch);
}
putchar('\n');
}
}
3.
#include <stdio.h>
void chline(char ch, int i, int j);
char character(void);
int number(void);
int main(void){
char ch;
int row, col;
while ((ch = character()) != 'q'){
printf("Please enter the number of lines to be printed:");
row = number();
printf("Please enter the number of columns to be printed:");
col = number();
chline(ch, row, col);
}
return 0;
}
void chline(char ch, int i, int j){
for (int x = 0; x < i; ++x) {
for (int y = 0; y < j; ++y) {
putchar(ch);
}
putchar('\n');
}
}
char character(void){
char ch;
printf("Please enter the character you need print(q to quit):");
while ((ch = getchar()) == '\n')
continue;
while (getchar() != '\n')
continue;
return ch;
}
int number(void){
int num;
char ch;
while (scanf("%d", &num) != 1){
while ((ch = getchar()) != '\n') //处理错误输出***
putchar(ch);
printf("is not an number.\n");
printf("Please enter an number such as 3,5");
}
if (num <= 0){
printf("Please enter the number than 0:");
while ((ch = getchar()) != '\n') //处理错误输出
putchar(ch);
num = number();
}
return num;
}
4.
#include <stdio.h>
double countdouwn_average(double num1, double num2);
int main(void){
double a = 10, b = 20, c;
c = countdouwn_average(a,b);
printf("%lf",c);
return 0;
}
double countdouwn_average(double num1, double num2){
double countdown1,countdown2,ctd_average;
countdown1 = 1 / num1;
countdown2 = 1 / num2;
ctd_average = 1 / ((countdown1 + countdown2) / 2);
return ctd_average;
}
5.
#include <stdio.h>
void larger_of(double * num1, double * num2);
int main(void){
double a = 10, b = 20;
larger_of(&a,&b);
printf("%.2lf %.2lf", a, b);
return 0;
}
void larger_of(double * num1, double * num2){
double max;
max = *num1 > *num2 ? *num1 : *num2;
*num1 = max;
*num2 = max;
return;
}
6.
#include <stdio.h>
void larger_of(double * num1, double * num2, double * num3);
int main(void){
double a = 60, b = 39, c = 50;
larger_of(&a,&b,&c);
printf("%.2lf %.2lf %.2lf", a, b, c);
return 0;
}
void larger_of(double * num1, double * num2, double * num3){
double max,min,c;
max = * num1;
if (max < *num2)
max = *num2;
if (max < *num3)
max = *num3;
min = * num1;
if (min > *num2)
min = *num2;
if (min > *num3)
min = *num3;
c = *num1 + *num2 + *num3 - min - max;
*num1 = min;
*num2 = c;
*num3 = max;
}
7.
#include <stdio.h>
#include <ctype.h>
int show_location(char ch);
int main(void){
char ch;
printf("Please enter the charaster:");
while ((ch = getchar()) != '\n'){ //ch = getchar()要框起来。
printf("%c,%d\n", ch,show_location(ch));
}
return 0;
}
//用isaplpa 和 toupper我是真不会。看了答案
//发现答案真机智~
int show_location(char ch){
int result;
if (isalpha(ch)){
result = toupper(ch) - 'A' + 1;
} else result = -1;
return result;
}
8.
#include <stdio.h>
double power(double n, double p);
int main(void){
double a = 2,b = 2;
printf("%lf", power(a,b));
return 0;
}
double power(double n, double p){
double pow = 1;
int i;
if (n == 0)
return 0;
if (p == 0)
return 1;
if (p > 0){
for (i = 1;i <= p; i++) {
pow = pow * n;
}
return pow;
}
if (p < 0){
for (i = 1;i <= -p ; i++) {
pow = pow * n;
}
return 1 / pow;
}
}
9.
#include <stdio.h>
double power(double n, double p);
int main(void){
double a = 2,b = -2;
printf("%lf", power(a,b));
return 0;
}
double power(double n, double p){
double pow = 1;
int i;
if (n == 0)
return 0;
if (p == 0)
return 1;
if (p > 0){
for (i = 1;i <= p; i++) {
pow = pow * n;
}
return pow;
}
if (p < 0){
return 1 / power(n, -p);
}
}
10.
#include <stdio.h>
void to_binary(int a, int b);
int main(void){
int a,b;
char ch;
printf("Please enter an integer(q to quit):");
while (scanf("%d", &a) == 1){
printf("Please enter number base (2-10):");
while (scanf("%d", &b) == 1 && b >= 2 && b <= 10){
to_binary(a,b);
putchar('\n');
break;
}
while ((ch = getchar()) != '\n'); //处理错误输入
printf("Please enter an integer(q to quit):");
}
return 0;
}
void to_binary(int a, int b){
int r;
r = a % b;
if (a > b)
to_binary(a / b, b);
printf("%d", r); //暂时不理解putchar('0' + r)是什么意思,所以就先用这个吧。
return;
}
C Primer Plus 第9章 函数 编程练习的更多相关文章
- C++ Primer 5th 第6章 函数
正如第一章所说:C++的函数是一个能够完成一个功能的模块或者说是一段命名了的代码块. 如下图所示,函数可以重载,是一段实现某些功能命名了的代码. 一个完整的函数的构成有四部分: 1.返回类型 2.函数 ...
- C++ primer plus读书笔记——第7章 函数——C++的编程模块
第7章 函数--C++的编程模块 1. 函数的返回类型不能是数组,但可以是其他任何一种类型,甚至可以是结构和对象.有趣的是,C++函数不能直接返回数组,但可以将数组作为结构或对象的组成部分来返回. 2 ...
- C Primer Plus_第6章_循环_编程练习
1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...
- C Primer Plus_第5章_运算符、表达式和语句_编程练习
Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; ...
- C Primer Plus_第四章_字符串和格式化输入输出_编程练习
Practice 1.输入名字和姓氏,以"名字,姓氏"的格式输出打印. #include int main(void) { char name[20]; char family[2 ...
- 《C++ Primer》 第四版 第7章 函数
<C++ Primer> 第四版 第7章 函数 思维导图笔记 超级具体.很具体,图片版,有利于复习查看 http://download.csdn.net/detail/onlyshi/94 ...
- C++ primer plus读书笔记——第8章 函数探幽
第8章 函数探幽 1. 对于内联函数,编译器将使用相应的函数代码替换函数调用,程序无需跳到一个位置执行代码,再调回来.因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存. 2. 要使用内 ...
- <<C++ Primer>> 第 6 章 函数
术语表 第 6 章 函数 二义性调用(ambiguous call): 是一种编译时发生的错误,造成二义性调用的原因时在函数匹配时两个或多个函数提供的匹配一样好,编译器找不到唯一的最佳匹配. 实 ...
- 《深入浅出Node.js》第4章 异步编程
@by Ruth92(转载请注明出处) 第4章 异步编程 Node 能够迅速成功并流行起来的原因: V8 和 异步 I/O 在性能上带来的提升: 前后端 JavaScript 编程风格一致 一.函数式 ...
随机推荐
- Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送
Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...
- Android Widget 开发详解(二) +支持listView滑动的widget
转载请标明出处:http://blog.csdn.net/sk719887916/article/details/47027263 不少开发项目中都会有widget功能,别小瞧了它,他也是androi ...
- android动画介绍之 自定义Animation动画实现qq抖一抖效果
昨天我们介绍了Animation的基本用法.小伙伴们了解的怎么样了?如果还没有了解过Animation的小伙伴可以看看这篇博客 android动画介绍--Animation 实现loading动画效果 ...
- InfiniDB 修改一行的效率?
InfiniDB引擎的DML速度比较慢,无论设置自动提交开关为关闭或开启,插入性能都很糟糕,但更新和删除的效率还可以,并且不支持truncate表操作. 删,改 效率高 插入,效率低(测试,在数据量稍 ...
- Gradle 1.12用户指南翻译——第三十七章. OSGi 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- 安卓笔记--- intent传递自定义类
<span style="font-family: Arial, Helvetica, sans-serif;">eat.setOnClickListener(new ...
- 关于NSKeyedArchiver的编码格式
NSKeyedArchiver在linux的实现默认的格式是二进制: NSArray *ary = @[@"hello",@"world",@"!!! ...
- c程序的编译
linux系统下采用gcc进行编译,而在aix系统下采用xlc 进行编译. 附上aix安装xlc地址:https://www.ibm.com/developerworks/cn/aix/library ...
- db2字段修改
db2表字段修改 1:删除字段非空属性alter table XXX alter column XXX drop not null 2:添加字段非空属性alter table XXX alter co ...
- Java + Selenium + TestNG + Maven
环境准备: 1. Java: Install Java jdk: Version: java 1.8 or aboveConfigure Java Environment Variables:Add ...