C Primer Plus_第9章_函数_编程练习
1.题略
- /*返回较小值,设计驱动程序测试该函数*/
- #include <stdio.h>
- double min (double a, double b);
- int main (void)
- {
- double x, y;
- printf ("Please enter two numbers: \n");
- scanf ("%lf %lf", &x, &y);
- printf ("The smaller one is %lf\n", min (x, y));
- return ;
- }
- double min (double a, double b)
- {
- return (a < b) ? a: b;
- }
2.题略
- /**/
- #include <stdio.h>
- void chline (char, int, int);
- int main (void)
- {
- int i, j;
- char ch;
- printf ("Please enter a char and two int: \n");
- scanf ("%c %d %d", &ch, &i, &j);
- chline (ch, i, j);
- return ;
- }
- void chline (char ch, int i, int j)
- {
- int count;
- for (count = ; count <= j; count++)
- {
- if (count < i)
- putchar (' ');
- if (count >= i && count <= j)
- putchar (ch);
- if (count < || count > j)
- break;
- }
- putchar ('\n');
- }
3.题略
- /**/
- #include <stdio.h>
- void p_ch (char, int, int);
- int main (void)
- {
- int i, j;
- char ch;
- printf ("Please enter a char you like: \n");
- scanf ("%c", &ch);
- printf ("How many of them do you want to see in a line: \n");
- scanf ("%d", &i);
- printf ("How many lines do you want to have: \n");
- scanf ("%d", &j);
- p_ch (ch, i, j);
- printf ("Is it what you want? \n");
- return ;
- }
- void p_ch (char ch, int cols, int rows)
- {
- int i, j;
- for (i = ; i <= rows; i++)
- {
- for (j = ; j <= cols; j++)
- putchar (ch);
- printf ("\n");
- }
- }
4.题略
- /**/
- #include <stdio.h>
- double calculate (double, double);
- int main (void)
- {
- double a, b;
- printf ("input two doubles: ");
- scanf ("%lf %lf", &a, &b);
- printf ("1 / ((1/x + 1/y) / 2) = %.3f\n", calculate (a, b));
- return ;
- }
- double calculate (double x, double y)
- {
- return / ((/x + /y) / );
- }
5.题略
- /**/
- #include <stdio.h>
- void larger_of (double *, double *);
- int main (void)
- {
- double a, b;
- printf ("Please enter two numbers: ");
- scanf ("%lf %lf", &a, &b);
- larger_of (&a, &b);
- printf ("Now the a is %.2f and b is %.2f", a, b);
- return ;
- }
- void larger_of (double * x, double * y)
- {
- *x = *y = (*x > *y) ? *x : *y;
- }
6.题略
- /**/
- #include <stdio.h>
- void Judge(int ch);
- int main(void)
- {
- int ch;
- printf("enter some txt to be analyzed(ctrl+z to end):\n");
- while ((ch = getchar()) != EOF)
- Judge(ch);
- printf("Done\n");
- }
- void Judge(int ch)
- {
- if (ch>= && ch<=) printf("%c is number %d\n", ch, ch-);
- else if (ch>= && ch<=) printf("%c is number %d\n", ch, ch-);
- else printf("%c is not a letter\n",ch);
- }
7.题略
- #include <stdio.h>
- double power(double n, int p);
- int main (void)
- {
- double Do;
- int In;
- printf("Please enter a double and a int(to calculate pow):\n");
- while (scanf("%lf %d",&Do, &In))
- {
- printf("%lf\'s %d mi is %lf\n", Do, In, power(Do, In));
- }
- printf("Done!\n");
- }
- double power(double n, int p)
- {
- int i;
- double pow=;
- if (n==)
- return ;
- if (p==)
- return ;
- else if (p > )
- {
- for (i=; i<p; i++)
- pow*=n;
- return pow;
- }
- else if (p < )
- {
- for (i=; i<(-p); i++)
- pow*=n;
- return /pow;
- }
- }
8.题略
主函数与7题相同,关键是幂函数(递归形式),代码如下,还是挺考验逻辑的。
- double power(double n, int p)
- {
- double ans;
- if (p < )
- {
- ans = power(n,-p);
- ans = /ans;
- }
- else if (p > )
- ans = n * power(n,p-);
- else if (p == )
- ans = ;
- return ans;
- }
9.题略
- /*binary.c 以二进制形式输出整数*/
- #include <stdio.h>
- void Binary(int x, int y);
- int main(void)
- {
- int x, y;
- printf("Please enter a int (>=0)\n");
- while (scanf("%d %d", &x,&y) == )
- {
- if (y> || y<) continue;
- Binary(x,y);
- printf("\nPlease enter 2 int(q to quit):\n");
- }
- printf("Done!\n");
- }
- void Binary(int x, int y)
- {
- int z;
- z = x % y;
- if (x/y != )
- Binary(x/y, y);
- printf("%d",z);
- }
10.题略
关键点:利用循环的方式生成斐波那契数列,从下往上计算。即通过f(0) + f(1) 得到f(2), 再由f(1) + f(2)得到f(3)....直到计算出f(n),每次都必须从底层算起,然后三个变量相互赋值,迭代计算。
- int Fibonacci( unsigned int n )
- {
- unsigned int FibN, FibNOne, FibNTwo;
- unsigned int i;
- int result[] = { , };
- if( n < )
- return result[n-];
- FibNOne = ;
- FibNTwo = ;
- FibN = ;
- for( i = ; i <= n; i++ )
- { /*以第一次循环执行过程为例*/
- FibN = FibNOne + FibNTwo; /*f(2) = f(0) + f(1)*/
- FibNOne = FibNTwo; /*f(1)*/
- FibNTwo = FibN; /*f(2)*/
- }
- return FibN;
- }
C Primer Plus_第9章_函数_编程练习的更多相关文章
- 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 ...
- Oracle学习总结_day03_day04_条件查询_排序_函数_子查询
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day03_条件查询_排序_函数 清空回收站: PUR ...
- C Primer Plus_第10章_数组和指针_编程练习
1. /*rain.c 针对若干年的降水量数据,计算年降水总量.年降水平均量,以及月降水平均量*/ #include <stdio.h> #define MONTHS 12 #define ...
- C Primer Plus_第8章_字符输入输出和输入确认_编程练习
1.题略 #include <stdio.h> int main(void) { ; printf("Please enter text here(end with Ctrl + ...
- C Primer Plus_第三章_数据和C_复习题与编程练习
Review long代替int类型变量的原因是什么? 在您的系统中,long可以容纳比int更大的数:如果您确实需要处理更大的值,那么使用一种在所有系统上都保证至少是32位的类型会使程序的可移植性更 ...
- [C++ Primer Plus] 第8章、函数探幽(二)课后习题
1.编写通常接受一个参数(字符串的地址),并打印该字符串的函数.不过,如果提供了第二个参数(int类型),且该参数不为0,则该函数打印字符串的次数将为该函数被调用的次数(注意,字符串的打印次数不等于第 ...
- [C++ Primer Plus] 第8章、函数探幽(一)程序清单——内联、引用、格式化输入输出、模板、decltype
程序清单8.1(inline内联函数) #include<iostream> using namespace std; inline double square(double x) {// ...
随机推荐
- .net Core学习笔记:Windows环境搭建
1.安装 VS2015 Update3.如果已经安装了VS2015,但不是Update3版本,请在VS的工具 --> 扩展与更新 中执行update3的升级(大约需要2小时). 2..net C ...
- Ubuntu 下配置apache和APR
软件环境:ubuntu14.04 虚拟机Vmware 软件:http://httpd.apache.org/ httpd-2.2.29.tar.gz 不需要单独下载APR. 1.解压apach ...
- .Net配置中心-Zookeper版
简介 zookeeper的基本概念和作用这里不做介绍,现在很多的公司都在使用它,说起它的作用,可能最先想到的是配置中心,可以将配置项作为一个node存储在zookeeper中,其他应用可以“关注 ...
- JS/CSS缓存杀手——VS插件
背景 前些天去考科目二,感觉经历了一场不是高考却胜似高考的考试(10年前的5分之差, 还是难以释怀)! 一行八人,就我学的时间最少(4天,8人一辆车),教练都觉得我肯定还得再来一次! 靠着运气和 ...
- 剑指offer 面试题65 滑动窗口的最大值
import java.awt.print.Printable; import java.beans.VetoableChangeListenerProxy; import java.lang.ref ...
- 关于GIL
1同一时刻只有一个线程通过一个线程到解释器运行 2在多核上会有些不一样 不仅仅会降低python的效率 并且还会影响到整个机器系统的效率 python的gil是每100条cpu指令开始check 如果 ...
- UIDynamic-附着行为:UIAttachmentBehavior
直接上代码: // // YFAttachmentBehaviorViewController.m // BigShow1949 // // Created by apple on 16/8/25. ...
- 你所不了解的float(滥用float的怪异现象)
float设计初衷就是为了实现文字环绕效果 原本页面流布局显示如上图所示,运用了float属性后就显示为如下图所示,这就是浮动的设计初衷 float的一些特性:包裹性.破坏性. 包裹的特性其实主要有三 ...
- 优化Table View
优化Table View Table view需要有很好的滚动性能,不然用户会在滚动过程中发现动画的瑕疵. 为了保证table view平滑滚动,确保你采取了以下的措施: 正确使用`reuseIden ...
- linux下apache各种跳转(包括伪静态)的配置
1.404跳转: vi /etc/httpd/conf/httpd.conf 在虚拟主机配置里添加一行:ErrorDocument 404 /404.html 2.301跳转: 1)将不带www的 ...