C语言用法合集

_MomO__o_

贡献于2012-07-22

字数:9365 关键词: C/C++开发

#include /*scanf*/ float max(float x,float y) { return(x>y?x:y); } void main() { float a,b; printf("输入两个数\n"); scanf("%f%f",&a,&b); printf("max=%f\n",max(a,b)); } #include /*define*/ #include #define PI 3.141592653 float duibian(float a,float b,float c) { return(sqrt(a*a+b*b-2*a*b*cos(c/180*PI))); } void main() { float a,b,c; printf("输入两个边长和角度,角度是以度数为单位的\n"); scanf("%f%f%f",&a,&b,&c); 4 printf("%f\n",duibian(a,b,c)); } #include /* %d %o %x */ void main() { int a,b,c; scanf("%d%o%x",&a,&b,&c); printf("%d,%d,%d\n",a,b,c); scanf("%d",&a); printf("%d,%o,%x\n",a,a,a); } #include /* %c %s */ void main() { char d; char dd[20]; scanf("%c",&d); printf("%c\n",d); scanf("%s",dd); printf("%s\n",dd); } #include "stdio.h" /* %f %e */ main() { float a; scanf("%f",&a); printf("%f,%e\n",a,a); scanf("%e",&a); printf("%f,%e\n",a,a); } #include /*两个输入函数相连是有后果的*/ void main() { char a,b; scanf("%c",&a); scanf("%c",&b); printf("%c,%c\n",a,b); } #include "stdio.h" /*转义字符的应用*/ main() { printf("1\n2\t3 \b4\n111\r5\f\\\' \"\10\x10'"); } ##include /*输入数据的截取规则*/ void main() { int a,b,c; char ab[10]; scanf("%3s",ab); printf("%s\n",ab); scanf("%3d%3d%3d\n",&a,&b,&c); printf("%d %d %d\n",a,b,c); } #include /*强制转换的应用*/ void main() { float c; scanf("%f",&c); printf("%d",(int)c); } #include "stdio.h" /*字符是默认为unsigned的单字节存储单元*/ main() { char a; a=130; printf("%d\n",a); } #include /*sizeof求字节运算符*/ void main() { int a; printf("%d\n",sizeof a); } #include /*i++和++i的区别*/ void main() { int i=3; printf("%d\n",i++); printf("%d\n",i++); } #include void main() { int i=3; printf("%d\n",++i); printf("%d\n",++i); } #include /*逗号运算符的计算,逗号是用于连接表达式的*/ void main() { int a=3,d; d=(a=3*a,a+4); printf("%d\n",a); printf("%d\n",d); } #include "stdio.h" /* < > 是有运算结果的*/ main() { int a=2,b=3; printf("%5d%5d\n",ab); } #include /*此程序不能运行,原因是和库函数重名*/ void printf() { printf("这是错误的\n"); } int main() { printf("不冲突\n"); } #include /*符号输入与输出函数,注意输出字符常量是要加上' '号*/ int main() { char a,b; a=getchar(a); putchar(a); putchar('\n'); printf("%d\n",a); } #include int main() { putchar(getchar()); putchar('\n'); } #include /*格式化输出字符串与字符的区别*/ int main() { printf("%s\n","我是中国人"); printf("%c\n",'a'); return(0); } #include /*puts与gets函数的应用*/ int main() { char a[20]; puts("输入字符串"); putchar('\n'); gets(a); puts(a); return(0); } #include /*可以用无符号位格式来输出*/ int main() { int a=-123; printf("%5d\n%5u\n",a,a); } 总结:格式化输出实际带表了计算机处理或者显示数据的方式; #include "stdio.h" /*算术、关系、逻辑运算符的级别问题/* main() { printf("2+2>3=%d\n",2+2>3); printf("3>2==1=%d\n",3>2==1); printf("2+2==4=%d\n",2+2==4); printf("2>3>1=%d\n",2>3>1); printf("算术>关系>逻辑\n"); } #include "stdio.h" /*if语句的应用*/ main() { int a; scanf("%d",&a); if(a>0)printf("a=%d/n",a); printf("结束\n"); } #include "stdio.h" /*if else 的应用*/ #include"stdlib.h" int main() { int a; begin: system("cls"); printf("输入分数\n"); scanf("%d",&a); if(a<60)printf("不合格\n"); else if(a<0)printf("必须大于零\n"); else if(a>=60&&a<=70)printf("及格\n"); else if(a>70&&a<=80)printf("良好\n"); else if(a>80&&a<=90)printf("优秀\n"); else if(a>90&&a<=100)printf("尖子生\n"); else if(a>100)printf("总分是100\n"); printf(">0继续,否则退出\n"); scanf("%d",&a); if(a>0) goto begin;else exit(0); } #include /*三目运算符的使用,可以部分替代if else 的功能*/ float ma(float a,float b) { return(a>b?a:b); } void main() { float a,b; printf("输入两个数字\n"); scanf("%f%f",&a,&b); printf("max=%5f\n",ma(a,b)); } #include /*三目运算符是自右至左结合的*/ void main() { printf("%d\n",2>3?2:3>4?5:6); } #include /*三目运算符可以后面跟上表达式,语句等*/ void main() { float a,b; scanf("%d%d",&a,&b); a>b?printf("a>b\n"):printf("a2)continue; printf("i=%d\n",i); } } /*switch必须是有括号的*/ #include "stdio.h" /*break是结束本层循环*/ main() { int i,j; for(j=1;j<3;j++) for(i=1;i<5;i++) { printf("j=%d ",j); if(i>2)break; printf("i=%d\n",i); } } #include "stdio.h" /*当对数据进行一个初始化之后则其余的默认为0*//*超出数组定义之后的数值其值是不定的*/ void main() { int a[3]={1}; printf("%d\n",a[2]); printf("%d\n",a[3]); } /*数组要是初始化的话有时是不需指出数组大小的*/ #include "stdio.h" /*数组初始一部分后其余的为/0,超出范围的其值不定*/ void main() { char a[3]="0"; printf("%3c%3c%3c\n",a[0],a[2],a[6]); } #include "stdio.h" /*双重数组可以看成是数组的数组*/ void main() { char a[10][10]; scanf("%s",a[0]); printf("%s",a[0]); } #include "stdio.h" /*数据可以是多维的*/ void main() { int a[10][10][10]={1}; printf("%d\n",a[0][0][0]); } #include /*多维数组中的前一级数组就是后级数组的首地址*/ void main() { char a[6][6]; gets(a[0]); puts(a[0]); } #include #include /*puts好像会自动给回车,strcat()是字符串连接函数*/ void main() { char str[2][10]; gets(str[0]); gets(str[1]); strcat(str[0],str[1]); puts(str[0]); strncpy(str[0],str[1],2); /*n的值不应该大于str【0】中原有字符的数目*/ puts(str[0]); strcpy(str[0],str[1]); /*strcpy()是字符串copy函数*/ puts(str[0]); } #include #include void main() { char str[3][10]; gets(str[0]); gets(str[1]); printf("%d\n",strcmp(str[0],str[1])); /*strcmp比较两个字符串的大小,前大回1,前小回-1,等于回0*/ strcat(str[0],str[1]); printf("连接后的长度是%d\n",strlen(str[0])); /*strlen是用来测量字符的长度的*/ strlwr(str[0]); /*将大写字母变小写*/ puts(str[0]); strupr(str[0]); /*将小写字母变大写*/ puts(str[0]); } #include #include void main() { int max(float x,float y); /*需要预先声明*/ float x,y; scanf("%f%f",&x,&y); x=max(x,y); printf("%f\n",x); } int max(float x,float y) /*会将返回值取整的,即以函数的应用类型为强制标准*/ { return(x>y?x:y); } #include void main() { float a,b,c,d; float max(float x,float y); scanf("%f%f%f%f",&a,&b,&c,&d); printf("%f\n",max(a,max(c,max(c,d)))); /*函数的递归调用*/ } float max(float x,float y) { return(x>y?x:y); } #include #include/*自己建立头文件*/ void main() { max(); } #include "stdio.h" #include void main() { printf("pow(0.16,0.5)=%f\n",pow(0.16,0.5)); /*求任意数的次方*/ printf("log10(100)=%f\n",log10(100)); /* 求10的对数*/ printf("exp(1)=%f\n",exp(1)); /*求e的n次方的值*/ printf("log(exp(5.5))=%f\n",log(exp(5.5))); /*求e的对数*/ printf("ldexp(1,3)=%f\n",ldexp(1,3)); /*x*2^y次方,y是整数*/ /*ldexp(double,int)*/ /*double y=_cabs(struct _complex x)求虚数的绝对值*/ printf("fabs(-3.1415)=%f\n",fabs(-3.1415)); /*求浮点数的绝对值*/ printf("hypot(-3,4)=%f\n",hypot(-3,4)); /*求两个数的平方和*/ printf("ceil(3.14)=%f\n",ceil(3.14)); /*求不小于这浮点数的最小整数的浮点值*/ printf("floor(3.14)=%f\n",floor(3.14)); /*求不大于这个浮点数的最大整数的浮点值*/ /*double z=modf(double x,double *y),y中写入整数部分,返回小数部分*/ printf("fmod(0.7,0.3)=%f\n",fmod(0.7,0.3)); /*求浮点数项除后的余数*/ printf("sqrt(0.16)=%f\n",sqrt(0.16)); /*开平方*/ } /*注意*i++是不行的*/ /*文件包含命令是复制命令,结合#define命令,文件读写命令将会使程序更加智能化*/ /*exit(0)是退出,记住0是必须的*/ #include "stdio.h" void main() { int a=4,b=4; { int c; /*在程序块里可以再次定义变量*/ c=a+b; printf("%d\n",c); } } #include "stdio.h" void main() { int a=4,b=3; { int a; a=6; /*在程序块里可以再次定义变量,并且也能覆盖外部的变量,即局部优先*/ printf("%d\n",a); } printf("%d\n",a); } #define PI p*3.14 /*define无先后之分*//*#undef限定define的作用区域*/ /*但是#include是有先后之分的*/ #define p 2 #include void main() { float a; a=PI; printf("%f\n",a); /* " "之内的不能被宏置换*/ } #define s(a,b) a*b #include void main() { int a=10; printf("%d\n",s(a,5)); /*和函数是不一样的,define只是机械的替代*/ } #include /*条件编译,ifdef else endif是编译条件和条件编译结束标志*/ #define PI void main() { float a=3,b=5; #ifdef PI printf("a=%f\n",a); #else printf("b=%f\n",b); #endif printf("条件编译\n"); } #include /*条件编译的语句也可以是预编译*/ #define A #ifdef A #define PI 2 #else #define PI 4 #endif void main() { float a; a=PI; printf("%f\n",a); } #include #define CE {printf("I am right\n");printf("haha\n");} /*define的语句必须和它在同一行,{}也是无所谓的,应为他是机械的复制的*/ void main() { CE } /*'*''++'&'的级别是相同的,且是从右至左的计算顺序*/ #include "stdio.h" /*指针的移动*/ void main() { float a[10]={1,2,3}; printf("%f %f\n",*(a),*(a+1)); } #include "stdio.h" void main() { float a[10]={1,2,3}; printf("%d %d\n",a,a+1); /*这里的加1,实际是加了4,其中的变换是和指针类型有关的*/ } #include "stdio.h" void main() { float a[10][10]={1,2,3}; printf("%d %d\n",a,a+1); /*看似加1,实际上是加了40,这就是数组的后一个括号的数字不能省略的原因了*/ } #include "stdio.h" void main() { int a[10],i; for(i=0;i<5;i++) scanf("%d",a+i); /*可以指针运算的方式来直接得到地址,用来简化计算机的计算过程*/ for(i=0;i<5;i++) printf("%d ",a[i]); } #include void main() { char *a; a="i am a boy"; /*这种方式很危险*/ puts(a); } #include void main() { int (*p)(int, int); /*指向函数的指针*/ int max(int ,int); p=max; printf("%d\n",p(3,5)); } int max(int a,int b) { return(a>b?a:b); } /*指向函数的指针可用于编写一些通用型的函数,例如编写一个积分程序,则每次只需改变参数中的函数指针就可 实现调用不同的函数,实现不同的函数的定积分*/ #include void main() { int a[4][4]={10}; printf("%d\n", *((int *)a)); /*强制运算*/ printf("%d\n",a[0][0]); } struct zhtzh /*结构体的定义不一定非要在开头*/ { int tai1;int tai2;float zhi;}; #include void main() { struct zhtzh a={1,1,123}; /*可以这样初始化,但不能这样赋值*//*赋值是需要分别进行的*/ printf("%d %d %f\n",a.tai1,a.tai2,a.zhi); } /*对于字串,scanf是以空格为界的,但是gets却不是*/ void *malloc(unsigned int size) /*分配一个size大小的连续空间,执行成功则返回首地址,否则返回NULL*/ void *calloc(unsigned n,unsigned size)/*分配一个n个长度为size的连续空间*/ void free(void *p)/*释放有p所指向的内存区*/ /*void 型数据类型*/ union data { int i; char ch;/*共用体,只能是最后一个数据有效*/ float f; }; enum weekday{sun,mon,tue,wed,thu,fri,sat}/*枚举类型数据*/ typedef int zhengshu; typedef float fushu; typedef struct { int month; /*仔细研究typedef的用法*/ int day; int year; }date; typedef int num[10]; 按位与运算 & 1保持 0清零 用于清零和截取 按位或运算 | 1赋一 0保持 用于赋全一和截取余下取一 异或运算 ^ 1取反 0保持 取反运算符 ~ 取反 左移运算 << 例如a=a<<2 右移运算 >> 例如a=a>>2 位段操作 struct data { unsigned a:2; /*即在结构体中指定各个数据所占得位数*/ unsigned :6;/*这段是不可以用的*/ unsigned :0; unsigned b:5;/*使数段从下一个存储单元开始存放*/ int i; /*必须是int 或unsigned型数据*/ } /*每个位段的大小不能超过一个字节*/ fopen("文件名 ","使用文件的方式")/*文件的打开*/ fclose(文件指针)关闭文件 在stdio.h中是#define putchar(c) fputc(c,stdout)来定义putchar的 fputc(ch,fp)如果输出成功则返回值就是输出字符,不成功则返回-1; ch=fgetc(fp) 带回一个字符,如果遇到结束符返回-1; feof(fp)当没遇到文件结束时,返回值是0,遇到文件结束时,返回值是1; fread(读入数据存放地址,一次读写的字节数,读写多少次,文件指针);返回值是读取次数时表示读入成功; fwrite(输出数据地址,一次写入的字节数,写入的次数,文件指针);返回值是写入次数时表示写入成功; fprintf(fp,"%d %d",i,t);格式化输出函数。 fscanf(fp,"%d %d",&i,&t);格式化输入函数。 putw(10,fp),i=getw(fp)的作用是对磁盘文件读写一个字(整数)。 typedef struct { short level; /*缓冲区满与空的程度*/ unsigned flags; /*文件状态标志*/ char fd; /*文件描述符*/ unsigned char hold; /*如果没有缓冲区不读取字符*/ short bsize; /*缓冲区的大小*/ unsigned char *buffer;/*数据缓冲区的位置*/ unsigned ar *curp; /*指针,当前的指向*/ unsigned istemp; /*临时文件,指示器*/ short token; /*用于有效性检查*/ }FILE; #include using namespace std; int main() { for(int i=1;i<=4;i++);//i的作用范围是以以他为中心最小的{}为界的 cout<

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 5 金币 [ 分享文档获得金币 ]
2 人已下载

下载文档

相关文档