C语言头文件.docx
- 文档编号:8311135
- 上传时间:2023-01-30
- 格式:DOCX
- 页数:25
- 大小:22.95KB
C语言头文件.docx
《C语言头文件.docx》由会员分享,可在线阅读,更多相关《C语言头文件.docx(25页珍藏版)》请在冰豆网上搜索。
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
#include
#include
#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(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 文件