- 循环
1.7744 问题- <math.h>中的floor()函数 表示向下取整。
Floor(0.5) == 0 , Floor(-1.1) == -2
| floor(x+0.5) 表示对x四舍五入 (变为整数)|
因为
1<= x <2 时 floor(x) == 1
1<=x+0.5<2 即 0.5<= x <1.5 时 floor(x + 0.5) == 1.
由此知 floor(x+0.5)起到的作用是四舍五入
- <math.h>中的floor()函数 表示向下取整。
- A.整数 不同位数的数字求法、前几位数求法、最后几位数求法
Eg:int n =123456789
前5位数求法:n /10000 (9-5)
最后5位数求法:n % 100000(5)
不同位数的数字求法:可以结合上面的两种方法算出来
B.补充:要计算只包含加法、减法和乘法的整数表达式除以正整数n的余数,可以在每步计算之后取对应n的余数,结果不变。(这么做可以防止乘法溢出)
Eg: 阶乘之和
未使用上述方法
- #include "stdafx.h"
- #include <time.h>
- int main(void)
- {
- const int MOD = 1000000;
- int i, j, n, S = 0;
- scanf("%d", &n);
- for (int i = i; i <= n; i + _ + )
- {
- int factorial = 1;
- for (int j = 1; j <= i; j++)
- {
- factorial = factorial * j ;
- }
- S = S + factorial;
-
- printf("%d\n", S%MOD);
- printf("Time used = %.2lf\n", (double)clock() / CLOCKS_PER_SEC);
- return 0;
- }
使用上述方法
- #include "stdafx.h"
- #include <time.h>
- int main(void)
- {
- const int MOD = 1000000;
- int i, j, n, S = 0;
- scanf("%d", &n);
- for (int i = i; i <= n; i + _ + )
- {
- int factorial = 1;
- for (int j = 1; j <= i; j++)
- {
- factorial = (factorial * j %MOD);
- }
- S = (S + factorial) % MOD;
-
- printf("%d\n", S);
- printf("Time used = %.2lf\n", (double)clock() / CLOCKS_PER_SEC);
- return 0;
- }
③对于clock() 和 CLOCKS_PER_SEC
printf("Time used = %.2lf\n", (double)clock() / CLOCKS_PER_SEC);
<time.h>中的 clock() 计时函数 :该程序从启动到函数调用占用CPU的时间
(输入时间、停顿时间等等都包括在内)
然后用clock()除以CLOCKS_PER_SEC 代表以"秒"为单位的时间。
可以使用echo(管道)去除输入所占时间
- 文件操作
①当把输入是否等于EOF作为判断条件时 需要人工输入EOF,而这个时候EOF 就是CTRL + Z (F6)
②将输入、输出数据保存在文件中(freopen fopen)
A:在main()函数的入口添加:
freopen("input.txt,","r",stdin) 键盘读入函数( 比如scanf() )从 input.txt 读入
freopen("output.txt","w",stdout) 屏幕输出函数( 比如printf() )写入output.txt
函数名:freopen
函数,以指定模式重新指定到另一个文件。模式用于指定新文件的访问方式。
头文件:stdio.h
1 |
FILE *freopen( const char *filename, const char *mode, FILE *stream ); |
1 |
FILE *freopen(const char * restrict filename, const char * restrict mode, FILE * restrict stream); |
mode:代表文件访问权限的字符串。例如,"r"表示"只读访问"、"w"表示"只写访问"、"a"表示"追加写入"。
返回值:如果成功,则返回该指向该输出流的文件指针,否则返回为NULL。
#include<stdio.h> int main() { int a, b; freopen("in.txt","r",stdin); /* 如果in.txt不在连接后的exe的目录,需要指定路径如D:\in.txt */ freopen("out.txt","w",stdout); /*同上*/ while (scanf("%d%d", &a, &b) != EOF) printf("%d\n",a+b); fclose(stdin); fclose(stdout); return 0; } |
绝对路径
:是从盘符开始的路径,形如C:\windows\system32\cmd.exe相对路径:是从当前路径开始的路径,假如当前路径为C:\windows要描述上述路径,只需输入system32\cmd.exe实际上,严格的相对路径写法应为.\system32\cmd.exe其中,.表示当前路径,在通道情况下可以省略,只有在特殊的情况下不能省略。
B:fopen 待更