c语言复习

KilluaZoldyck 2020-01-05

常量

1. 常量

1整形常量赋值给布尔型时自动转化为true或false(文件扩展名必须为.cpp否则加上头文件)

  1.    2整形常量赋值给布尔型时自动转化为true或false(文件扩展名必须为.cpp否则加上头文件)

   3

  1. 常量两种定义方式:

      #define ADD(a,b) ((a)+(b))  //每个都加括号防止出错

    const double PI =3.14;//记得不要漏分号 主推荐

2. 格式化输出

%md以m位进行右对齐
%0md以m位进行右对齐,不足的地方补0
%.mf,四舍六入五成双,保留m位小数,四舍六入用round

#include<stdio.h>
#include<math.h>
int main()
{
    
    printf("%.2f,%.2f\n",3.125,3.135);//四舍六入五成双 
    printf("%.2f,%.2f\n",round(3.135),round(3.125));// 四舍五入到整数部分 
    printf("%.2f,%.2f\n",round(3.135*100+0.5)/100,round(3.125*100+0.5)/100);//四舍五入到小数后2两位 
    return 0;
    
}

结果为:

3.13,3.13
3.00,3.00
3.14,3.13

3. 常用函数

1.math类

四舍五入到整数位:double round(double x)
向下取整:floor(double x)
向上取整:ceil(double x)
求绝对值:fabs(double x)
指数函数:double(double a,dpuble b)
以e为底的对数:double log(double x)
三角函数:sin(double x),cos(double x),tan(double x)
asin(double x),acos(double x),atan(double x)

2.其他

memset--数组中每个元素赋相同值0或者-1(速度快)
memset(数组名,值,sizeof(数组名))
注意点:加头文件 string.h,赋除了0和-1之外的其他值用fill函数 ,实践表明用memset赋值1出错

4. 字符数组

1.注意点:

  • 数组较大要将其定义在函数外面,否则可能会异常退出
  • 字符数组可以通过直接赋值字符串来初始化,但是仅限于初始化,其他位置不允许直接赋值字符串
  • gets,sanf赋值字符数组末尾自动添加\0;因此开数组要比实际长度多1

2.几种常见字符处理方法

  • scanf对字符类型有%c,%s两种,%c可以识别空格和换行并读入,而%s以空格和换行为读入的结束标志
  • getchar(),putchar()输入输出当个字符,可以识别换行符
  • 3ets(),puts()用来输入一行字符串,可以包含空格,以换行符\n作为结束输入标志,注意!!!

    (因此在使用gets之前先使用了scanf(),要用getchar()先接收换行符)

#include<stdio.h>
int main()
{

char b[10];
char a[10];
scanf("%s",a);//注意无取地址符
getchar();//如果没有此句,输入a回车键之后程序结束 
gets(b);
puts(a);
puts(b);
return 0;

}

3.处理字符串相关函数

  • strlen()
  • strcmp()字符串比较
  • strcpy(b,a),将a复制给b
  • strcat(a,b)b连接到a后面
  • scannf与sprintf
#include<stdio.h>
int main()
{
    
    char str1[20]="2010:1.50,happy";
    char str2[20];
    int a;
    double b;
    char s[10];
    sscanf(str1,"%d:%lf,%s",&a,&b,s);//从左至右,将str中的字符按格式写到a,b,c中 
    printf("%d %.2f %s\n",a,b,s);
    sprintf(str2,"%d:%.2f,%s",a,b,s);//从右至左,将a,b,s中的内容按格式写道str2中 
    puts(str2);
    return 0;
    
}

5. 函数,指针,引用

1函数:

数组作为参数时,在函数中对数组元素的修改相当于对原数组元素的修改
数组可以作为参数,但是不可以作为返回类型出现


2指针:

int *p ;*是类型的一部分,p才是变量名,
a+i等同于a[i]

3引用

#include<stdio.h>
void change(int &a,int &b)
{
    int c;
    c=a;
    a=b;
    b=c;
}
int main()
{
    int a=1,b=2;
    change(a,b);
    printf("a=%d ,b=%d",a,b);
    return 0;
    
}

6. 浮点数比较

//按照区间图理解记忆
#include<stdio.h>
#include<math.h>
const double eps=1e10-8;
const double pi=acos(-1.0);
#define Equ(a,b) ((fabs((a)-(b)))<(eps))//a==b
#define Mor(a,b) (((a)-(b))>(eps))//a>b
#define Les(a,b) (((a)-(b))<(-eps))//a<b
#define MorEqu(a,b) (((a)-(b))>(-eps))//a>=b
#define LesEqu(a,b) (((a)-(b))<(eps))//a<=b

7. 多组输入输出

  • while(scanf("%s",str)!=EOF){}
  • while(get(s)!=NULL){}
  • while(scanf("%s",str)!=EOF)

       {

if(a==0&&b==0) break;

}

  • while(scanf("%s",str)!=EOF,a||b)

{..}

相关推荐