《程序设计技术》例程

《程序设计技术》第一章 C语言与程序设计(例程)
《程序设计技术》第二章 C语言基础知识(例程)
《程序设计技术》第三章 程序控制结构(例程)
《程序设计技术》第四章 数组和字符串(例程)
《程序设计技术》第五章 指针(例程)
《程序设计技术》第六章 函数(例程)
《程序设计技术》第七章 用户自定义类型(例程)
《程序设计技术》第八章 文件(例程)
《程序设计技术》第九章 编译预处理(例程)

《程序设计技术》第六章 函数

例6-1:

/* 例6-1 计算m中取n的组合数量 */#include <stdio.h>int fac(int);                     /*对fac()函数声明*/
int con(int, int);        /*对con()函数声明*/int main(void)
{int m,n;printf("Input m,n\n");scanf("%d,%d",&m,&n);printf("%d\n",con(m,n));/*调用con()函数,求组合数*/return 0;
}/*定义函数con(),求组合数*/
int con(int m,int n)
{return fac(m) / (fac(n) * fac(m-n));/*调用fac()函数计算并返回组合数*/
}/*定义函数fac(),求阶乘 */
int fac(int n)
{int t=1,i;for(i=1; i<=n; i++)t *= i;return t;        /*返回阶乘*/
}

例6-2:

/* 例6-2 使用函数求和 */#include <stdio.h>int sum(int x, int y)
{/*int z;z = x + y;return z;
*/return x+y;
}int main(void)
{int a, b, c;scanf("%d,%d",&a,&b);c = sum(a, b);printf("sum is %d\n",c);return 0;
}

例6-3:

/* 例6-3 分析以下程序运行结果(给自己找麻烦) */#include <stdio.h>int mult(int x, int y)
{return x * y;
}int main(void)
{int i=50, m;m = mult(i, ++i);printf("%d\n", m);return 0;
}

例6-4:

/* 例6-4 字符与整数类型,整数与字符转换(使用函数toupper()是最佳选择) */#include <stdio.h>
#include <ctype.h>char trans(char a)   /*trans()函数形参为字符型*/
{//  char c;
//  if(a>65)
//      c=a-32;
//  else
//      c=a+32;
//  return c;return islower(a)?a-32:a+32; /*大小写字符转换*/
}int main(void)
{int x,y;printf("please input a integer:\n");scanf("%d",&x);y = trans(x);        /*调用trans()函数,实参为整型*/printf("the result is %c\n", y);return 0;
}```例6-5:
```cpp
/* 例6-5 编写前n个正整数之和的函数 */#include <stdio.h>int main(void)
{int sum(int n);int n;printf("input number\n");scanf("%d",&n);printf("n=%d sum=%d\n", n, sum(n));return 0;
}int sum(int n)
{int i, sum=0;for(i=1; i<=n; i++)sum += i;return sum;
}

例6-6:

/* 例6-6 形参与实参的变化 */#include <stdio.h>int f(int x, int y)
{x = x + 18;y = y + 26;printf("x=%d,y=%d\n", x, y);return x + y;
}int main(void)
{int a=2, b=4,c;c = f(a, b);printf("a=%d,b=%d,c=%d\n", a, b, c);return 0;
}

例6-7:

/* 例6-7 变量值交换函数 */#include <stdio.h>void swap(int *, int *);
void swap2(int, int);int main(void)
{int x=2, y=3;printf("before swap2 x=%d y=%d\n", x, y);swap2(x, y);printf("after swap2 x=%d y=%d\n", x, y);swap(&x, &y);printf("after swap x=%d y=%d\n", x, y);return 0;
}void swap(int *pa, int *pb)
{int temp = *pa;*pa = *pb;*pb = temp;
}void swap2(int a, int b)
{int t = a;a = b;b = t;
}

例6-10:

/* 例6-10 交换值函数 */#include <stdio.h>void swap(int *, int *);int main(void)
{int a = 5, b = 10;swap(&a, &b);printf("%d %d\n", a, b);return 0;
}void swap(int *p, int *q)
{int temp;temp = *p;*p = *q;*q = temp;
}

例6-32:

/* 例6-32 求菲波那契(Fibonacci)数列的第n项(递归) */#include <stdio.h>int fib(int);int main(void)
{int i;for(i=0; i<=20; i++)printf("%2d %d\n", i, fib(i));return 0;
}int fib(int n)
{if(n == 0)return 0;else if(n == 1)return 1;elsereturn fib(n - 2) + fib(n - 1);}

例6-32A:

/* 例6-32A 求菲波那契(Fibonacci)数列的第n项(递归与递推) */#include <stdio.h>int fib(int n)
{return (n == 1 || n == 2) ? 1 : fib(n - 2) + fib(n - 1);
}int fib2(int n)
{if(n == 1 || n == 2)return 1;else {int f1 = 1, f2 = 2, temp, i;for(i=3; i<n; i++) {temp = f1 + f2;f1 = f2;f2 = temp;}return f2;}
}int main(void)
{int i;for(i=1; i<=20; i++)printf("%2d %6d %6d\n", i, fib(i), fib2(i));return 0;
}

例6-34(多文件,条件编译, main.c, fib.c):

/* 例6-34 统计菲波那契数列计算函数的调用次数 */#include <stdio.h>#define N 10extern int fib(int);extern int count2;/*#define DEBUG*/int main(void)
{int i;for(i=1; i<=N; i++) {count2 = 0;int fibv = fib(i);
#ifdef DEBUGprintf("count2=%d   ", count2);
#endifprintf("%d %d\n", i, fibv);}return 0;
}
int count2;int fib(int n)
{count2++;if(n==1 || n == 2)return 1;elsereturn fib(n-2) + fib(n-1);
}/*
int fib(int n)
{if(n==1 || n == 2)return 1;else {int count = 2;int f1=1, f2=1;for(;;) {count2++;int temp = f1 + f2;f1 = f2;f2 = temp;if(++count == n)return f2;}}
}
*/

例6-5(extern变量,main.c, f.c):

/* 例6-35 extern变量 */#include <stdio.h>int a=100, b=200;void f(void);int main(void)
{a = 10;b = 20;int c = scanf("%d,%d", &a, &b);printf("%d\n", c);f();return 0;
}
#include <stdio.h>extern int a, b;void f(void)
{printf("a,b=%d %d\n",a, b);
}

《程序设计技术》第六章例程相关推荐

  1. 《程序设计技术》第九章例程

    <程序设计技术>例程 <程序设计技术>第一章 C语言与程序设计(例程) <程序设计技术>第二章 C语言基础知识(例程) <程序设计技术>第三章 程序控制 ...

  2. 《程序设计技术》第二章例程

    <程序设计技术>例程 <程序设计技术>第一章 C语言与程序设计(例程) <程序设计技术>第二章 C语言基础知识(例程) <程序设计技术>第三章 程序控制 ...

  3. 《程序设计技术》第一章例程

    <程序设计技术>例程 <程序设计技术>第一章 C语言与程序设计(例程) <程序设计技术>第二章 C语言基础知识(例程) <程序设计技术>第三章 程序控制 ...

  4. 《程序设计技术》第八章例程

    <程序设计技术>例程 <程序设计技术>第一章 C语言与程序设计(例程) <程序设计技术>第二章 C语言基础知识(例程) <程序设计技术>第三章 程序控制 ...

  5. c语言程序设计的几种循环,C语言程序设计教案 第六章 循环程序设计.doc

    C语言程序设计教案 第六章 循环程序设计 第六章 循环程序设计 课题:第五章 选择结构程序设计教学目的:1.掌握三种循环语句的语法结构 2.灵活运用循环语句教学重点: 教学难点:三种循环语句while ...

  6. 有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中,谭浩强《c语言程序设计》第六章第四题

    题目 本题是谭浩强<c语言程序设计>第六章第四题 题目:有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中. 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同 ...

  7. 用筛选法求100之内的素数。谭浩强《c语言程序设计》第六章第一题

    题目 本题是谭浩强<c语言程序设计>第六章第一题 题目:用筛选法求100之内的素数. 以下是本篇文章正文内容,欢迎朋友们进行指正,一起探讨,共同进步.--来自考研路上的lwj 一.解题思路 ...

  8. 006-高级语言程序设计C 第六章,高级语言程序设计_C语言(第六章 数组.ppt

    <高级语言程序设计_C语言(第六章 数组.ppt>由会员分享,可在线阅读,更多相关<高级语言程序设计_C语言(第六章 数组.ppt(30页珍藏版)>请在人人文库网上搜索. 1. ...

  9. 软件工程技术--第六章 软件实现

    第六章 软件实现 本章要点 理解编码的目的与要求: 了解程序设计语言的发展与分类: 了解常见的程序设计语言: 了解程序设计语言的选择原则: 掌握良好的编码风格: 理解结构化程序设计方法: 编码的目的与 ...

最新文章

  1. Geth的命令行介绍
  2. SpringBoot学习笔记(16):单元测试
  3. SAP Spartacus的SkipLink功能
  4. flask get 参数_用它 5 分钟以后,我放弃用了四年的 Flask
  5. [转载] Google Java代码规范
  6. 定义整型数组_C++数组的定义与初始化(学习笔记:第6章 01)
  7. 一个成功的研发团队应具备的9大属性
  8. 自己动手架设linux下Web服务器(图)1
  9. 批处理 备份网络数据
  10. bzoj 1193: [HNOI2006]马步距离(贪心+BFS)
  11. HashMap,LinkedHashMap,IdentityHashMap,HashSet之间的异同
  12. adb 连接某个wifi_adb通过wifi连接android设备的方法(根据网络中大神的提示加上自我摸索得到):...
  13. 华为机试HJ70:矩阵乘法计算量估算
  14. 公关世界杂志公关世界杂志社公关世界编辑部2022年第14期目录
  15. GTK+实现linux聊天室代码详解-clientr端
  16. 什么是口碑营销?如何做到产品口口相传
  17. Mybatis中按照年、季度、月、日、最近七天,查询
  18. 计算机工程与科学北京,高强铝合金加速腐蚀方法的研究-计算机工程与科学-北京航空航天大学.PDF...
  19. 计算机无法启动蓝屏,电脑无法开机一直蓝屏原因及处理方法
  20. 2022湖南最新消防设施操作员模拟试题题库及答案

热门文章

  1. HTML里face作用,html5 – @ font-face在子文件夹中的字体时不起作用
  2. html——影响文档流属性详解
  3. ArcGIS Maritime Server 开发教程(八)ArcGIS Bathymetry 扩展模块
  4. AIR-Android开发外部数据访问与存储
  5. 在64位操作系统上使用FlashDevelop的Debug功能
  6. [Stage3D]GPU渲染的喷泉粒子
  7. java中主函数_(基础)java中的主函数
  8. 为什么eolinker发送老是等待_eolinker环境管理之开发、测试和生产环境
  9. python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...
  10. 【java学习之路】(java框架)003.Mybatis的介绍和基本使用