第二章 数组
  一,定义:
  数组是有序数据的结合,同一数据类型
  整型数组     int arr[10]={0,1,2,4,5,6,7,8,9};
  字符数组     char str[6]={'h','e','l','l','o','\0'};  \0是结束标志,如果不加,系统会自动给后面补个\0
  字符串    char str[]="hello";
 
  在数组中,
         指针-指针得到是两个地址之间元素的个数。
       sizeof(数据名)表示的是数组整个的大小。
        其余情况都指数组首元素大小
  关于字符串的函数:
 
  p1为原数组,p为目标数组
  strcpy(p, p1) 复制字符串  
  strncpy(p, p1, n) 复制指定长度字符串 
  strcat(p, p1) 附加字符串 
  strncat(p, p1, n) 附加指定长度字符串 
  strlen(p) 取字符串长度 
  strcmp(p, p1) 比较字符串 
  strcasecmp忽略大小写比较字符串
  strncmp(p, p1, n) 比较指定长度字符串 
  strchr(p, c) 在字符串中查找指定字符 
  strrchr(p, c) 在字符串中反向查找 
  strstr(p, p1) 查找字符串 
   二,比较经典的问题
  2.计算礼炮声响次数
            在海军节开幕式上,有A、 B、C 三艘军舰要同时开始鸣放礼炮各 21 响。已知A 舰每隔 5秒放 1 次,B 舰每隔6秒放 1 次,C 舰每隔7     秒放1 次,假设各炮手对时间的掌握非常准确。
  请编程计算观众总共可以听到几次礼炮声。
 
  分析:三个数组,分别存A,B,C三艘军舰要鸣放的礼炮的时间 因为同时开始鸣炮,如A共需要20*5=100秒,B共需要21*6=120秒,C共需要21*7=140秒
       a[0]=1;a[5]=1;a[10]=1;...a[100]=1;...
       b[0]=1;b[6]=1;b[12]=1;...b[120]=1;...
       c[0]=1;c[7]=1;c[14]=1;...c[140]=1;...
  初始化完毕后,
     三个数组,分别存放a与b,b与c,a与c相与1的元素
     已知arr1[4]={0,30,60,90}                 
        arr2[3]={0,42,84}            21*3-4-3-3+1
          arr3[3]={0,35,70}             
          
int main()
{
    int a[141]={0};
    int b[141]={0};
    int c[141]={0};
    for(int i=0;i<101;i++)
    {
         if(i%5==0)
         {    a[i]=1; }
    }
    for(int i=0;i<121;i++)
    {
         if(i%6==0)
         {    b[i]=1; }
    }
    for(int i=0;i<141;i++)
    {
         if(i%7==0)
         {   c[i]=1; }
    }
    int sum=21;
    int count=0;
    for(int i=0;i<141;i++)
    {
    if((a[i]==b[i]&&a[i]==1)||(b[i]==c[i]&&b[i]==1)||(a[i]==c[i]&&c[i]==1))
         {    count++; //8 }
    }
    printf(" 共可以听到炮声 :%d响\n",sum*3-2-count);//-2是因为从第二项算起,开始时三响应该减去两响
    return 0;
}
这是当时做这个题的时候发现,虽然答案出来了,但是总是觉得那块地方不对头,很麻烦,,果然,打印出来结果是60,而正确答案应该是54.。。。。。。。。。。。。然后再上网查了一下,便有了下文
 
经典作答!!!!
int main()
{
     int a=0;
     int b=0;
     int c=0;
     int count=0;
     while(a <= 5*20||b <=6*20||c <=7*20)
    {   
       if(a%5==0||b%6==0||c%7==0)
         { 
         count++; 
       }
         if(a<=5*20)
         {  
         a++;
        }
         if(b<=6*20)
         { 
         b++;
        }
         if(c<=7*20)
         { 
         c++;
        }    
     }
    printf( "%d\n",count);
      return 0;
}
当时乍一看确实不是很好理解,但慢慢也发现了一些味道,while循环先判断是否满足还有礼炮正在工作,循环内第一个if语句则是记录如果有一个数,最少能被5,6,7这三个数中的一个整除,则记录加一
意思是第一个if解决的问题是:如果炮响了,不管是谁放的,count先加一
后面的if就是考虑是谁放炮的问题了,谁放的,++一次,再到while循环,直到最后一次炮放完了。

C语言学习笔记二的更多相关文章

  1. Go语言学习笔记二: 变量

    Go语言学习笔记二: 变量 今天又学了一招如何查看go的版本的命令:go version.另外上一个笔记中的代码还可以使用go run hello.go来运行,只是这种方式不会生成exe文件. 定义变 ...

  2. 【GO】GO语言学习笔记二

    基本类型: 布尔型:boolean 整型:int8,byte,int16,int,uint,uintptr等 浮点型:float32,float64 复数类型:complex64,complex128 ...

  3. Go语言学习笔记(二) [变量、类型、关键字]

    日期:2014年7月19日 1.Go 在语法上有着类 C 的感觉.如果你希望将两个(或更多)语句放在一行书写,它们 必须用分号分隔.一般情况下,你不需要分号.   2.Go 同其他语言不同的地方在于变 ...

  4. [C语言学习笔记二] extern 函数的用法

    extern 用来定义一个或多个变量.其后跟数据类型名和初始值.例如: extern int a =10 它与 int,long long int,double,char的本质区别,在于 extern ...

  5. C语言学习笔记二---数据类型运算符与表达式

    一.C的基本语法单位 1.标识符:有效长度:31(DOS环境下) 2.关键字:main不是 3.分隔符:空格符,制表符,换行符,换页符 4.注释符:a./*.....*/   b.// 二.C的常用输 ...

  6. Go语言学习笔记十二: 范围(Range)

    Go语言学习笔记十二: 范围(Range) rang这个关键字主要用来遍历数组,切片,通道或Map.在数组和切片中返回索引值,在Map中返回key. 这个特别像python的方式.不过写法上比较怪异使 ...

  7. HTML语言学习笔记(会更新)

    # HTML语言学习笔记(会更新) 一个html文件是由一系列的元素和标签组成的. 标签: 1.<html></html> 表示该文件为超文本标记语言(HTML)编写的.成对出 ...

  8. AJax 学习笔记二(onreadystatechange的作用)

    AJax 学习笔记二(onreadystatechange的作用) 当发送一个请求后,客户端无法确定什么时候会完成这个请求,所以需要用事件机制来捕获请求的状态XMLHttpRequest对象提供了on ...

  9. NumPy学习笔记 二

    NumPy学习笔记 二 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.<数学分 ...

随机推荐

  1. 懒加载(getter\setter理解)

    为什么要用懒加载 1.首先看一下程序启动过程:(如图) 会有一个mian的设置,程序一启动会加载main.storyboard main.storyboard又会加载箭头所指的控制器 控制器一旦加载, ...

  2. HTML组成与语法

    http://blog.csdn.net/niushitang/article/details/8230014 <HTML>   <HEAD>       <TITLE& ...

  3. ROC & AUC笔记

    易懂:http://alexkong.net/2013/06/introduction-to-auc-and-roc/ 分析全面但难懂:http://mlwiki.org/index.php/ROC_ ...

  4. web前端基础知识-(六)Django基础

    上面我们已经知道Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了ORM.模型绑定.模板引擎.缓存.Sessi ...

  5. XPath 学习二: 语法

    XPath 使用路径表达式来选取 XML 文档中的节点或节点集.节点是通过沿着路径 (path) 或者步 (steps) 来选取的. 下面列出了最有用的路径表达式: 表达式 描述 nodename 选 ...

  6. effective java 学习心得

    目的 记录一下最主要学习心得,不然凭我这种辣鸡记忆力分分钟就忘记白看了... 用静态工厂方法代替构造器的最主要好处 1.不必每次都创建新的对象 Boolean.valueOf Long.valueOf ...

  7. 移动开发框架剖析(二) Hammer专业的手势控制

    浏览器底层并没有给元素提供类似,单击,双击,滑动,拖动这些直接可以用的控制接口,一切的手势动作都只能通过模拟出来.移动端浏览器唯一给我们提供的就只是mousedown -> mousemove ...

  8. 使用Cocos2d-x实现微信“天天爱消除”炫耀button特效

    引言Cocos2d-x引擎中有很多Action,这样可以方便的让开发者调用相应的Action去完成一些动作,例如:移动,弹跳,淡入淡出等.可在实际的开发过程中,由于游戏的需要,显然地,引擎自带的Act ...

  9. 最新 Eclipse IDE下的Spring框架配置及简单实例

    前段时间开始着手学习Spring框架,又是买书又是看视频找教程的,可是鲜有介绍如何配置Spring+Eclipse的方法,现在将我的成功经验分享给大家. 本文的一些源代码来源于码农教程:http:// ...

  10. Be careful about the upper limit of integer

    在面对整数时,要留心整数溢出的情况. 在探索一个数有多少个除数的程序中,原本我们只要累加自然数到大于根号N停止即可. 不过因为计算机的整数范围的限制,我们需要判断是否i*i<(i-1)*(i-1 ...