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 ...
随机推荐
- Android studio java文件显示j爆红
今天在android studio打开一个原来的工程,此工程是很久以前使用eclipse创建的,在android studio下有些问题需要解决. 1.设置project的jdk, 2.设置modul ...
- Windows11 微软提供三种路径 安装程序应用
Windows11 微软提供三种路径 安装程序应用
- 城市间最短路径问题——R和Rcpp实现
这里的最短路径问题也叫做相识问题,具体问题来自 https://www.math.pku.edu.cn/teachers/lidf/docs/Rbook/html/_Rbook/examples.ht ...
- python logging模块学习
logging 是对程序运行中的日志进行输出记录,用户在程序中设置在哪个地方输出什么信息,方便进行之后问题的排查. logging输出有两种方式:输出至控制台 . 输出至文件 输出至控制台: impo ...
- 镜像问题、简易安装,系统语言更改,中文输入,提高下载速度,Firefox的语言更改,Firefox上网速度慢
一开始用的镜像不记得是从哪里下载过来的,反正 装好之后分辨率特别低.镜像放在: "D:\迅雷下载\2020大创\Ubuntu\ubuntu-16.04.6-desktop-i386.iso& ...
- django日志分割的几种处理
https://blog.csdn.net/qq_42819407/article/details/125041634
- 让你深夜emo的“网抑云”,是如何做产品设计的?
网易云音乐作为国内首个以"歌单"为核心架构的音乐APP,有的人喜欢它的热评,有的人却觉得它的版权太少,虽然网易云音乐不是曲库最丰富的听歌软件,但绝对是听歌软件里情感体验最好的. 我 ...
- linux 删除暂时无用内容
查看磁盘使用情况[root@localhost games]# df -hFilesystem Size Used Avail Use% Mounted on/dev/mapper/VolGroup- ...
- cximage第一讲demo.cpp
使用流程可参考: https://blog.csdn.net/wxc237786026/article/details/41171079 BOOL CDemoApp::InitInstance() { ...
- Web前端单词大全
style 修饰width 宽度height 高度title 想说明的text-align 水平对齐方式center 居中 left 居左 right 居右line-height 垂直对齐方式/行高 ...