第二章 数组
  一,定义:
  数组是有序数据的结合,同一数据类型
  整型数组     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. windows使用git时出现:warning: LF will be replaced by CRLF

    windows中的换行符为 CRLF, 而在linux下的换行符为LF,所以在执行add . 时出现提示: 执行以下代码 $ rm -rf .git // 删除.git $ git config -- ...

  2. 通过SmartGit把java maven项目传到码云

    一.首先先在码云上新建一个项目 二.复制项目的链接 三.打开SmartGit,点击clone 4.把复制的项目链接粘上去 5.然后点两次next,选择一个路径,finish 6.打开刚刚选择的路径,我 ...

  3. IScroll5兼容IE修改

    水平不到家,无法像js大神那样讲得头头是道.仅做记录,以备后查. iScroll5是不兼容IE低版本的.为兼容IE低版本(以IE8为例),需做以下工作: 1.事件绑定方式兼容 众所周知,独特的IE有它 ...

  4. MySQL存储引擎--MyISAM与InnoDB区别

    InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定.基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持.MyISA ...

  5. (error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk

    今天运行Redis时发生错误,错误信息如下: (error) MISCONF Redis is configured to save RDB snapshots, but is currently n ...

  6. Swift -Login(MVC 纯代码)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 24.0px Menlo; color: #000000 } span.s1 { } span.s2 { c ...

  7. .net core教程

    https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/start-mvc

  8. 2.3switch case 语句注意事项。

    #include<stdio.h> int main() { void action1(int, int),action2(int, int); char ch; , b=; ch = g ...

  9. CSS 高级布局技巧

    随着 IE8 逐渐退出舞台,很多高级的 CSS 特性都已被浏览器原生支持,再不学下就要过时了. 用 :empty 区分空元素 兼容性:不支持 IE8 /*假如我们有以上列表:*/ <div cl ...

  10. Ubuntu 14.04开发环境初始化

    安装fcitx, fcitx-googlepinyin, 移除默认键盘快捷键. 英文版不要安装系统推荐的语言更新,会使浏览器以及其他的应用的字体变成bitmap. 安装nvidia驱动 安装vim,设 ...