小写字母ASCII码比大写字母大32
符号常量和const常量
#define pi 3.14 //末尾不加分号,且是原封不动替换
const double pi=3.14 //一旦确定值之后无法改变
const double pi =acos(-1.0)
输入输出问题
#include <stdio.h>
scanf("%lf",&a);
printf("%f",a);
scanf("%s",str); //字符串不需要&,除%c以外都是以空格和换行符为结束标志
scanf("%c",str); //%c格式可以读入空格和换行
printf("%7.2f",a); //宽度为7,double型保留两位小数
getchar(); //可识别换行符
putchar(); //用来输出单个字符
math函数
#include <math.h>
fabs(double x); //取绝对值
floor(double x); //下取整
ceil(double x); //上取整
if
if(n!=0)==if(n)
if(n==0)==if(!n)
字符串
char str[15] = {'g','o','o','d','','m','o','r','n','i','n','g'};
char str[15] = "good morning" //仅限于初始化
gets(str); //识别换行符作为结束
puts(str);
//字符数组的末尾有一个空字符\0,puts和printf识别空字符为结尾,结束符ASCII码为0,,占用一个字符位,所以定义时数组长度要多1,空字符和空格不一样,空格ASCII码为32
#include <string.h>
strlen(str) //返回str中第一个空字符前的字符长度
strcmp(str1,str2) //字典序str1<str2返回负数、str1==str2返回0,str1>str2返回正数
//字典序:aaaa<aab
strcpy(str1,str2) //将str2赋值到str1,包括结束符
strcat(str1,str2) //将str2接到str1之后
#include <stdio.h>
int main(){
int n;
char str[100] = "123";
sscanf(str,"%d",&n); //将str写入n,格式与n有关
printf("%d",n);
return 0;
}
int main(){
int n=233;
char str[100];
sprintf(str, "%d", n); //将n写入str,格式与n有关
printf("%s", str)
字符串数组(二维数组)的输入输出
int main(){
char a[3][10]; //{"BeiJing","ShangHai","TianJin"};
for(int i=0;i<3;i++)
gets(a[i]);
for(int i=0;i<3;i++)
printf("%s",a[i]);
}
函数
#include <stdio.h>
#include <string.h>
void change(int x)
{
x=10;
x=x+1;
}
int main()
{
int x; //无定义为0
change(x); //change修改的是x的副本,main中的x不变
printf("%d",x); //输出结果为0
return 0;
}
指针
p+1是指p所指的int型变量的下一个int型变量地址,实际上是跨越了4B,因为一个int型变量占4B。
基类型(地址类型)必须和存储数据类型一致。
a+i~&a[i], *(a+i)~a[i]
#include <stdio.h>
void swap(int* a,int* b)
{
int temp=*a;
*a=*b;
*b=temp;
}
int main()
{
int a=1,b=2;
int *p1=&a,*p2=&b;
swap(p1,p2); //只有在获取地址的情况下对元素操作,才能真正的修改变量
printf("a=%d,b=%d",*p1,*p2); //等价于printf("a=%d,b=%d",a,b);
return 0;
}
引用
对引用变量的操作就是对原变量的操作
#include <stdio.h>
void change(int &x) //这里x引用a,对x的修改就是对a的修改
{
x=1;
}
int main()
{
int a=10;
change(a); //修改的就是a的值
printf("%d",a); //输出1,若没有引用输出10,因为a是局部变量,修改的是a的副本,
//且只在change函数内部生效,change函数结束则销毁
return 0;
}
浮点数的比较
const double eps=1e-8;
const double pi=acos(-1.0);
#define Equ(a,b) ((fabs((a)-(b)))<(eps));
#define More(a,b) (((a)-(b))>(eps));
#define Less(a,b) (((a)-(b))<(-eps));
#define MoreEqu(a,b) (((a)-(b))>(-eps));
#define LessEqu(a,b) (((a)-(b))<(eps));
多点测试
while(scanf("%d %d",&a,&b)!=EOF)
while(gets(str)!=NULL)