c语言(菜鸟)家常必备(转)

来源:互联网 发布:sql server 2012下载 编辑:程序博客网 时间:2024/04/28 17:12

<P>                                 c语言
头文件:#include <stdio.h>
主函数:main()
%d:整型数占位符
%o:八进制无符号
%u:无符号占位符
%c:字符型占位符
%s:字符串占位符
%p:内存地址
%#X:内存地址
%x,%X:十六进制占位符,大小写之分
%e:浮点数e-E 计数法</P>
<P>转义字符:
\0:空字符(null)
\n:换行符
\r:回车符
\t:水平制表符
\v:垂直制表符
\a:响铃
\b:退格符
\f:换页符
\':单引号
\":双引号
\\:反斜杠
\?:问号</P>
<P>int://定义变量的类型为整形类型,数据类型为%d 范围:-2147483647至+2147483647 2的31次方  
short://定义变量的类型为短整形类型 范围:-32768至+32767  2的15次方
long://定义变量的类型为长整形类型 范围:-2147483647 至2147483647
char://定义变量的类型为单字符类型,数据类型为%c
double://定义变量的类型为双精度浮点类型,数据类型为%Lf,保留2位小数用%0.01f表示
float://定义变量的类型为浮点类型,数据类型为%f</P>
<P>int a,number;//定义两个变量,不能定义以数字和以数字开关的变量(8,1a)
short a=1, b=2, c=3;//定义三个变量并赋值
char a[]="l love you"//定义字符串型变量
const int a=5;//在int前加const为定义常量。
#define abc="12345" //在主函数前定义常量abc</P>
<P>//:单行注释
/**/:多行注释
printf:打印输出
printf("123");//打印字符串
printf("123\n");//\n为换行
printf("%s", "abc");//打印字符串</P>
<P>printf(
"***\n\
* *\n\
***");// 符号\为连接下一行</P>
<P>printf("%d%d", a,b);//打印整型变量a,b,%d为数据类型
printf(%2d,2)//设定字域宽度为2,超过两位原样输出
printf(%10d,12345);//不足十位,右对齐
printf(%08d,123);// 不足八位,前面0补齐
printf(%-10d,1234);//左对齐</P>
<P>Printf("%f",(double)5+2);//类型强制转换
scanf:用户输入变量
scanf("%d", &a);//用户输入变量a的值。&为取地址符
scanf("%d,%d",&a,&b);//输入两个变量,用逗号隔开
%://取余运算
a=9%4;//结果为1
printf("%d",5%3);//结果为2</P>
<P>运算符:
+-*/:
+=,-=,*=, /=, %=;
a=a+1 a+=1,   b=b*5 b*=5,  c=c%3(取余) b%=3</P>
<P>++:自加一运算
--:自减一运算
a++;//先运算a,再自加一;a不能为常量
++a;//先自加一,再运算</P>
<P>int a=10
printf("%d",a--);先打印a的值,再自减一
printf("%d",--a);:先自减一,再打印a的值
 
逗号运算符:
int a,b=2;
a=(b=b+1,b=b+1,b=b+1);//逗号分隔表达示的作用,从左到右依次运算,只输出最后一个表达示的值。结果为5
printf("%d",a);</P>
<P>自动类型转换:
int a=10;
char b='a';
a=b;//这里将字符类型自动转换成整形类型赋予a值
printf("%d",a);</P>
<P>强制类型转换:
int a=10;
char b='a';
a=b;
printf("%d",(int)a);</P>
<P>条件运算符:
>,<,==,>=,<=,!=:</P>
<P>&&:与, 两边的条件都是真的时,整个条件才为真 条件1&&条件2
||:或, 两边的条件只要有一个满足,条件就为真 条件1||条件2
 !:非, 条件为假时,变为真,条件为真时,变为假  !(条件)</P>
<P>while:循环语句, 先判断条件,再执行语句,再判断条件
int a=1;
while(a<=100)
{
printf("%d",a);
a++;
}</P>
<P>do while:循环语句,先执行语句,再判断条件
char a;
do
{
  scanf("%c",&a);
}while(a<'A' || a>'z'); //||为条件或
printf("%c",(a-('z'-'Z')));//'z'-'Z'为asc2码的值</P>
<P>for:循环语句
for(初始化条件;条件;改变条件)
{
循环体;
}
执行顺序:初始化>条件>循环体>改变循环体>循环体
int a;
for(a=0;a<=100;a++)// a=0为初始化条件,a<=100为条件,a++为改变条件
{
printf("%2d",a);
if((a+1)%10==0)  //%为取余,==为条件运算符
{
printf("\n");
}
}</P>
<P>循环嵌套:循环语句中至少有一个循环语句
int a=0,b=0;
for(a=0;a<=5;a++)
{
for(b=0;b<=5;b++)
{
printf("*");
}
printf("\n");
}</P>
<P>if:条件判断语句
if(条件)//不加{},只控制第一条语句
{
执行体;
}</P>
<P>if-else:如果-否则
if(1+2>3)
print("结果为真");
else
printf("结果为假");</P>
<P>if-else if:如果-否则如果
int a;
scanf("%d",&a);
if(a>10)
printf("大于10");
else if(a>100)
printf("大于100");</P>
<P>(条件)?(语句1):(语句2);//条件为真时,执行语句1,为假时执行语句2
int a;
scanf("%d",&a);
a>10?printf("大于10"):printf("小于10");</P>
<P>continue;//停止当前循环,直接进入下一轮循环
break;//跳出当前循环</P>
<P>switch:条件判断语句
int a;
scanf("%d",&a);
switch(a)
{
case 1:printf("%d",a);break;
case 2:printf("%d",a);break;
case 3:printf("%d",a);break;
case 4:printf("%d",a);break;
default:printf("输入有误");break;
}</P>
<P>goto:跳转语句
goto a;//跳转到a标签
a:;//标签名</P>
<P>getchar:用户输入一个字符
int a;
a=getchar();
getch():用户输入一个字符,不回显,自动回车。
putchar('a');//获取一个字符,显示出来。</P>
<P>指针:变量前加*号
int a;
int *p=&a;/*设置一个为*p的指针,&为取地址符,&a为a在内存中的地址,
*p=&a为保存a的地址,p的类型要和a的类型一样*/
printf("%d",&a);打印a的地址
printf("%d",p);打印p的值
printf("d",&p);打印p的地址
printf("%d",*p);打印指针*p所对应的地址的值</P>
<P>一维数组:n[a],n下标,数组在内存中是连续保存的。
int a[5]={1,2,3,4,5};//定义一个有5个元素的数组,并赋值用逗号隔开,a为数组中的首地址
printf("%d",a[0]);//a[0]为数组中的第一个元素</P>
<P>二维数组:n[a][b],n中的a个元素,a中有b个元素。n为数组中的首地址,n[a]为数组中n[a]的首地址
int map[3][2]={{1,2},{11,12},{21,22}};//定义一个二维数组并赋值,第一项可以不填int map[][3]
printf("%d",map[2][1]);//map[2][1]为map[2]中的第1个元素,</P>
<P>void: 不返回一个类型
 
定义函数:
void bank();//在main函数前定义一个为void类型的函数,
int main()
{
bank();//调用函数
}
vodi bank()  //  在main函数后定义其功能,不加;号
{printf("*******");}//为函数定义功能。</P>
<P>
#include <windows.h>
system("dos命令");
system("cls");
system("start c:\\24.exe");// 路径要加两个\\</P>
<P>char str[10];//开辟一个10个字节空间的字符串数组。
char *p="<A href='http://www.zixue7.com";//'>www.zixue7.com";//</A>定义一个字符串指针
#include<string.h>
gets(str);输入一串字符,以回车结束,输入范围不能超过变量空间大小。
puts(str);当成功执行时,返回字符串。
scanf("%s",str);输入一串字符,以空格或回车结束。范围不能超过变量空间大小。
fgets(str,n,stdin);输入一串字符到缓冲区。以回车结束,输入只保留所定义的空间大小-1。即(n-1)
fputs(str,stdout);当成功执行时,返回字符串。
strlen(str);返回字符串的个数。
strcat(str1,str2);连接。。。把str2连接到str1后。连接后的字符串为str1
strcmp(str1,str2):比较两个字符串。从左到右比较,如果不等,返回一个非0的数。相等就返回0;
strncmp(str1,str2,n):比较两个字符串,。从左到右比较到n停止。如果不等,返回一个非0的数。相等就返回0;
strstr(str1,str):查找字符串中字符出现第一次。返回它的地址。否则返回 NULL
sprintf(str1,%s %s,str1,str2):把格式化的数据写入缓冲区。第一个参数str1为缓冲区。第二个参数为格式化类型,第三参数为</P>
<P>文件的操作:
FILE *fp=NULL;//定义一个文件类型的指针。
fp=fopen("c:\a.txt","w");打开文件。参数,路径,方式。w为以只读方式打开文件。若打开失败返回NULL
fclose(fp);关闭文件。参数为文件的指针。
EOF:文件结尾
feof(fp):文件结尾
putc('c',fp);写入字符到文件。
getc(p);从文件中得到一个字符。指针向后移一个字节。
fgets(str,n,fp):参数,缓冲区,大小,文件指针。以\n结束。将文件写入缓冲区。
fputs(str,fp):参数,缓冲区,文件。将数据写入文件。
rewind(fp);重置文件内部指针到开头。
fseek(fp,10,SEEK_SET):参数:文件句柄,移动(正为右移,负为左移),初始位置。设置文件指针的位置。
0 SEEK_SET:文件的开始
1 SEEK_CUR:当前位置
2 SEEK_END:文件结束
rewind(fp);//将指针初始化。
ftell(fp):获取文件当前指针位置。返回位置的值。
fpos_t len:定义一个文件类型的数值变量。
fgetpos(fp,&len):获取当前指针的位置。传给len,用来记录文件的大小。
fsetpos(fp,&len):设置指针的位置,len=5,将指针位置置与5。
fread(str,len,1,fp);参数,缓冲区,每次读取的字节数,次数,文件句柄。将数据写入到缓冲区。
fwrite(str,len,1,fp):参数,缓冲区,每次读取的字节数,次数,文件句柄。将数据写入到文件。
struct:结构体
struct peopel//在主函数前定义一个结构体名称。
{
int age;
int weight;
char name[10];
};
int main()
{
struct people p1={12,100,"clock"};//定义构结体变量并初始化
printf("%d,%d,%s",p1.age,p1.weight,p1.name);//用点号来标示变量。
}</P>
<P>struct people//定义一个结构体名称。
{
int age;
int weight;
char name[10];
}p1={12,100,"clock"};//定义构结体变量并初始化</P>
<P>struct
{
int age;
int weight;
char name[10];
}p1,p2,...;</P>
<P>typedef:在主函数前为类型定义一个别名
typedef int zhengshu;//将int 换成zhengshu</P>
<P>typedef struct person{int age;int height;char name;} person;//将结构体换名。
person p;</P>
<P>
union:联合。
union student
{
int name[10];
int age
} p;</P>
<P>enum:枚举。
enum color{red=100,bule=200,green=255}</P>
<P>位运算符  </P>
<P>C语言提供了六种位运算符:& 按位与| 按位或^ 按位异或~ 取反<< 左移>> 右移</P>
<P>1. 按位与运算 按位与运算符"&"是双目运算符。其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二进制补码) 00000001 (1的二进制补码)可见9&5=1。按位与运算通常用来对某些位清0或保留某些位。例如把a 的高八位清 0 , 保留低八位, 可作 a&255 运算 ( 255 的二进制数为0000000011111111)。
main(){int a=9,b=5,c;c=a&b;printf("a=%d\nb=%d\nc=%d\n",a,b,c);}</P>
<P>2. 按位或运算 按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。参与运算的两个数均以补码出现。例如:9|5可写算式如下: 00001001|0000010100001101 (十进制为13)可见9|5=13
main(){int a=9,b=5,c;c=a|b;printf("a=%d\nb=%d\nc=%d\n",a,b,c);}</P>
<P>3. 按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数仍以补码出现,例如9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12)
main(){int a=9;a=a^15;printf("a=%d\n",a);}</P>
<P>4. 求反运算 求反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。例如~9的运算为: ~(0000000000001001)结果为:1111111111110110</P>
<P>5. 左移运算 左移运算符“<<”是双目运算符。其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如: a<<4 指把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。</P>
<P>6. 右移运算 右移运算符“>>”是双目运算符。其功能是把“>> ”左边的运算数的各二进位全部右移若干位,“>>”右边的数指定移动的位数。 例如:设 a=15,a>>2 表示把000001111右移为00000011(十进制3)。 应该说明的是,对于有符号数,在右移时,符号位将随同移动。当为正数时, 最高位补0,而为负数时,符号位为1,最高位是补0或是补1 取决于编译系统的规定。Turbo C和很多系统规定为补1。
main(){unsigned a,b;printf("input a number: ");scanf("%d",&a);b=a>>5;b=b&15;printf("a=%d\tb=%d\n",a,b);}
请再看一例!
main(){char a='a',b='b';int p,c,d;p=a;p=(p<<8)|b;d=p&0xff;c=(p&0xff00)>>8;printf("a=%d\nb=%d\nc=%d\nd=%d\n",a,b,c,d);}</P>
<P> </P>
%f:浮点数占位符

0 0
原创粉丝点击