C语言程序设计基础 实验3 函数
#include <stdio.h>
long long fac(int n);
int main() {
int i, n;
printf("Enter n: ");
scanf("%d", &n);
for (i = 1; i <= n; ++i) printf("%d! = %lld\n", i, fac(i));
return 0;
} long long fac(int n) {
static long long p = 1;
p = p * n;
return p;
}

感悟:这个代码非常的细节,考虑到了同学们可能会输入较大的n从而导致对应的阶乘超出int的范围。已知long long的范围下最大的阶乘表示为26
在line22之后插入打印
#include <stdio.h>
long long fac(int n);
int main() {
int i, n;
printf("Enter n: ");
scanf("%d", &n);
for (i = 1; i <= n; ++i) printf("%d! = %lld\n", i, fac(i));
return 0;
} long long fac(int n) {
static long long p = 1;
printf("p = %lld\n", p);
p = p * n;
return p;
}

(2)
#include <stdio.h>
int func(int, int);
int main() {
int k = 4, m = 1, p1, p2;
p1 = func(k, m);
p2 = func(k, m);
printf("%d,%d\n", p1, p2);
return 0;
}
int func(int a, int b) {
static int m = 0, i = 2;
i += m + 1;
m = i + a + b;
return (m);
}

实验二
#include <stdio.h>
void printSymbol(int n, char symbol);
int main() {
int n;
char symbol;
while( scanf("%d %c", &n, &symbol) != EOF ) {
printSymbol(n, symbol);
printf("\n");
}
return 0;
} void printSymbol(int n, char symbol){
if(!n) return ;
printf("%c",symbol);
printSymbol(n-1,symbol);
}

递归版
#include <stdio.h>
void printSymbol(int n, char symbol);
int main() {
int n;
char symbol;
while( scanf("%d %c", &n, &symbol) != EOF ) {
for(int i=1;i<=n;++i) printf("%c",symbol);
printf("\n");
}
return 0;
} void printSymbol(int n, char symbol){
if(!n) return ;
printf("%c",symbol);
printSymbol(n-1,symbol);
}
我认为递归好一点,因为代码短
#include <stdio.h>
long long fun(int n);
int main() {
int n; long long f;
while (scanf("%d", &n) != EOF) {
f = fun(n);
printf("n = %d, f = %lld\n", n, f);
}
return 0;
} long long fun(int n){
if(n==1) return 1ll;
return 2ll*fun(n-1)+1;
}

#include <stdio.h>
#define true 0
#define false 1
#define bool int
bool is_prime(int x) {
for(int i=2; i<=x/i; ++i)
if(x%i==0)
return true;
return false;
} int main() {
int cnt = 0;
for(int i=101; i<=200; ++i) {
if(!is_prime(i)) {
cnt ++;
printf("%d ",i);
if(cnt%20 == 0) puts("");
}
}
puts("");
printf("101~200之间一共有%d个非素数\n",cnt);
return 0;
}

#include <stdio.h>
long fun(long s);
int main() {
long s, t;
printf("Enter a number: ");
while (scanf("%ld", &s) != EOF) {
t = fun(s);
printf("new number is: %ld\n\n", t);
printf("Enter a number: ");
}
return 0;
} long fun(long s){
long base = 1,ans=0;
while(s){
long num = s%10;
if(num&1){
ans += base*num;
base*=10;
}
s/=10;
}
return ans;
}

#include <stdio.h>
double fun(int n); // 函数声明
int main() {
int n;
double s;
printf("Enter n(1~10): ");
while (scanf("%d", &n) != EOF) {
s = fun(n); // 函数调用
printf("n = %d, s= %f\n\n", n, s);
printf("Enter n(1~10): ");
}
return 0;
}
double fun(int n){
if(n==1) return 1;
double ans = 1.0;
for(int i=1;i<=n;++i) ans*=i;
if(n&1) return fun(n-1) + 1.0/ans;
else return fun(n-1) - 1.0/ans;
}

C语言程序设计基础 实验3 函数的更多相关文章
- C语言程序设计基础知识点概括
C语言程序设计基础知识点概括 C语言程序设计基础知识点1.函数是C语言的基本构成单位.main函数是C语言程序的唯一入口.2.C语言程序开发过程. 编译过程:将以.c或.cpp结尾的源程序文件经过编译 ...
- C语言程序设计基础
C语言程序设计基础 目录 C语言 C语言基础 C语言编程注意 C语言 C语言基础 C语言编程注意 0<9<9和0<9&&9<9是不同的 数组的声明和定义 con ...
- C语言程序设计基础-第1周作业-初步
1.安装带有计算机术语的翻译软件 2.在自己电脑上安装C编译器,windows系统建议安装dev-c++,其他系统自行查找. 3.加入课程小组,有任何疑问可以在小组中提问:https://group. ...
- 《C语言程序设计基础1》第二学期第一周学习总结
**<C语言程序设计基础1>第二学期第一周学习总结 一. 本周学习内容总结 一维数组,了解了一维数组的定义(定义一个数组,需要明确数组变量名,数组元素的类型和数组大小,即数组中元素的数量) ...
- C语言程序真正的启动函数
为什么要用”真正”这个词?因为我们从学C语言开始,都会先明白这个道理,即C语言有且仅有一个main函数,main函数是C语言的入口点和出口点!(可以参考>http://www.dotcpp.co ...
- Python语言程序设计基础(5)—— 函数和代码复用
lambda sum = lambda x,y : x + y print(sum(3,3),type(sum)) 默认参数 def prints(str,times = 2) : print(str ...
- 嵌入式LinuxC语言程序设计基础教程
第1章 嵌入式LinxuC语言开发工具 第2章 数据 第3章 数据的输入输出 第4章 运算符和表达式 第5章 程序结构和控制语句 第6章 数组 第7章 指针 第8章 函数 第9章 用户自定义数据类型 ...
- 清华大学《C++语言程序设计基础》线上课程笔记03---数据的共享和保护&数组
数据的共享和保护 对象的生存期 static类型的局部变量,生存期在整个程序,局部可见. void example() { static a=1; int b=2 } 当调用完example函数后,b ...
- 清华大学《C++语言程序设计基础》线上课程笔记04---指针
指针 static int i; static int* ptr = &i; 此处的*表示ptr是指针类型(地址类型),用来存放目标数据的地址 其本身也有地址,所以又指向指针的指针; *前面的 ...
- 清华大学《C++语言程序设计基础》线上课程笔记02---类与对象
类与对象 public是类的对外访问接口: 类内初始值 在定义类时对数据成员写初始值,在创建对象的时候,会使用类内初始值初始化数据成员: class Clock { public: void show ...
随机推荐
- 关于Java的惰性求值
最近在学scala的时候,函数传参可以是传名参数,或者传值参数 1.Scala中的传名参数是什么意思?lazy关键字有什么作用? Scala官方文档的定义是:传名参数 仅在被使用时触发实际参数的求值运 ...
- CF1033E 题解
题意 传送门 交互题,给定一个简单连通图,你可以询问一个点集 \(s\),返回其导出子图的边数.判断此图是否为二分图:若是,输出其中一部点的集合:否则输出任一个奇环.最多询问 \(20000\) 次. ...
- JS中有关闭包的相关内容及介绍
1 var obj = (function (arg) { 2 // 这里就是一个简单的闭包,将局部变量 test和函数fn1 return出去 3 // 这样obj就可以拿到函数内部定义的变量在函数 ...
- Python 字典类型
1.由于字典中的 key 是非常关键的数据,而且程序需要通过 key 来访问 value,因此字典中的 key 不允许重复.程序既可使用花括号语法来创建字典,也可使用 dict() 函数来创建字典.实 ...
- 杭电oj 青年歌手大奖赛_评委会打分
Problem Description 青年歌手大奖赛中,评委会给参赛选手打分.选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分. Input 输入数据有多组,每 ...
- ES6的模块化(export导出)
ES6 Module把一个文件当作一个模块,每个模块有自己的独立作用域,那如何把每个模块联系起来呢?核心点就是模块的导入(import)与导出(export). 模块化的好处: 防止命名冲突 代码复用 ...
- mysql5.7主从多线程同步
数据库复制的主要性能问题就是数据延时 为了优化复制性能,Mysql 5.6 引入了 "多线程复制" 这个新功能 但 5.6 中的每个线程只能处理一个数据库,所以如果只有一个数据库, ...
- IQueryable 和 IEnumerable 的区别
讲一讲 IQueryable 和 IEnumerable 的区别. 我们会在使用 LINQ 查询方法之后,又使用 ToList 等方法,将查询结果转换成集合. 如果我们不使用 ToList 呢? 比如 ...
- echo 操作
echo打印制表符到文件: MAP_PATH=/path/for i in `cat sp.list`; do echo -e "${MAP_PATH}/${i}.${i}/${i}.fin ...
- win10查看笔记本电池性能
要生成电池报告,可以按Windows + R,窗口中输入 cmd 回车. 在提示符处输入: Powercfg /batteryreport,回车. 就可以在C盘看到性能报告文件.