复习题:

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章 函数 编程练习的更多相关文章

  1. C++ Primer 5th 第6章 函数

    正如第一章所说:C++的函数是一个能够完成一个功能的模块或者说是一段命名了的代码块. 如下图所示,函数可以重载,是一段实现某些功能命名了的代码. 一个完整的函数的构成有四部分: 1.返回类型 2.函数 ...

  2. C++ primer plus读书笔记——第7章 函数——C++的编程模块

    第7章 函数--C++的编程模块 1. 函数的返回类型不能是数组,但可以是其他任何一种类型,甚至可以是结构和对象.有趣的是,C++函数不能直接返回数组,但可以将数组作为结构或对象的组成部分来返回. 2 ...

  3. 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 ...

  4. C Primer Plus_第5章_运算符、表达式和语句_编程练习

    Practice 1. 输入分钟输出对应的小时和分钟. #include #define MIN_PER_H 60 int main(void) { int mins, hours, minutes; ...

  5. C Primer Plus_第四章_字符串和格式化输入输出_编程练习

    Practice 1.输入名字和姓氏,以"名字,姓氏"的格式输出打印. #include int main(void) { char name[20]; char family[2 ...

  6. 《C++ Primer》 第四版 第7章 函数

    <C++ Primer> 第四版 第7章 函数 思维导图笔记 超级具体.很具体,图片版,有利于复习查看 http://download.csdn.net/detail/onlyshi/94 ...

  7. C++ primer plus读书笔记——第8章 函数探幽

    第8章 函数探幽 1. 对于内联函数,编译器将使用相应的函数代码替换函数调用,程序无需跳到一个位置执行代码,再调回来.因此,内联函数的运行速度比常规函数稍快,但代价是需要占用更多内存. 2. 要使用内 ...

  8. <<C++ Primer>> 第 6 章 函数

    术语表 第 6 章 函数 二义性调用(ambiguous call): 是一种编译时发生的错误,造成二义性调用的原因时在函数匹配时两个或多个函数提供的匹配一样好,编译器找不到唯一的最佳匹配.    实 ...

  9. 《深入浅出Node.js》第4章 异步编程

    @by Ruth92(转载请注明出处) 第4章 异步编程 Node 能够迅速成功并流行起来的原因: V8 和 异步 I/O 在性能上带来的提升: 前后端 JavaScript 编程风格一致 一.函数式 ...

随机推荐

  1. 基于web的jfreechart的使用

    这个模块的主要步骤就是: 前台通过struts调用后台,通过JFreeChart产生图片格式的图表,存储在某个位置,然后前台jsp再去调用图片. 来开工. JFreeChart的简介大家请百度. 首先 ...

  2. Salesforce开发入门

    云计算风起云涌,已成势不可挡之势.公司好多项目都依托于云平台了,网络安全采用了zscaler,人力资源系统用的workday,我们case系统也用了salesforce,我自己也在用运行于Google ...

  3. 使用“万能数据库查询分析器”的Windows 7、Windows 8、Windows 10的用户须知

    与以前的Windows操作系统版本(包括WinXP/VISTA/Windows2000/WindowsNt/Win98)不同,Windows 7.Windows 8.Windows 10短日期采用的分 ...

  4. multiset基础学习,可以有重复类型的多重集合容器

    #include <set> #include <iostream> using namespace std; struct Student { char *name; int ...

  5. spring boot + jersey工程由jar包转为war包在tomcat中启动报错问题

    第一步: 在maven下,将Spring Boot工程由jar转换为war包启动,很简单,将pom.xml文件中的packaging改为war <packaging>war</pac ...

  6. nginx日志中添加请求的response日志

    换个新公司,做一些新鲜的事情,经过一天的琢磨,终于成功添加response日志 在nginx的日志中添加接口response的日志 由于此功能在nginx内置的功能中没有,需要安装第三方模块ngx_l ...

  7. angularjs作用域之transclude

    transclude是一个可选的参数.如果设置了,其值必须为true,它的默认值是false.嵌入有时被认为是一个高级主题,但某些情况下它与我们刚刚学习过的作用域之间会有非常好的配合.使用嵌入也会很好 ...

  8. MyBatis 框架之快速入门程序

    一.使用 IDEA 快速创建 Maven 项目 关于如何快速创建 Maven 项目,这个可以参考下面这篇文章: Maven 项目管理工具基础入门系列(一) 二.快速配置 MyBatis 依赖 jar ...

  9. [C#网络应用编程]1、对进程的操作

    在.net中,Process类提供了对进程进行管理的各种方法. 一.获取进程集合的方法: Process[] myProcesses = Process.GetProcesses();  //获取本地 ...

  10. Spring消息之STOMP

    一.STOMP 简介 直接使用WebSocket(或SockJS)就很类似于使用TCP套接字来编写Web应用.因为没有高层级的线路协议(wire protocol),因此就需要我们定义应用之间所发送消 ...