学习日记5-C语言函数的应用
函数的定义和声明
1.函数定义:函数是一个完成特定功能的代码模块,通常有参数,也可以没有参数;通常有返回值,也可以是空值。
2.一般形式:<数据类型><函数名称>(<形式参数说明>)
函数名称是一个标识符,要符合命名规则(以数字字母_组成,但不能以数字开头,不能是关键词)
3.数据类型是整个函数返回值的类型,不需要返回值时,数据类型可用void;
4.函数的优点:代码复用,模块化,便于维护,阅读。
5.形参可以是任意类型变量,各参数之间用逗号分隔,在进行函数调用时将赋予这些形参实际的值。
6.函数不可重复定义,并且不能嵌套定义。
7.被调用函数必须是已经声明的函数,或者被调函数的位置位于调用函数之前。
8.如果在调用函数前没有对函数进行声明,则编译系统会把第一次遇到的该函数形式(函数定义或函数掉用)作为函数的声明,并将函数返回值的类型默认为int;
9.函数调用:嵌套调用,递归调用(注意结束条件)。
10.全局变量的缺点:易被修改,生命周期长,占内存,易被屏蔽(在函数中重新赋值导致被覆盖)。
11作用域:1.{}内为局部 ;2全局:定义到程序结束
函数的返回值
1.函数的返回值只能通过return 语句返回主函数,且只能返回一个值;
2.函数返回值的类型和函数定义的数据类型应保持一致,若不一致,则以函数定义中的类型为准,自动进行类型转换,没有返回值 ,可以定义为void类型。
一些例子
1.用函数求1+2+.......+n的和
#include <stdio.h>
int sum(int n)
{
if(n==0)
return 0;
return n+sum(n-1);//递归调用
}
int main(int argc, char *argv[])
{
int a;
a=sum(100);
printf("%d",a);
return 0;
}
2.求X^n的值
#include <stdio.h>
double work(double x,int n)
{
int i;
double m=x;
for(i=1;i<n;i++)
{
x=m*x;
}
return x;
}
int main(int argc, char *argv[])
{
double s;
double c;
int d;
scanf("%lf%d",&c,&d);
s=work(c,d);
printf("%f",s);
return 0;
}
3.输入鸡和兔的总只数和脚的总数,求解鸡和兔分别有多少只?
#include <stdio.h>
void number(int x,int y)
{
int i,j;
for(i=0;i<=x;i++)
{
for(j=0;j<=x;j++)
{
if(i+j==x&&2*i+4*j==y)
{
printf("兔的只数=%d鸡的只数=%d\n",j,i);
return ;
}
}
}
printf("invail!\n");
return;
}
int main(int argc, char *argv[])
{
int a,b,m;
printf("请输入总只数和总脚数\n");
scanf("%d%d",&a,&b);
number(a,b);
return 0;
}
4.写一个判断闰年的函数
#include <stdio.h>
int leapyear(int x)//判断闰年的函数
{
if(x%4==0&&(x%100!=0||x%400==0))
return 1;
}
int main(int argc, char *argv[])
{
int x,i;
printf("please input year\n");
scanf("%d",&x);
i=leapyear(x);
if(i==1)
printf("%d is a leap year\n",x);
else
printf("%d is not a leap year\n",x);
return 0;
}
5.写一个判断质数的函数
#include <stdio.h>
int prime(int x)//判断质数函数
{
int i;
for(i=2;i<x;i++)
{
if(x%i!=0)
{
return 1;
}
}
return 0;
}
int main(int argc, char *argv[])
{
int x,a;
printf("please input a number\n");
scanf("%d",&x);
a=prime(x);
if(a==1)
printf("the number is a prime number\n");
else
printf("the number is not a prime number\n");
return 0;
}
6.猜数字游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(int argc, char *argv[])
{
int number;
int guess;
int i;
srand((unsigned)time(NULL));
number=rand()%100;
number++;
printf("guess number game!\n");
printf("the range of number is 1-100\n");
for(i=0;;i++)
{
printf("please input number\n");
scanf("%d",&guess);
if(guess>number)
{
printf("大了\n");
}
else if(guess<number)
printf("小了\n");
else
{
printf("victory!\n");
break;
}
}
return 0;
}
7.求N的阶层
#include <stdio.h>
int factorial(int n)//FOR循环求阶乘
{
int i;
for(i=n;i>1;i--)
{
n=n*(i-1);
}
return n;
}
int funtion(int n)//递归求阶乘
{
if(n==1)
return 1;
return n*funtion(n-1);
}
int main(int argc, char *argv[])
{
int n;
int sum;
printf("please input n\n");
scanf("%d",&n);
//sum=factorial(n);
sum=funtion(n);
printf("%d的阶乘为%d\n",n,sum);
return 0;
}
8.打印1000-2000年的闰年
#include <stdio.h>
void leapyear(int n)
{
int i;
for(i=n;i<=2000;i++)
{
if(i%4==0&&(i%100!=0||i%400==0))
printf("%-8d",i);
}
return;
}
int main(int argc, char *argv[])
{
leapyear(1000);
return 0;
}
9.计算1!+2!+3!+...........+N!
#include <stdio.h>
int sume(int n)
{
int i,j;
int sum=1;
int S=0;
for(i=1;i<=n;i++)
{
sum=sum*i;
S=S+sum;
}
return S;
}
int main(int argc, char *argv[])
{
int n,sum;
printf("输入你要求的阶乘数\n");
scanf("%d",&n);
sum=sume(n);
printf("阶乘之和为%d\n",sum);
return 0;
}
10.求1!-2!+3!-............+N!
#include <stdio.h>
int sume(int n)
{
int i,j;
int sum=1;
int S=0;
for(i=1;i<=n;i++)
{
sum=sum*i;
S=S+sum;
sum=(-1)*(sum);
}
return S;
}
int main(int argc, char *argv[])
{
int n,sum;
printf("输入你要求的阶乘数\n");
scanf("%d",&n);
sum=sume(n);
printf("阶乘之和为%d\n",sum);
return 0;
}
11.登陆系统,三次错误后退出系统
#include <stdio.h>
#define password 1234
int system(int n)
{
int i=1;
int mm;
while(i<=n)
{
printf("input your password\n");
scanf("%d",&mm);
if(mm==password)
{
return 1;
}
i++;
}
return 0;
}
int main(int argc, char *argv[])
{
int a;
a= system(3);
if(a==1)
printf("login succeeded!\n");
else
printf("your password is wrong!login out system\n");
return 0;
}
12.求两个数的最大公约数
#include <stdio.h>
int conven(int x,int y)
{
int i,r;
for(i=1;i<=x&&i<=y;i++)
{
if(x%i==0&&y%i==0)
r=i;
}
return r;
}
int main(int argc, char *argv[])
{
int x,y,a;
printf("input two number\n");
scanf("%d%d",&x,&y);
a=conven(x,y);
printf("%d和%d的最大公约数为%d",x,y,a);
return 0;
}
学习日记5-C语言函数的应用相关推荐
- ffmpeg学习日记506-源码-av_image_copy()函数分析及功能
ffmpeg学习日记506-源码-av_image_copy()函数分析及功能 实现文件 av_image_copy()实现在libavutil/imgutils.c中 函数原型 void av_im ...
- C/C++学习日记:C语言栈区与堆区浅谈
在编程中,内存分为五大分区:栈区内存,堆区,静态区,常量区,代码区. 看下面一个函数,你能发现它又什么问题?又该如何改正? char * getString() { char str[20] = &q ...
- 22.2.26学习日记:php intval( )函数
今天在ctf-show里面完成了web萌新1,对php intval()函数有了一些了解. 首先先看题目,直接给出了源码 里面运用到了intval函数,对此特别进行学习! (部分内容来自PHP int ...
- Python学习日记(十一) 内置函数
什么是内置函数? 就是Python中已经写好了的函数,可以直接使用 内置函数图表: 以3.6.2为例 内置函数分类: 一.反射相关 1.hasattr() 2.getattr() 3.setattr( ...
- Java学习日记-Day01
Java学习日记-Day01 Java语言概述 比特(byte)与字节 内存 Java基础知识图解 人机交互方式 常用的DOS命令 常用快捷键 计算机编程语言介绍 第一代语言 第二代语言 第三代语言 ...
- Python语言学习之lambda:lambda函数的简介、使用方法、案例大全之详细攻略
Python语言学习之lambda:lambda函数的简介.使用方法.案例大全之详细攻略 目录 lambda函数的简介 1.lambda匿名函数的格式 2.lambda函数特点 3.lambda函数与 ...
- Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略
Python语言学习之字母L开头函数使用集锦:logging日志用法之详细攻略 目录 logging日志用法之详细攻略 logging日志用法之详细攻略 K Llogging.basicConfig( ...
- Python语言学习之字母E开头函数使用集锦:endswith使用用法之详细攻略
Python语言学习之字母E开头函数使用集锦:endswith使用用法之详细攻略 目录 endswith用法之详细攻略 enumerate()函数 endswith用法之详细攻略 if my_file ...
- Python语言学习之字母D开头函数使用集锦:del、dict使用方法之详细攻略
Python语言学习之字母D开头函数使用集锦:del.dict使用方法之详细攻略 目录 del.dict使用方法 del dict() #创建字典 del.dict使用方法 del a=1, ...
- Python语言学习之字母G开头函数使用集锦:global用法之详细攻略
Python语言学习之字母G开头函数使用集锦:global用法之详细攻略 global全局变量用法 global全局变量:python使用的变量默认一定是用局部变量:如果想使用作用域之外的全局变量,则 ...
最新文章
- Kruskal算法模版
- [转]使用 .NET Framework 2.0 在您的应用程序中支持证书
- hive后台启动_数据仓库组件:Hive环境搭建和基础用法
- python numpy逆_关于python:为什么numpy和scipy中的矩阵求逆函数对于大的二次矩阵返回不同的结果?...
- LLVM每日谈之三 如何创建一个LLVM工程
- 大数据数学基础 python描述下载_正版 大数据数学基础(Python语言描述)Python 大数据 数学 高职-计算机-大数据技术...
- linux log变色
- [SQL面试经验] 经典sql面试题及答案第1期
- 怎样关闭vivo的HTML查看器,vivo安全模式在哪儿关闭?
- 【AD笔记】--封装库PCB
- yuv420p 详解_YUV格式详解,图文详解YUV420数据格式
- 文件误删除如何找回呢?四步妙招解决
- qq企业邮箱登录服务器,腾讯邮箱登录入口(腾讯企业邮箱免费用户申请)
- 支付宝 alipay.fund.trans.uni.transfer(单笔转账接口)功能整合
- 技术领导者 第44讲|空降技术高管的“择业七计”
- 后端接口如何提高性能?
- 双向可控硅晶片光耦 (TLP160J TLP260J TLP525G) 基本原理及应用实例
- 全国信息竞赛语言有python吗_2019年全国信息学竞赛有哪些
- CPU处理器的分类(ARM系列中央处理器)
- OSPF从初学到放弃 2.1
热门文章
- 洛谷 P1562 智破连环阵 题解(搜索)
- c#基础知识学习——枚举、元组(四)
- c#--Fleck WebSocket使用 (C#版Websocket实例)
- git提交提示workspace.xml出现conflicted
- Easyui项目之添加购物车、清空购物车
- 2DPCA以及增强的双向2DPCA详解
- iPhone2018年最全iPhone尺寸
- 13 个非常有用的 Python 代码片段,建议收藏
- [机器学习与scikit-learn-33]:算法-回归-通过PolynomialFeatures实现数据的升维
- 考研数学易错知识点总结