C语言头文件.docx

上传人:b****6 文档编号:8311135 上传时间:2023-01-30 格式:DOCX 页数:25 大小:22.95KB
下载 相关 举报
C语言头文件.docx_第1页
第1页 / 共25页
C语言头文件.docx_第2页
第2页 / 共25页
C语言头文件.docx_第3页
第3页 / 共25页
C语言头文件.docx_第4页
第4页 / 共25页
C语言头文件.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

C语言头文件.docx

《C语言头文件.docx》由会员分享,可在线阅读,更多相关《C语言头文件.docx(25页珍藏版)》请在冰豆网上搜索。

C语言头文件.docx

C语言头文件

//判一个整数是否为回文素数

#include

#include

//判一个整数是否为回文数,是返回真否则返回假

charisPlalindrome(longn);

//判一个整数是否为素数,是返回真否则返回假

charisPrime(longn);

intmain(){

puts("2~9999之间的回文素数如下:

");

for(longn=2;n<10000;n++){

if(isPlalindrome(n)&&isPrime(n))

printf("%-4ld",n);

}

putchar('\n');

}

//判一个整数是否为回文数,是返回真否则返回假

charisPlalindrome(longn){

longm=0;

longs=(n>=0?

n:

-n);

n=s;

while(s){

m=m*10+s%10;

s/=10;

}

return(m==n);

}

//判一个整数是否为素数,是返回真否则返回假

charisPrime(longn){

if(n<2)returnfalse;

inti,k=(int)sqrt(n);

for(i=2;i<=k;i++){

if(n%i==0)

returnfalse;

}

returntrue;

}

 

//方法1:

输出所有3位数的对称素数。

例如:

101、727都是素数并且是对称的。

#include

#include

//判n是否为素数,是返回真否则返回假

intisPrime(longintn);

intmain(){

for(inti=100;i<1000;i++)

if(isPrime(i)&&i%10==i/100)

printf("%d是对称的素数\n",i);

}

//判n是否为素数,是返回真否则返回假

intisPrime(longintn){

longintk=(longint)sqrt(n);

for(longinti=2;i<=k;i++)

if(n%i==0)returnfalse;

returntrue;

}

 

//方法2:

输出所有3位数的对称素数。

例如:

101、727都是素数并且是对称的。

#include

//判n是否为素数,是返回真否则返回假

charisPrime(longintn);

intmain(){

for(inti=1;i<=9;i+=2)

for(intj=0;j<=9;j++){

intk=101*i+10*j;

if(isPrime(k))

printf("%d是对称的素数\n",k);

}

}

//判n为素数,是素数返回真否则返回假

charisPrime(longn){

if(n<2)returnfalse;

if(n==2)returntrue;

if(n%2==0)returnfalse;

for(longi=3;i*i<=n;i+=2){

if(n%i==0)returnfalse;

}

returntrue;

}

 

/***************************************************

//功能:

演示如何建立一个简单的菜单

//编写者:

王灿辉,版本号:

1.0,编写时间:

2011-1-6

****************************************************/

#include

#include//toupper

#include//strchr

#include//getche

#defineS_NUM35//选择菜单表头的星号数目

#defineMAX_MENU255//功能选择菜单的最大行数

//显示表头的n个字符(ch)

inlinevoidshow_table_head(intn,charch);

//显示功能选择菜单

//入口参数:

存放允许用户选择的所有(大写)字符,格式形如:

“A,B,C,D,Q”

voidshow_menu(char*);

//获得用户的选择。

返回值:

用户按下的字符(被转为大写)

charget_choice(void);

intmain(){

charchoice;//用户按下的字符(被转为大写)

while((choice=get_choice())!

='Q'){

switch(choice){

case'I':

printf("\a\n输入信息。

\n\n");

break;

case'O':

printf("\a\n输出信息。

\n\n");

break;

case'T':

printf("\a\n输出统计信息。

\n\n");

break;

case'F':

printf("\a\n查找并输出信息。

\n\n");

break;

case'D':

printf("\a\n查找并删除信息。

\n\n");

break;

}

}

}

//显示表头的n个字符(ch)

inlinevoidshow_table_head(intn,charch){

if(n<1)return;

for(inti=0;i

putchar(ch);

putchar('\n');

}

//显示功能选择菜单

//入口参数:

存放允许用户选择的所有(大写)字符,格式形如:

“A,B,C,D,Q”

voidshow_menu(char*select_str){

//存放功能选择菜单,要求:

每行的第一个字符必须为选择字符,最后一行一般是“Q:

退出系统”!

conststaticchar*menu[]={

"I:

输入信息",

"O:

输出信息",

"T:

输出统计信息",

"F:

查找并输出信息",

"D:

查找并删除信息",

"Q:

退出系统"

};

show_table_head(S_NUM,'*');//显示E_NUM个'*'

for(inti=0,j=0;i

printf("%-4s%-*s*\n","*",S_NUM-5,menu[i]);

if(i>0)select_str[j++]=',';

select_str[j++]=toupper(menu[i][0]);

}

select_str[j++]='\0';

show_table_head(S_NUM,'*');//显示E_NUM个'*'

printf("请选择(%s):

",select_str);

}

//获得用户的选择。

返回值:

用户按下的字符(被转为大写)

charget_choice(void){

charselect_str[MAX_MENU*2];

//存放允许用户选择的所有(大写)字符,格式形如:

“A,B,C,D,Q”

charchoice;

while

(1){

show_menu(select_str);//显示功能选择菜单

choice=toupper(getche());//非缓冲有回显输入

putchar('\n');

if(strchr(select_str,choice)&&choice!

=',')break;

printf("\a\n选择错误,请重新选择......\n\n");

}

returnchoice;

}

 

/*

给定整数N(2=

如:

7331就是一个这样的4位质数,因为7、73、733都是质数。

要求:

按升序输出所有符合要求的质数。

例如:

输入N=2,则必须按序输出下面的9个质数:

232931375359717379

*/

#include

//判n是否为质数,是返回真否则返回假。

intisPrime(longintn){

if(n<2)returnfalse;

for(longinti=2;i*i<=n;i++){

if(n%i==0)returnfalse;

}

returntrue;

}

intmain(){

intn=0;

printf("请输入一个2~8之间的整数:

");

scanf("%d",&n);

if(n<2||n>8){

puts("输入的整数不在2~8之间!

");

return-1;

}

//计算下界(10^n-1)和上界(10^n)

longinti=0,down=10;

for(i=n-1;i>1;i--)down*=10;

longintup=down*10;

intcount=0;//符合要求的质数的数目

for(i=down;i

if(isPrime(i)){//i是质数

//判其前任意位是质数?

for(longintprime=i,j=down;j>=10;j/=10){

if(!

isPrime(prime/j))break;

}

if(j<10){//其前任意位都是质数

printf("%d\t",i);//输出

count++;

}

}

}

printf("\n符合要求的%d位质数共有%d个。

\n",n,count);

return0;

}

 

//产生伪随机数的函数及其测试程序

#include

staticunsignedlongintnext=1;//种子

intrand1(void){

//产生伪随机数的魔术般的公式

next*=1103515245+12345;

return(unsignedint)(next/65536)%32768;

}

voidsrand1(unsignedintseed){

next=seed;

}

//跳过本行剩余的其他字符和<回车>键

inlinevoideatline(void){

while(getchar()!

='\n')

continue;

}

intmain(void){

unsignedintseed;

printf("请输入你选定的种子:

");

while(scanf("%u",&seed)==1){

srand1(seed);//重置种子

for(inti=0;i<8;i++)

printf("%hd\t",rand1());

eatline();

printf("\n请输入下一个种子(按q退出):

");

}

}

 

//“打鱼还是晒网”。

某人从2000年1月1日20岁开始“三天打鱼两天晒网”,问某天该人在打鱼还是在晒网。

#include

//从那一年开始“三天打鱼两天晒网”

#defineYEAR2000

//开始“三天打鱼两天晒网”的年龄

#defineAGE20

//可以“三天打鱼两天晒网”的最大年龄

#defineMAX_AGE100

//判指定年份(year)是否为闰年?

inlineboolisLeapYear(intyear);

//获得指定年(year)、月(month)对应的天数,如:

2011年5月有31天

//错误条件:

如果月份错误则返回-1

intgetDaynumOfMonth(intyear,intmonth);

intmain(){

inti,y,m,d;

while

(1){

printf("请输入日期(年.月.日),用q退出:

");

if(scanf("%d.%d.%d",&y,&m,&d)!

=3)break;

while(getchar()!

='\n');

//跳过该行的其他输入和<回车>键

if(y

puts("那一年他还没有出生!

");

continue;

}

if(y

puts("那一年他还没有开始打鱼!

");

continue;

}

if(y-YEAR>MAX_AGE){

printf("他已经超过%d岁,还能打鱼?

\n",MAX_AGE);

continue;

}

if(m<1||m>12){

puts("月份只能在1~12之间");

continue;

}

if(d<1){

puts("日期必须大于0!

");

continue;

}

intdays=getDaynumOfMonth(y,m);

if(d>days){

printf("%d年%d月只有%d天!

\n",y,m,days);

continue;

}

days=d;

//加上前面几年的天数,每年365天或366天(闰年)

for(i=y-1;i>=YEAR;i--)

days+=365+isLeapYear(i);

//加上前面几个月的天数

for(i=m-1;i>=1;i--)

days+=getDaynumOfMonth(y,i);

days%=5;

if(days==1||days==2||days==3)

puts("他正在打鱼...");

else

puts("他正在晒网...");

}

return0;

}

//判指定年份(year)是否为闰年?

inlineboolisLeapYear(intyear){

return(year%4==0&&year%100!

=0)||(year%400==0);

}

//获得指定年(year)、月(month)对应的天数,如:

2011年5月有31天

//错误条件:

如果月份错误则返回-1

intgetDaynumOfMonth(intyear,intmonth){

staticconstintday_num[]={31,-1,31,30,31,30,31,31,30,31,30,31};

if(month<1||month>12)return-1;//月份错误

if(month!

=2)

returnday_num[month-1];

else

return(isLeapYear(year)?

29:

28);

}

 

/*********************************************

程序的运行过程和输出结果如下:

请输入日期(年.月.日),用q退出:

1977.7.7

那一年他还没有出生!

请输入日期(年.月.日),用q退出:

1988.8.8

那一年他还没有开始打鱼!

请输入日期(年.月.日),用q退出:

2111.1.1

他已经超过100岁,还能打鱼?

请输入日期(年.月.日),用q退出:

2000.0.1

月份只能在1~12之间

请输入日期(年.月.日),用q退出:

2000.1.0

日期必须大于0!

请输入日期(年.月.日),用q退出:

2000.2.30

2000年2月只有29天!

请输入日期(年.月.日),用q退出:

2000.1.1

他正在打鱼...

请输入日期(年.月.日),用q退出:

2000.1.3

他正在打鱼...

请输入日期(年.月.日),用q退出:

2000.1.4

他正在晒网...

请输入日期(年.月.日),用q退出:

2000.1.5

他正在晒网...

请输入日期(年.月.日),用q退出:

2000.1.6

他正在打鱼...

请输入日期(年.月.日),用q退出:

2000.2.1

他正在打鱼...

请输入日期(年.月.日),用q退出:

2000.2.3

他正在晒网...

请输入日期(年.月.日),用q退出:

2001.1.1

他正在打鱼...

请输入日期(年.月.日),用q退出:

2001.1.2

他正在打鱼...

请输入日期(年.月.日),用q退出:

2001.1.3

他正在晒网...

请输入日期(年.月.日),用q退出:

2001.1.5

他正在打鱼...

请输入日期(年.月.日),用q退出:

2011.10.10

他正在打鱼...

请输入日期(年.月.日),用q退出:

q

**********************************************/

 

//利用全局变量实现swap函数。

演示全局变量(外部变量)的定义、声明(说明)和使用

//全局变量(外部变量)是实现函数之间数据通讯的有效手段,但绝不是一种好的手段。

//外部变量可加强函数模块之间的数据联系,但是又使函数要依赖这些变量,

//本例中的函数main、swap均依赖于(外部)全局变量x和y,因而使得函数的独立性降低

#include

intx,y;

//(外部)全局变量(的定义),初值为0

voidswap(void){

//在函数前定义的全局变量,在该函数内使用可不再加以说明

intt=x;x=y;y=t;

return;

}

intmain(){

externintx,y;

//该声明可省略,但明确写出来,可以知道这里有访问全局变量,这是一个好的习惯!

x=3;

y=5;

printf("交换前全局变量x=%d,y=%d\n",x,y);

swap();//利用全局变量实现值交换

printf("交换后全局变量x=%d,y=%d\n",x,y);

return;//可以省略,但最好写出来!

}

 

//输入任意一个整数,输出不小于该整数的一对孪生素数。

//孪生素数即相差2的一对素数。

例如3和5,5和7,11和13,…,10016957和10016959等等都是孪生素数。

#include

#include

//判n是否为素数,是返回真否则返回假

intisPrime(longintn);

intmain(){

longintn;

printf("请输入一个整数:

");

scanf("%ld",&n);

while(!

isPrime(n)||!

isPrime(n+2))n++;

printf("%ld,%ld是一对孪生素数\n",n,n+2);

}

//判n是否为素数,是返回真否则返回假

intisPrime(longintn){

longintk=(longint)sqrt(n);

for(longinti=2;i<=k;i++)

if(n%i==0)returnfalse;

returntrue;

}

 

#include

//判一个整数是否为回文数

charisPlalindrome(longn);

intmain(){

for(longn=-999;n<=999;n++){

if(isPlalindrome(n))

printf("%-4ld",n);

}

putchar('\n');

}

charisPlalindrome(longn){

longm=0;

longs=(n>=0?

n:

-n);

n=s;

while(s){

m=m*10+s%10;

s/=10;

}

return(m==n);

}

 

//全局变量和局部变量

#include

staticintx;

//仅在本文件可以使用的全局变量

inty=1;

//在本程序(其他文件的函数)中都可以使用的全局变量

intmain(){

externintx;

//引用全局变量,该语句可以省略,但明确写出来是更好的习惯

//声明该变量在函数外部定义,不能进行初始化,也不能在该函数中再定义。

//externinty;如果有该语句则下面的inty=2;将报告重定义错误!

printf("x=%d\ty=%d\n",x,y);

//输出(全局变量)x=0(未初始化的全局变量被自动初始化为0)和y=1

x=1;//修改全局变量的值

inty=2;//新定义的局部变量并初始化,将覆盖掉全局变量

printf("x=%d\ty=%d\n",x,y);

//输出x=1(全局变量)和y=2(局部变量)

}

 

//输出1~30000之间的所有"亲密数"。

//一个数A的所有因子之和为B,而B的所有因子之和正好是A,则称A和B是"亲密数"

//如果A又正好等于B,则称A为“完数”,如:

6=1+2+3则为“完数”。

//220和284是"亲密数"。

//220的所有因子之和:

1+2+4+5+10+11+20+22+44+55+110=284

//284的所有因子之和:

1+2+4+71+142=220

#include

#defineMAX30000

//计算给定正整数的所有因子之和

unsignedintfunc(unsignedintn){

for(unsignedints=0,i=1;i<=n/2;i++)

if(n%i==0)s+=i;

returns;

}

intmain(){

for(unsigneda=1;a<=MAX;a++){

if(func(func(a))==a)

printf("%d\t%d\n",a,func(a));

}

}

 

//输出2-N之间的所有"完数",即:

一个数正好等于其因子之和,如:

6=1+2+3

#include

//判给定的正整数是否是"完数"

charfunc(intn){

for(ints=0,i=1;i<=n/2;i++)

if(n%i==0)s+=i;

return(s==n);

}

intmain(){

inti,n;

printf("Inputintegervalue(>=2):

");

scanf("%d",&n);

if(n>=2)

for(i=2;i<=n;i++){

if(func(i))printf(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1