
int是什么函数
-
2023年2月19日发(作者:)函数的定义、写法及使⽤
前⾔
对函数的补充
⼀、函数分类
系统函数:
是操作系统以函数接⼝形式提供的⼀套功能,这些功能:
内存管理、信号处理、⽂件IO、⽂件管理、进程管理、进程通信、线程管理、线程同步、⽹络通信
第三⽅库函数:
由第三⽅提供的,⼀些开源或者收费的代码
MD5验证
JSON序列化和反序列化
glog⽇志记录
⾃定义函数:
为了更好地管理代码,减少冗余把代码封装成函数
注意:⼀个函数尽量控制在50⾏以内,⼀个函数⼀个功能
函数声明:函数声明的⽬的是为了告诉其他代码该函数的调⽤格式
⼆、返回值
返回值类型函数名(类型1形参名1,类型2形参名2,…);
1、C语⾔中函数名全部⼩写,⽤下划线分隔
2、如果不需要参数时,建议写void,不要空着
3、如果不需要返回值,也写void,但是return后不能跟数据
隐式声明:
当调⽤函数之前没有声明和定义,编译器会猜测函数的格式,参数列表会根据调⽤时提供的实参(数据)来猜测,返回值会猜测成int类型
注意:函数定义如果在函数调⽤之前,可以省略函数声明
函数定义:
返回值类型函数名(类型1形参名1,类型2形参名2,…)
{
函数体
returnval;
}
函数调⽤:
函数名(实参1,实参2,…);
注意:返回值会放在调⽤的位置,可以⽴即打印显⽰,或者也可以⽤变量记录下来
三、练习
1、实现⼀个函数,判断整数是否是素数,调⽤该函数显⽰出100~10000之间的所有素数
2、输⼊两个⽇期,计算两个⽇期之间间隔了多少天
3、实现⼀个函数,判断整数是否是回⽂数,调⽤该函数显⽰出1亿-10亿之间的所有回⽂数
4、计算出100的阶乘
5、输⼊⼀个整数,显⽰该整数的补码
练习1代码如下(⽰例):
#include
#include
boolIs_prime(intnum);
intmain(intargc,constchar*argv[])
{
for(inti=100;i<1000;i++)
{
Is_prime(i)&&printf(\"%d\",i);
}
}
boolIs_prime(intnum)
{
for(inti=2;i<=num/2;i++)
{
if(num%i==0)
returnfalse;
}
returntrue;
}
练习2代码如下(⽰例):
#include
#include
intdata(intyear,intmonth,intday);
intmain(intargc,constchar*argv[])
{
printf(\"输⼊第⼀个⽇期:\");
intyear,month,day;
scanf(\"%d-%d-%d\",&year,&month,&day);
intone=data(year,month,day);
printf(\"输⼊第⼆个⽇期:\");
scanf(\"%d-%d-%d\",&year,&month,&day);
inttwo=data(year,month,day);
printf(\"两个⽇期相隔%d天\",abs(one-two));
}
intdata(intyear,intmonth,intday)
{
intsum=0;
for(inti=1;i { sum+=365+(i%4==0&&i%100==0||i%400==0); } for(inti=1;i { if(i==2) sum+=28+(year%4==0&&year%100==0||year%400==0); elseif(i==4||i==6||i==9||i==11) sum+=30; else sum+=31; } returnsum+=day-1; } 练习3代码如下(⽰例): #include #include boolis_hw(intnum); intmain(intargc,constchar*argv[]) { for(inti=100000000;i<=1000000000;i++) { is_hw(i)&&printf(\"%d\",i); } } boolis_hw(intnum) { intcopy,new=0; copy=num; while(copy) { new=new*10+(copy%10); copy/=10; } returnnew==num } 练习4代码如下(⽰例): #include intmain(intargc,constchar*argv[]) { charrets[256]={1}; intcnt=1;//指向结果接下去要进位的下标 for(inti=2;i<=100;i++) { charcarry=0;//进位 for(intj=0;j { shortnum=rets[j]*i+carry; rets[j]=num%10; carry=num/10; } while(carry) { rets[cnt++]=carry%10; carry/=10; } } while(cnt--) { printf(\"%d\",rets[cnt]); } } 练习5代码如下(⽰例): #include voidbm(intnum); intmain(intargc,constchar*argv[]) { printf(\"输⼊⼀个整数:\"); intnum; scanf(\"%d\",&num); bm(num); } voidbm(intnum) { intarr[32]={}; for(inti=0;i<32;i++) { arr[i]=num>>i&1; } for(inti=31;i>=0;i--) { printf(\"%d\",arr[i]); } } 总结 上⾯的代码仅供参考,也不⼀定是最精简的,⼀些变量名命名⽐较随意,望⼤家不要模仿。