为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

C语言头文件

2017-09-26 30页 doc 60KB 13阅读

用户头像

is_003124

暂无简介

举报
C语言头文件C语言头文件 //判一个整数是否为回文素数 #include #include //判一个整数是否为回文数,是返回真否则返回假 char isPlalindrome(long n); //判一个整数是否为素数,是返回真否则返回假 char isPrime(long n); int main() { puts("2,9999之间的回文素数如下:"); for (long n=2;n=0?n:-n); n=s; while (s) { m=m*10+s%10; s/=10; } return (m==...
C语言头文件
C语言头文件 //判一个整数是否为回文素数 #include #include //判一个整数是否为回文数,是返回真否则返回假 char isPlalindrome(long n); //判一个整数是否为素数,是返回真否则返回假 char isPrime(long n); int main() { puts("2,9999之间的回文素数如下:"); for (long n=2;n<10000;n++) { if (isPlalindrome(n)&&isPrime(n)) printf("%-4ld ",n); } putchar('\n'); } //判一个整数是否为回文数,是返回真否则返回假 char isPlalindrome(long n) { long m=0; long s=(n>=0?n:-n); n=s; while (s) { m=m*10+s%10; s/=10; } return (m==n); } //判一个整数是否为素数,是返回真否则返回假 char isPrime(long n) { if (n<2) return false; int i,k=(int)sqrt(n); for (i=2;i<=k;i++) { if (n%i==0) return false; } return true; } 1 //1:输出所有3位数的对称素数。例如:101、727都是素数并且是对称的。 #include #include //判n是否为素数,是返回真否则返回假 int isPrime(long int n); int main() { for (int i=100;i<1000;i++) if (isPrime(i)&&i%10==i/100) printf("%d是对称的素数\n",i); } //判n是否为素数,是返回真否则返回假 int isPrime(long int n) { long int k=(long int)sqrt(n); for (long int i=2;i<=k;i++) if (n%i==0) return false; return true; } //方法2:输出所有3位数的对称素数。例如:101、727都是素数并且是对称的。 #include //判n是否为素数,是返回真否则返回假 char isPrime(long int n); int main() { for (int i=1;i<=9;i+=2) for (int j=0;j<=9;j++) { int k=101*i+10*j; if (isPrime(k)) printf("%d是对称的素数\n",k); } } //判n为素数,是素数返回真否则返回假 char isPrime(long n) { if (n<2) return false; 2 if (n==2) return true; if (n%2==0) return false; for (long i=3;i*i<=n;i+=2) { if (n%i==0) return false; } return true; } /*************************************************** //功能:演示如何建立一个简单的菜单 //编写者:王灿辉,版本号:1.0,编写时间:2011-1-6 ****************************************************/ #include #include //toupper #include //strchr #include //getche #define S_NUM 35 //选择菜单头的星号数目 #define MAX_MENU 255 //功能选择菜单的最大行数 //显示表头的n个字符(ch) inline void show_table_head(int n,char ch); //显示功能选择菜单 //入口参数:存放允许用户选择的所有(大写)字符,格式形如:“A,B,C,D,Q” void show_menu(char *); //获得用户的选择。返回值:用户按下的字符(被转为大写) char get_choice(void); int main() { char choice; //用户按下的字符(被转为大写) 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; 3 case 'F': printf("\a\n查找并输出信息。\n\n"); break; case 'D': printf("\a\n查找并删除信息。\n\n"); break; } } } //显示表头的n个字符(ch) inline void show_table_head(int n,char ch) { if (n<1) return; for (int i=0;i0) 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); 4 } //获得用户的选择。返回值:用户按下的字符(被转为大写) char get_choice(void) { char select_str[MAX_MENU*2]; //存放允许用户选择的所有(大写)字符,格式形如:“A,B,C,D,Q” char choice; while (1) { show_menu(select_str); //显示功能选择菜单 choice=toupper(getche()); //非缓冲有回显输入 putchar('\n'); if (strchr(select_str,choice)&&choice!=',') break; printf("\a\n选择错误,请重新选择......\n\n"); } return choice; } /* 给定整数N(2= //判n是否为质数,是返回真否则返回假。 int isPrime(long int n) { if (n<2) return false; for (long int i=2;i*i<=n;i++) { if (n%i==0) return false; } return true; } int main() { int n=0; printf("请输入一个2,8之间的整数:"); scanf("%d",&n); if (n<2||n>8) { puts("输入的整数不在2,8之间~"); return -1; } 5 //计算下界(10^n-1)和上界(10^n) long int i=0,down=10; for (i=n-1;i>1;i--) down*=10; long int up=down*10; int count=0; //符合要求的质数的数目 for (i=down;i=10;j/=10) { if (!isPrime(prime/j)) break; } if (j<10) {//其前任意位都是质数 printf("%d\t",i); //输出 count++; } } } printf("\n符合要求的%d位质数共有%d个。\n",n,count); return 0; } //产生伪随机数的函数及其测试程序 #include static unsigned long int next=1; //种子 int rand1(void){ //产生伪随机数的魔术般的公式 next*=1103515245+12345; return (unsigned int)(next/65536)%32768; } void srand1(unsigned int seed) { next=seed; } //跳过本行剩余的其他字符和<回车>键 inline void eatline(void) { while (getchar()!='\n') continue; 6 } int main(void) { unsigned int seed; printf("请输入你选定的种子:"); while (scanf("%u",&seed)==1) { srand1(seed); //重置种子 for (int i=0;i<8;i++) printf("%hd\t",rand1()); eatline(); printf("\n请输入下一个种子(按q退出):"); } } //“打鱼还是晒网”。某人从2000年1月1日20岁开始“三天打鱼两天晒网”,问某天该人 在打鱼还是在晒网。 #include //从那一年开始“三天打鱼两天晒网” #define YEAR 2000 //开始“三天打鱼两天晒网”的年龄 #define AGE 20 //可以“三天打鱼两天晒网”的最大年龄 #define MAX_AGE 100 //判指定年份(year)是否为闰年, inline bool isLeapYear(int year); //获得指定年(year)、月(month)对应的天数,如:2011年5月有31天 //错误条件:如果月份错误则返回-1 int getDaynumOfMonth(int year,int month); int main() { int i,y,m,d; while (1) { printf("请输入日期(年.月.日),用q退出:"); if (scanf("%d.%d.%d",&y,&m,&d)!=3) break; while (getchar()!='\n'); //跳过该行的其他输入和<回车>键 if (yMAX_AGE) { printf("他已经超过%d岁,还能打鱼,\n",MAX_AGE); continue; } if (m<1||m>12) { puts("月份只能在1,12之间"); continue; } if (d<1) { puts("日期必须大于0~"); continue; } int days=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("他正在晒网..."); } return 0; } //判指定年份(year)是否为闰年, 8 inline bool isLeapYear(int year) { return (year%4==0 && year%100!=0)||(year%400==0); } //获得指定年(year)、月(month)对应的天数,如:2011年5月有31天 //错误条件:如果月份错误则返回-1 int getDaynumOfMonth(int year,int month) { static const int day_num[]={31,-1,31,30,31,30,31,31,30,31,30,31}; if (month<1 || month>12) return -1; //月份错误 if (month!=2) return day_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 9 他正在打鱼... 请输入日期,年.月.日,,用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 10 他正在打鱼... 请输入日期,年.月.日,,用q退出,q **********************************************/ //利用全局变量实现swap函数。演示全局变量(外部变量)的定义、声明(说明)和使用 //全局变量(外部变量)是实现函数之间数据通讯的有效手段,但绝不是一种好的手段。 //外部变量可加强函数模块之间的数据联系,但是又使函数要依赖这些变量, //本例中的函数main、swap均依赖于(外部)全局变量x和y,因而使得函数的独立性降低 #include int x,y; //(外部)全局变量(的定义),初值为0 void swap(void) { //在函数前定义的全局变量,在该函数内使用可不再加以说明 int t=x; x=y; y=t; return; } int main() { extern int x,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是否为素数,是返回真否则返回假 int isPrime(long int n); 11 int main() { long int n; printf("请输入一个整数:"); scanf("%ld",&n); while (!isPrime(n)||!isPrime(n+2)) n++; printf("%ld,%ld是一对孪生素数\n",n,n+2); } //判n是否为素数,是返回真否则返回假 int isPrime(long int n) { long int k=(long int)sqrt(n); for (long int i=2;i<=k;i++) if (n%i==0) return false; return true; } #include //判一个整数是否为回文数 char isPlalindrome(long n); int main() { for (long n=-999;n<=999;n++) { if (isPlalindrome(n)) printf("%-4ld ",n); } putchar('\n'); } char isPlalindrome(long n) { long m=0; long s=(n>=0?n:-n); n=s; while (s) { m=m*10+s%10; s/=10; } return (m==n); } 12 //全局变量和局部变量 #include static int x; //仅在本文件可以使用的全局变量 int y=1; //在本程序(其他文件的函数)中都可以使用的全局变量 int main() { extern int x; //引用全局变量,该语句可以省略,但明确写出来是更好的习惯 //声明该变量在函数外部定义,不能进行初始化,也不能在该函数中再定义。 //extern int y; 如果有该语句则下面的int y=2;将报告重定义错误~ printf("x=%d\ty=%d\n",x,y); //输出(全局变量)x=0(未初始化的全局变量被自动初始化为0)和y=1 x=1; //修改全局变量的值 int y=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 #define MAX 30000 //计算给定正整数的所有因子之和 unsigned int func(unsigned int n) { 13 for (unsigned int s=0,i=1;i<=n/2;i++) if (n%i==0) s+=i; return s; } int main() { for (unsigned a=1;a<=MAX;a++) { if (func(func(a))==a) printf("%d\t%d\n",a,func(a)); } } //输出2-N之间的所有"完数",即:一个数正好等于其因子之和,如:6=1+2+3 #include //判给定的正整数是否是"完数" char func(int n) { for (int s=0,i=1;i<=n/2;i++) if (n%i==0) s+=i; return (s==n); } int main() { int i,n; printf("Input integer value(>=2) : "); scanf("%d",&n); if (n>=2) for (i=2;i<=n;i++) { if (func(i)) printf("%8d",i); } else printf("Input value error !!!"); printf("\n"); } //演示全局变量、局部变量、语句块变量等及其相互覆盖(作用域)的规则~ #include int x=11; //全局变量 //用于保存本程序中定义的所有5个不同的变量x的地址 14 int *p1,*p2,*p3,*p4,*p5; void func(int x) { p4=&x; printf("函数func中,全局变量::x的值为:%d\t地址为:%p\n",::x,&::x); printf("函数func的形式参数x的值为:%d\t\t地址为:%p\n",x,&x); x=21; //改变函数func的形式参数(其实也是函数func的局部变量)x的值 printf("函数func的形式参数x的值为:%d\t\t地址为:%p\n",x,&x); { int x=22; //函数func语句块中的变量 p5=&x; //在语句块中无法访问“函数func的形式参数x” printf("函数func语句块中的变量x的值为:%d\t地址为:%p\n",x,&x); ::x=13; //改变全局变量x的值 printf("函数func语句块中,全局变量::x的值为:%d\t地址为:%p\n",::x,&::x); } ::x=14; //改变全局变量x的值 printf("函数func中,全局变量::x的值为:%d\t地址为:%p\n",::x,&::x); printf("函数func的形式参数x的值为:%d\t\t地址为:%p\n",x,&x); } int main() { p1=&::x; printf("函数main中,全局变量x的值为:%d\t\t地址为:%p\n",x,&x); printf("函数main中,全局变量::x的值为:%d\t地址为:%p\n",::x,p1); x=12; //改变全局变量x的值 printf("函数main中,全局变量x的值为:%d\t\t地址为:%p\n",x,&x); int x=31; //函数main的局部变量 p2=&x; printf("函数main的局部变量x的值为:%d\t\t地址为:%p\n",x,&x); func(x); printf("函数main的局部变量x的值为:%d\t\t地址为:%p\n",x,&x); { int x=32; //函数main语句块中的变量 p3=&x; //在语句块中无法访问“函数main的局部变量x” printf("函数main语句块中的变量x的值为:%d\t地址为:%p\n",x,&x); ::x=15; //改变全局变量x的值 printf("函数main语句块中,全局变量::x的值为:%d\t地址为:%p\n",::x,&::x); } ::x=16; //改变全局变量x的值 printf("函数main中,全局变量::x的值为:%d\t地址为:%p\n",::x,&::x); printf("函数main的局部变量x的值为:%d\t\t地址为:%p\n",x,&x); 15 printf("\n 实际上,在本程序中共定义了5个不同的变量x:\n"); printf("(1)全局变量[%p]:有变量覆盖时使用::x引用;\n",p1); printf("(2)函数main的局部变量[%p];\n",p2); printf("(3)函数main语句块中的变量[%p];\n",p3); printf("(4)函数func的形式参数[%p];\n",p4); printf("(5)函数func语句块中的变量[%p]。\n",p5); } /*-------------------------------------------------------- 输出结果形如, 函数main中,全局变量x的值为,11 地址为,00422A30 函数main中,全局变量::x的值为,11 地址为,00422A30 函数main中,全局变量x的值为,12 地址为,00422A30 函数main的局部变量x的值为,31 地址为,0012FF7C 函数func中,全局变量::x的值为,12 地址为,00422A30 函数func的形式参数x的值为,31 地址为,0012FF28 函数func的形式参数x的值为,21 地址为,0012FF28 函数func语句块中的变量x的值为,22 地址为,0012FF1C 函数func语句块中,全局变量::x的值为,13 地址为,00422A30 函数func中,全局变量::x的值为,14 地址为,00422A30 函数func的形式参数x的值为,21 地址为,0012FF28 函数main的局部变量x的值为,31 地址为,0012FF7C 函数main语句块中的变量x的值为,32 地址为,0012FF78 函数main语句块中,全局变量::x的值为,15 地址为,00422A30 函数main中,全局变量::x的值为,16 地址为,00422A30 函数main的局部变量x的值为,31 地址为,0012FF7C 16 实际上,在本程序中共定义了5个不同的变量x, (1)全局变量[00422A30],有变量覆盖时使用::x引用, (2)函数main的局部变量[0012FF7C], (3)函数main语句块中的变量[0012FF78], (4)函数func的形式参数[0012FF28], (5)函数func语句块中的变量[0012FF1C]。 ---------------------------------------------------------*/ #include #include //判n是否为素数,是返回真否则返回假 int isPrime(long int n); int main() { //输出2至2000之间的所有素数 puts("2至2000之间的所有素数:"); for (int i=2;i<=2000;i++) { if (isPrime(i)) printf("%5d",i); } putchar('\n'); //验证哥德巴赫猜想:任一充分大的偶数,可以用两个素数之和表示 long int n,p=1,q; printf("\n请输入一个偶数:"); scanf("%ld",&n); do { p++; q=n-p; } while (!isPrime(p) || !isPrime(q)); printf("%ld=%ld+%ld\n",n,p,q); } //判n是否为素数,是返回真否则返回假 17 int isPrime(long n) { if (n<2) return false; long int i,k,isPrimer; //变量与函数名相同~ isPrimer=true,k=(int)sqrt(n); for (i=2;i<=k;i++) if (n%i==0) {isPrimer=false;break;} return isPrimer; } //验证哥德巴赫猜想 #include //n是素数返回真,否则的返回假 bool isprime(int n); int main() { int n; printf("请输入一个大于2的偶数:"); scanf("%d",&n); if (n<2||n%2) { printf("输入错误~\n"); return -1; } for(int i=2;i<=n/2;i++) { if( isprime(i) && isprime(n-i) ) { printf("%d = %d + %d\n",n,i,n-i); break; } } return 0; } 18 //n是素数返回真,否则的返回假 bool isprime(int n) { for(int i=2;i*i<=n;i++) { if(n%i==0) return false; } return true; } //验证哥德巴赫猜想:大于5的所有奇数均是三个素数之和 #include #include //判n是否为素数,是返回真否则返回假 int isPrime(long int n); int main() { long int n,i,j,k; for (n=7;n<1000;n+=2) { int found=false; for (i=2;i<=n-4&&!found;i++) for (j=2;j<=n-i-2&&!found;j++) { k=n-i-j; if (isPrime(i)&&isPrime(j)&&isPrime(k)) { printf("%03ld=%ld+%ld+%ld\t",n,i,j,k); 19 found=true; } } } } //判n是否为素数,是返回真否则返回假 int isPrime(long n) { if (n<2) return false; long int i,k,isPrimer; //变量与函数名相同~ isPrimer=true,k=(int)sqrt(n); for (i=2;i<=k;i++) if (n%i==0) {isPrimer=false;break;} return isPrimer; } //已知函数poly是用递归方法计算x的n阶勒让德多项式的值,函数如下: //n=0 1 //n=1 ploy1(x)=x //n>1 ((2n-1)*x*polyn-1(x)-(n-1)*polyn-2(x))/n #include double poly(double x,int n) { if (n<=0) return 1; if (n==1) return x; return ((2*n-1)*x*poly(x,n-1)-(n-1)*poly(x,n-2))/n; } int main() { int n; double x; printf("\n请输入一个实数x的值和多项式的系数n:"); scanf("%lf%d",&x,&n); printf("x的n阶勒让德多项式的值为:%lf\n",poly(x,n)); } //用递归方法实现求和:1+2+......+n 20 #include int f(int n) { if (n<=0) return 0; return n+f(n-1); } int main() { printf("%d\n",f(10)); } 头文件 ctype.h 字符处理函数: 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换 ---------------------------------------- 字符测试是否字母和数字 isalnum 是否字母 isalpha 是否控制字符 iscntrl 是否数字 isdigit 是否可显示字符(除空格外) isgraph 是否可显示字符(包括空格) isprint 是否既不是空格,又不是字母和数字的可显示字符 ispunct 是否空格 isspace 是否大写字母 isupper 是否16进制数字(0,9,A-F)字符 isxdigit 字符大小写转换函数 转换为大写字母 toupper 转换为小写字母 tolower math.h 数学函数: 本分类给出了各种数学计算函数,必须提醒的是ANSI C标准中的数据格式并不符合IEEE754标准,一些C语言编译器却遵循IEEE754(例如frinklin C51) ---------------------------------------- 反余弦 acos 反正弦 asin 反正切 atan 反正切2 atan2 余弦 cos 正弦 sin 正切 tan 双曲余弦 cosh 双曲正弦 sinh 双曲正切 tanh 21 指数函数 exp 指数分解函数 frexp 乘积指数函数 fdexp 自然对数 log 以10为底的对数 log10 浮点数分解函数 modf 幂函数 pow 平方根函数 sqrt 求下限接近整数 ceil 绝对值 fabs 求上限接近整数 floor 求余数 fmod time.h 日期和时间函数: 本类别给出时间和日期处理函数 ---------------------------------------- 时间操作函数得到处理器时间 clock 得到时间差 difftime 设置时间 mktime 得到时间 time 时间转换函数 得到以ASCII码表示的时间 asctime 得到字符串表示的时间 ctime 得到指定格式的时间 strftime 22
/
本文档为【C语言头文件】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索