【一年半以后复习】从头学习刘汝佳
2017-02-05 16:33
260 查看
一年半没有碰C了,真是非常想念。终于有时间了,忘得差不多了。现在跟着刘汝佳再从头学一遍吧
第一章
练习题
1、数据类型和数据输入格式
int和long都是用32位来存储最大值和最小值分别为2147483647(109), -2147483648;
long long 是用64位来存储最大值和最小值分别为9223372036854775807(1018),-9223372036854775808;
float的最大值和最小值分别为3.40282e+038(1038),1.17549e-038(10-38);
double的最大值和最小值分别为1.79769e+308(10308),2.22507e-308(10-308)
2、scanf("%lf%lf", &a, &b);在输入的两个数字之间加入无数空格,tab,回车都是可以的
3、正弦和余弦:SIN()和COS()函数的参数应该是弧度制的,M_PI是定义在math.h的常数。sin(M_PI / 2)得数是1.
第二章
例题
1、aabb的四位数,完全平方数——7744
2、3n+1
#include<stdio.h>
#include<math.h>
int main(){
int i, j, n, num;
scanf("%d", &n);
num = 0;
while( n != 1){
if( n % 2 == 0){
n = n / 2;
}
else{
n = 3 * n + 1;
}
num++;
}
printf("%d", num);
}在n = 987654321时溢出,此时n应该使用long long形式,但是涉及输入输出的问题。格式一般来说为"%lld"
3、π/4 = 1 + 1/3 - 1/5 + ...
#include<stdio.h>
#include<math.h>
int main(){
int i, j, k;
double a, b, c, pi = 0;
i = 1;
do{
if(i % 2){
pi += 1.0 / (i*2-1);
}
else{
pi -= 1.0 / (i*2-1);
}
i++;
}while(1.0/i > 1e-6);
printf("%.6f\n", pi*4);
}4、阶乘相加
#include<stdio.h>
#include<math.h>
#include<time.h>
int main(){
const int mod = 1000000;
int n, s = 0, i, j, fac, sum = 0;
scanf("%d", &n);
for( i = 1; i <= n; i++){
fac = 1;
for( j = 1; j <= i; j++){
fac = fac * j % mod; // 简化计算的方法,每步计算取余计算结果不同,不管是加还是乘
}
sum = (sum + fac) % mod;
}
printf("%d\n", sum);
printf("%.f\n", (double)clock() / CLOCKS_PER_SEC);//计算程序运行时间的方法
}5、数据统计
#include<stdio.h>
#include<math.h>
#include<time.h>
// 重定向版
int main(){
freopen("D:\\Dev-Cpp\\datain.txt","r",stdin); // 文件的位置
freopen("D:\\Dev-Cpp\\dataout.txt","w",stdout);
int x, num = 0, min= 1000, max = 0, mean, sum = 0;
while( scanf("%d", &x) == 1){
sum += x;
num++;
if( min > x) min = x;
if( max < x) max = x;
}
printf("%d %d %f", min, max, sum * 0.1 / num);
}
第一章
练习题
1、数据类型和数据输入格式
int和long都是用32位来存储最大值和最小值分别为2147483647(109), -2147483648;
long long 是用64位来存储最大值和最小值分别为9223372036854775807(1018),-9223372036854775808;
float的最大值和最小值分别为3.40282e+038(1038),1.17549e-038(10-38);
double的最大值和最小值分别为1.79769e+308(10308),2.22507e-308(10-308)
2、scanf("%lf%lf", &a, &b);在输入的两个数字之间加入无数空格,tab,回车都是可以的
3、正弦和余弦:SIN()和COS()函数的参数应该是弧度制的,M_PI是定义在math.h的常数。sin(M_PI / 2)得数是1.
第二章
例题
1、aabb的四位数,完全平方数——7744
#include<stdio.h> #include<math.h> int main(){ double k ; int i, j, s; for( i = 1; i < 10; i++){ for( j = 0; j < 10; j++){ s = 1100 * i + 11 * j; k = sqrt(s) ; if( k == (int)k ){ printf("%d\n", s); } } } return 0; }求不大于x的最大整数有函数floor(x),为了防止0.9999999当成0,用floor(x+0.5)表示四舍五入。
2、3n+1
#include<stdio.h>
#include<math.h>
int main(){
int i, j, n, num;
scanf("%d", &n);
num = 0;
while( n != 1){
if( n % 2 == 0){
n = n / 2;
}
else{
n = 3 * n + 1;
}
num++;
}
printf("%d", num);
}在n = 987654321时溢出,此时n应该使用long long形式,但是涉及输入输出的问题。格式一般来说为"%lld"
#include<stdio.h> #include<math.h> int main(){ int i, j, n, num; long long real; scanf("%d", &n); num = 0; real = n; //做一个接力就可以了 while( real != 1){ if( real % 2 == 0){ real = real / 2; } else{ real = 3 * real + 1; } num++; } printf("%d", num); }
3、π/4 = 1 + 1/3 - 1/5 + ...
#include<stdio.h>
#include<math.h>
int main(){
int i, j, k;
double a, b, c, pi = 0;
i = 1;
do{
if(i % 2){
pi += 1.0 / (i*2-1);
}
else{
pi -= 1.0 / (i*2-1);
}
i++;
}while(1.0/i > 1e-6);
printf("%.6f\n", pi*4);
}4、阶乘相加
#include<stdio.h>
#include<math.h>
#include<time.h>
int main(){
const int mod = 1000000;
int n, s = 0, i, j, fac, sum = 0;
scanf("%d", &n);
for( i = 1; i <= n; i++){
fac = 1;
for( j = 1; j <= i; j++){
fac = fac * j % mod; // 简化计算的方法,每步计算取余计算结果不同,不管是加还是乘
}
sum = (sum + fac) % mod;
}
printf("%d\n", sum);
printf("%.f\n", (double)clock() / CLOCKS_PER_SEC);//计算程序运行时间的方法
}5、数据统计
#include<stdio.h>
#include<math.h>
#include<time.h>
// 重定向版
int main(){
freopen("D:\\Dev-Cpp\\datain.txt","r",stdin); // 文件的位置
freopen("D:\\Dev-Cpp\\dataout.txt","w",stdout);
int x, num = 0, min= 1000, max = 0, mean, sum = 0;
while( scanf("%d", &x) == 1){
sum += x;
num++;
if( min > x) min = x;
if( max < x) max = x;
}
printf("%d %d %f", min, max, sum * 0.1 / num);
}
#include<stdio.h> #include<math.h> #include<time.h> int main(){ //fopen版 FILE *fin, *fout; fin = fopen("D:\\360安全浏览器下载\\Dev-Cpp\\datain.txt","rb"); fout = fopen("D:\\360安全浏览器下载\\Dev-Cpp\\dataout.txt","wb"); int x, num = 0, min= 1000, max = 0, mean, sum = 0; while( fscanf(fin, "%d", &x) == 1){ sum += x; num++; if( min > x) min = x; if( max < x) max = x; } fprintf(fout, "%d %d %f %d", min, max, sum * 0.1 / num, num); fclose(fin); fclose(fout); }
相关文章推荐
- Seafile学习(八) Ceph深入理解(这么多 我感觉够了 以后不需要学Ceph其他内容了 复习这个就够了)
- 标准C++复习&学习笔记
- 新的一年里要做的几件事(养成写日志的习惯,学习linux,java方面还要多学习)
- 今天开通CSDN BLOG 以后多多跟大家学习
- 【学习指南】高考考生要远离三个复习误区
- 实习结束了,临走还捞了一票...和Jason聊了许多关于以后在校园技术实践以及学习的方法,宝贵经验,记录下来。
- Hibernate的一个多表例子.仅供今后学习复习参考.还请指教.
- 在规划新一年的学习计划,大家帮着出点主意,谢谢!
- 6月30号合同就到期啦!所以为了顺利找到一份好工作,制定一个复习和学习计划!
- 【学习指南】高考考生要远离三个复习误区
- [转清华]在200#学习了一年,生活了一年……王一波
- 关于学习java一年的学习体会
- 学习SYMBIAN,也再复习下内存管理的知识。
- 09月01日学习杂记(复习代理的知识)
- UML学习笔记(二):复习面向对象的一些基本概念
- 准备参加SCJP考试,所以从现在开始准备从头开始认真复习一遍Java。
- 从头学习DirectDraw
- 开通了自己的博客,以后要好好的学习与工作
- 从头开始学习MFC~
- 从头再学习JAVA