算法入门总结(三)—— C语言基础

C语言历史悠久,与底层交互的实现较为方便,在上个时代,C语言在编程界大放异彩,如今虽辉煌不再,但作为现代高级编程语言的鼻祖与算法竞赛的首选语言,有必要先了解一下它。


C语言格式化输出—— printf

格式字符

%d:十进制有符号 int 型

%u:十进制无符号 int 型

%f:小数形式(6位)float、double 型

%e:标准指数形式float、double 型

%c:单字符 char 型

%ld:十进制有符号 long 型

%lu:十进制无符号 long 型

%mf:m > 0:右对齐,左补空格;

            m < 0:左对齐,右补空格

%0mf:将补充字符空格置换为0

%.nf:输出 n 位小数的浮点数

%m.nf:%mf + %.nf(特殊地,若 n == 0,则不输出小数位,个位数四舍五入,且保证 m 个宽度)

 

C语言格式化输入—— scanf

格式字符

%nd:输入 n 位 int 型

%f:输入 float 类型(可以使用%mf,但不可使用%.nf)

%c:输入一位 char 型(包括空白符)

%lf:输入 double 型

%ld:输入 long int 型

%*d:跳过一个 int(如scanf("%2d%*2d%2d", &a, &b); 输入123456,则 a 为12,b 为56)

以上输入需在变量前加 & 符号以取地址。

%s:输入一串字符,遇到空白字符会停下来

该输入无需添加 & 符号,因为字符串变量本身代表字符数组首地址。

在做算法题时,常用的一种多数据输入方式为:

while(scanf("%d %c", &n, &c) == 2 && n) {}

其中,2 为输入变量的个数,此语句可判断有数据输入且 n 不为0,“==2”也可换为“!= EOF”

 

单字符输入输出

a = getchar(); <=> scanf("%c", &a);

b = putchar(); <=> printf("%c", b);

其中,getchar() 与 putchar() 运行速度快,而 scanf 与 print 对格式控制较好,使用更灵活

 

随机函数 rand()

产生 [0, RAND_MAX] 之间的随机整数

RAND_MAX 在 stdlib.h 中定义为不大于双字节整数的最大值32767,使用 rand() 函数前需声明 #include <stdlib.h>

要产生 [0, 100) 的随机数,只需令 rand() % 100 即可

P.S. rand() 函数生成随机数的顺序每次是不变的,应使用随机数种子函数 srand(int),种子参数可以使用系统时间 time(),故最终形式如下:

#include <cstdio>
#include <stdlib.h>
#include <time.h>
int main() {
    int n;
    srand(time(NULL));
    n = rand()%100; //生成[0,100) 的整数
    return 0;
}

 

程序计时 clock()

#include <cstdio>
#include <time.h>
clock_t start, stop; //程序开始与结束的标志
double duration; //测试部分运行的秒数
int main() {
    //不在测试范围的准备工作写在 clock() 调用之前

    start = clock(); //clock()函数返回程序从开始运行到此处时的机器时钟打点数
    Function();
    stop = clock(); //clock()函数返回类型为clock_t(clock tick)
    duration = ((double)(stop-start)) / CLK_TCK; //CLK_TCK为机器时钟每秒打点数,在头文件 <time.h> 中定义

    //不在测试范围的准备工作写在 clock() 调用之后
    return 0;
}

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值