算法笔记学习总结——入门

小写字母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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值