第二章 数组
  一,定义:
  数组是有序数据的结合,同一数据类型
  整型数组     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. javascript 容易忽略的小知识点 new到底做了什么?

    问题:平时我们经常写 var ss = new Person():ss就是一个由'Person类'生成的对象了,可是我们的Person方法里却没有写 return: (var ss= Person() ...

  2. Linux磁盘分区及配额

    在现有磁盘的基础上进行分区格式化并为特定用户实施磁盘配额,使其对磁盘这一分区的写入有一定的限制 前期准备: 在我的虚拟机rhel7上有/dev/sda这一分区和fsy这一用户,我将对/dev/sda进 ...

  3. Nginx实现多域名证书HTTPS

    目前公司有2个域名,其中这次涉及到3个子域名需要更改为HTTPS传输,分别为: passport.abc.com www.test.com admin.test.com 那么就涉及到购买ssl证书的问 ...

  4. Hibernate配置方式

    Hibernate配置方式 Hibernate给人的感受是灵活的,要达到同一个目的,我们可以使用几种不同的办法.就拿Hibernate配置来说,常用的有如下三种方式,任选其一. 在 hibernate ...

  5. 如何获得Webapp的根项目路径 即ServletContext.getRealPath() 的输入参数要以"/"开头

    ServletContext.getRealPath() 的输入参数要以"/"开头 2014-03-26 15:54 5738人阅读 评论(1) 收藏 举报 版权声明:本文为博主原 ...

  6. 前端React开发入门笔记

    什么是React React是一个JavaScript库,是由FaceBook和Instagram开发的,主要用于用户创建图形化界面. Hello world <!DOCTYPE html> ...

  7. 常用function() 收集

    1.随机数生成函数(来源-微信支付demo案例) /** * * 产生随机字符串,不长于32位 * @param int $length * @return 产生的随机字符串 */ public st ...

  8. 美团HD(3)-加载分类导航数据

    DJHomeViewController.m /** 设置导航栏左侧内容 */ - (void)setupLeftNavItem { // Logo UIImageView *logoView = [ ...

  9. 《深入理解Java虚拟机》学习笔记1-内存数据区域

         1.程序计数器 作用-较小的内存空间,用于存储当前线程所执行的字节码的行号 特性-每条线程有需要一个独立的程序计数器,各线程间互不影响,独立存储,称为"线程私有"的内存 ...

  10. Ubuntu虚拟机中断后重启网络断接错误解决方案

    因为该死的windows自动更新,所以vmplayer经常会被强制关闭. 但重新启动后,会发生不能连接到网络的情况显示: waiting for the network configuration…… ...