2018-10-19-16:25:34

随学笔记

小计:

<1>: for语句   [for(初始化;条件;调整) ]   执行时先完成赋值操作,判断满足条件后执行循环体,之后的每次执行都是先完成调整操作,判断满足条件后继续执行循环体,不满足条件就退出循环。

 1 #include <cstdio>
 3 #include <iostream>
 4 using namespace std;
 5
 6 int main()
 7 {
 8     for(int i=0;i<0;i++)
 9       printf("%d\n",i);
10     return 0;
11 }
12 //程序无输出内容

<2>: 判断一个数是否为完全平方数

  利用恒等式1+3+5+7+···+2*n-1=n*n;

 1 #include <cstdio>
 2 #include <iostream>
 3 using namespace std;
 4 bool isSqrt(int n);
 5
 6 int main()
 7 {
 8     int n;
 9     while(~scanf("%d",&n)){
10       if(isSqrt(n)){
11         printf("isSqrt\n");
12         continue;
13       }
14       printf("isn't sqrt\n");
15     }
16     return 0;
17 }
18 bool isSqrt(int n){
19   for(int i=1;n>0;i+=2)
20     n-=i;
21   return 0==n;
22 }

<3>: floor函数:其功能是“向下取整”,或者说“向下舍入”,即取不大于x的最大整数(与“四舍五入”不同,下取整是直接取按照数轴上最接近要求值的左边值,即不大于要求值的最大的那个值。

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <iostream>
 4 using namespace std;
 5
 6 int main()
 7 {
 8     double c=3.3;
 9     printf("%.1f",floor(c));
10     return 0;
11 }

//程序输出为3.0//double floor(double n);//floor()函数头文件为#include<cmath>

<4>: 浮点数运算可能存在误差,浮点数比较时要考虑到浮点误差。

 1 #include <cstdio>
 2 #include <cmath>
 3 #include <iostream>
 4 using namespace std;
 5 bool isSqrt(int n);
 6
 7 int main()
 8 {
 9     int n;
10     while(~scanf("%d",&n)){
11       if(isSqrt(n)){
12         printf("isSqrt\n");
13         continue;
14       }
15       printf("Isn't sqrt\n");
16     }
17     return 0;
18 }
19 bool isSqrt(int n){
20     if(sqrt(n)==floor(sqrt(n)+0.5))//浮点运算误差较小,不会超过0.5
21       return true;
22     return false;
23 }

<5>: while语句和do-while语句用法相同,唯一的区别是while先判断条件是否成立,成立即开始循环,do-while则是先做一次再判断是否成立,随后便和while一样运作。

可以利用do-while的这一特性解决一些特殊的问题(循环终止判断在计算之后的情况很适用于do-while语句)。

例如求integer的位数:

 1 #include <cstdio>
 2 #include <iostream>
 3 using namespace std;
 4
 5 int main()
 6 {
 7     int n;
 8     while(~scanf("%d",&n)){
 9       int cnt=0;
10       do{
11         n/=10;
12         cnt++;
13       }while(n);//do-while语句避免了需要考虑n==0的情况
14     printf("%d\n",cnt);
15     }
16     return 0;
17 }

<6>: int_32, int_64, uint_32,uint_64(C语言数据类型)

    C99规定int至少是16位,却没有具体的值,所以C99规定了以上数据类型,算法竞赛平台一般相对稳点,int为32位数。

 1 #include <cstdio>
 2 #include <iostream>
 3 using namespace std;
 4
 5 int main()
 6 {
 7 /*
 8 typedef int  int32_t;  typedef unsigned int32_t uint32_t
 9 typedef long long int  int64_t;  typedef unsigned long long int uint64_t;
10 */
11   printf("%d\n",sizeof(int32_t));//put 4
12   printf("%d\n",sizeof(int64_t));//put 8
13 /*
14 int32_t    -2147483648~2147483647
15 uint32_t 0~4294967295
16 int64_t -9223372036854775808~9223372036854775807
17 uint64_t  0~18446744073709551615
18 */
19     return 0;
20 }

<7>: C语言中long long int 在linux下输入格式为%lld,在windows下输入为%I64d。

<8>: 函数clock()返回程序目前为止的运行时间,这个时间除以常数CLOCKS_PER_SEC之后得到的值以秒为单位。

 1 #include <cstdio>
 2 #include <ctime>
 3 #include <iostream>
 4 using namespace std;
 5
 6 int main()
 7 {
 8     printf("Time is %.2f S\n",(double)clock()/CLOCKS_PER_SEC);
 9     return 0;
10 }

<10>: scanf函数在遇到空格,回车换行时会自动结束。

<11>: C语言文件读写。

   函数名:freopen

声明:FILE *freopen( const char *path, const char *mode, FILE *stream );
所在文件: #include<cstdio>
参数说明:
path: 文件名,用于存储输入输出的自定义文件名。
mode: 文件打开的模式。和fopen中的模式(如r-只读, w-写)相同。
stream: 一个文件,通常使用标准流文件。
返回值:成功则返回一个path所指定文件的指针;失败返回NULL。(一般可以不使用它的返回值)
功能:实现重定向,把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流,默认为键盘;stdout是标准输出流,默认为屏幕;stderr是标准错误流,一般把屏幕设为默认。 
 1 #include <cstdio>
 2 #include <iostream>
 3 using namespace std;
 4
 5 int main()
 6 {
 7     int a,b;
 8     freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取       "r":为了输入数据,只读
 9     freopen("out.txt","w",stdout); //输出重定向,输出数据将保存在out.txt文件中    "w":为了输出数据,只写
10     while(~scanf("%d %d",&a,&b))
11       printf("%d\n",a+b);
12     fclose(stdin);//关闭重定向输入
13     fclose(stdout);//关闭重定向输出
14     return 0;
15 }
//重定向使用完毕后记得要取消重定向

习题2-5 分数化小数

思路:分步输出

 1 #include <cstdio>
 2 #include <iostream>
 3 using namespace std;
 4
 5 int main()
 6 {
 7     int a,b,c,Case=0;
 8     while(~scanf("%d %d %d",&a,&b,&c)&&(a|b|c)){
 9       printf("Case %d : %d.",++Case,a/b);
10       while(--c>0){
11         a*=10;
12         printf("%d",a/b);
13         a%=b;
14       }
15       a*=10;
16       printf("%d\n",a/b>5?(a/b+1):(a/b));
17     }
18     return 0;
19 }

习题2-6 排列

简单将每一位初始化为1,最后将各位相加结果为9即输出。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <iostream>
 4 using namespace std;
 5
 6 int main()
 7 {
 8     int index[10];
 9     for(int i=123;i<=321;i++){
10       memset(index,0,sizeof(index));
11       index[i/100]=1;
12           index[i/10%10]=1;
13           index[i%10]=1;
14           int j=i*2;
15           index[j/100]=1;
16           index[j/10%10]=1;
17           index[j%10]=1;
18           int k=i*3;
19           index[k/100]=1;
20           index[k/10%10]=1;
21           index[k%10]=1;
22       int sum=0;
23       for(int h=1;h<10;h++)
24           sum+=index[h];
25       if(sum==9)
26         printf("%d\t%d\t%d\n",i,j,k);
27     }
28     return 0;
29 }

转载于:https://www.cnblogs.com/bianjunting/p/9817171.html

第二章:循环结构程序设计相关推荐

  1. 第二章 循环结构程序设计

    第二章 笔记 aabb 阶乘之和 水仙花数 韩信点兵 倒三角形 子序列的和 分数化小数 排列 扩展 笔记 1.函数 double floor(double x) 向下取整,返回不超过x的最大整数:函数 ...

  2. 《算法竞赛入门经典》 第二章 循环结构程序设计 习题

    注:这里为了便于测试,直接使用stdin,stdout进行输出,没有进行文件读写操作. 习题2-1 位数(digit) 输入一个不超过10^9的正整数,输出它的位数.例如12735的位数是5.请不要使 ...

  3. c语言第四章循环程序设计,C语言程序设计教程第4章-循环结构程序设计

    <C语言程序设计教程第4章-循环结构程序设计>由会员分享,可在线阅读,更多相关<C语言程序设计教程第4章-循环结构程序设计(42页珍藏版)>请在人人文库网上搜索. 1.C语言程 ...

  4. 沈阳师范大学大一上册C语言PTA题目集以及答案(第三章 循环结构程序设计 编程题篇)

    沈阳师范大学大一上册C语言PTA题目集以及答案(第三章 循环结构程序设计 编程题篇) 7-1 求阶乘序列前N项和 (15分) 本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和. 输入格式 ...

  5. c语言设计第六章答案,c语言第六章 循环结构程序设计(习题册答案)

    第六章 循环结构程序设计 基础练习(A) 一.选择题 1.C语言中while和do-while循环的主要区别是(A). A) do-while的循环体至少无条件执行一次 B) while的循环控制条件 ...

  6. 第6章 循环结构程序设计

    第6章 循环结构程序设计     声明:文中观点仅代表个人,其中文字.图片未经本人许可,不得部分或全部转载,违者所造成影响后后果自负!联系本人方式:80368704@qq.com QQ:8036870 ...

  7. c语言如何实现一只蜗牛爬的循环,[工程科技]第五章 循环结构程序设计c语言程序设计.ppt...

    [工程科技]第五章 循环结构程序设计c语言程序设计 第5章 循环结构程序设计 while语句 while语句 do while语句 do while语句 do while语句 do while语句 d ...

  8. C语言总结(第5章循环结构程序设计)

    第5章循环结构程序设计 结构化程序设计的3种基本结构: 循环结构 顺序结构 选择结构 5.2用while语句实现循环 while循环和for循环的区别_FutureForXHF的博客-CSDN博客_w ...

  9. C语言程序设计第五章循环结构程序设计总结

    5.1 引例 例5.1计算人口有规律增长的数量. 1.文字描述 2.流程图 3.代码及运行结果 例5.2使用while循环有规律累加值为止的编写程序 1.文字描述 2.流程图 3.代码及运行结果 . ...

  10. 第五章 循环结构程序设计习题(2)

    目录 3.阅读程序题. (20)文字 (20)代码 (20)运行结果 4.完善程序题. (5)文字 (5)代码 (5)运行结果 ​ (6)文字描述 (6)代码 (6)运行结果 (8)文字描述 (8)代 ...

最新文章

  1. Oracle字符集的查看查询和Oracle字符集的设置修改
  2. Spring Boot中使用MongoDB数据库
  3. python加载html表格数据,使用python 3.6获取html表格行数据美丽的汤
  4. Lindley equation
  5. python多分支结构实例_JS优化多分支结构(经典)
  6. 李洋疯狂C语言之有关“you are come from shanghai”逆序(二)
  7. 服务网关zuul之二:过滤器--请求过滤执行过程(源码分析)
  8. C#LeetCode刷题-动态规划
  9. java 状态机_Java 数据持久化系列之池化技术
  10. PostgreSQL的backuplabel file 初步学习
  11. 如何删除oracle软件,如何用静默方式删除oracle软件
  12. CentOS下通过yum安装svn及配置
  13. html屏幕共享,屏幕共享
  14. xp系统怎样安装传真服务器,ghost xp安装传真服务教程
  15. Ubuntu Linux
  16. 推荐一个可以连gmail的邮箱
  17. 从Sklearn Bunch对象到Pandas DataFrame对象的转换
  18. bitbucket配置_用Bitbucket搭建博客初探
  19. 高仿滴滴打车 android,仿滴滴出行页面Demo
  20. Java io流 解压缩多个文件 损坏问题解决

热门文章

  1. java异常_深入理解java异常处理机制
  2. UGUI 在面板经常使用的表格布局制作
  3. php为什么发送不到sql,PHP-为什么我的Ajax无法执行我的SQL查询?
  4. arm linux 识别新硬盘_想玩树莓派却不会Linux?能装Windows的树莓派来了
  5. Java线程状态转换
  6. [渝粤教育] 江西财经大学 实用英语演讲 参考 资料
  7. 23种设计模式(十九)数据结构之组合模式
  8. 经典机器学习系列(七)【聚类分析】
  9. 上拉电阻与下拉电阻介绍
  10. 求解偏微分方程开源有限元软件deal.II学习--Step 8