第二章 数组
  一,定义:
  数组是有序数据的结合,同一数据类型
  整型数组     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. 8 HTML&JS等前端知识系列之jquery的自定义方法

    preface 有时候我们在前端写jquery的时候,会自己自定义些方法,这样可以不需要重复造轮子.先说说2种自定义方法的区别: 不跟在选择器后面的 跟在选择器后面的. 那下面说说如何自定义jquer ...

  2. iframe用js设定自定义高度

    JS代码 function SetWinHeight(obj){ var win=obj; if (document.getElementById){ if (win && !wind ...

  3. java中获取路径的几种基本的方法

    package com.ygh.blog.realpath; import java.io.File; import java.io.IOException; import java.io.Input ...

  4. 怎么把电脑的word,txt,pdf等文件拷贝到iPhone手机上

    之前都是用的qq什么的传文件,电脑发送到qq上.今天尝试了一下用itunes把电脑上的文件夹弄到iPhone上. 1.首先,打开电脑的偏好设置,找到共享如图: 打开它,勾选文件共享. 2.把手机和电脑 ...

  5. react native 环境配置

    1. 安装Homebrew Homebrew主要用于安装后面需要安装的watchman.flow 打开MAC的终端,输入如下命令: ruby -e "$(curl -fsSL https:/ ...

  6. 图片懒加载jquery lazyload

    <script type="text/javascript" src="jquery-1.11.3.min.js"></script>& ...

  7. 聊一聊PV和并发

    最近和几个朋友,聊到并发和服务器的压力问题.很多朋友,不知道该怎么去计算并发?部署多少台服务器才合适? 所以,今天就来聊一聊PV和并发,还有计算web服务器的数量 的等方法.这些都是自己的想法加上一些 ...

  8. 数据存储_FMDB数据库队列

    一.代码示例 1.需要先导入FMDB框架和头文件,由于该框架依赖于libsqlite库,所以还应该导入该库. 2.代码如下: 1 // 2 // YYViewController.m 3 // 05- ...

  9. Spring Boot整合Dubbo框架demo

    Dubbo框架原理见之前的博文:http://www.cnblogs.com/umgsai/p/5836925.html 首先启动zookeeper Server端 Pom配置如下 <?xml ...

  10. Excel——使用OFFSET、MATCH、COUNTA实现二级菜单

    如图所示,接下来提供两种办法实现: 1.将A.B.C.D定义为名称NAME. 2.设置一级菜单单元格数据有效性为NAME. 3.设置二级菜单格数据有效为: =OFFSET($A$1,MATCH($A6 ...