第二章 数组
  一,定义:
  数组是有序数据的结合,同一数据类型
  整型数组     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. 魅族mx4 pro连电脑,adb无法获取devices信息解决

    根据 flyme 的文档: K:\MX4 USB Reference Manual\简体\MX4_ADB_参考说明书.txt 操作如下: 二.Windows XP中文环境1.  建立或修改C:\Doc ...

  2. pycharm5注册码

    43B4A73YYJ-eyJsaWNlbnNlSWQiOiI0M0I0QTczWVlKIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiI ...

  3. 苹果iphone手机上input的button按钮颜色显示有问题,安卓却没问题

    苹果手机中会如类似上图,安卓却可以按自己写的来显示 解决办法: -webkit-appearance: none; 以上即可,当然样式中可以加上通用的: 通用:input[type=button], ...

  4. 查看npm全局安装的模块

    1.查看所有高级的npm moudles npm list --depth= 2.查看所有全局安装的模块 npm list --depth= -global

  5. C语言中,while()语句中使用赋值语句

    while()语句括号中是一个逻辑表达式,用以判断while循环是否需要继续执行.可以是赋值语句. while循环的一般格式为: while(expr) { ;//body } 其中用来判断循环条件的 ...

  6. jQuery导入Eclipse后报错解决方法

         使用Eclipse 3.7及以上版本时,工程中加入jquery.min.js文件,发现该文件出现错误提示(红×),但使用Eclipse 3.7以前的版本就不会出现这种提示.是因为Eclips ...

  7. shc

    A tool  for encrytion of bash shell scripts . Install: wget http://www.datsi.fi.upm.es/~frosal/sourc ...

  8. linux -目录结构

    摘自:http://www.comptechdoc.org/os/linux/usersguide/linux_ugfilestruct.html 这个目录结构介绍是我目前看到介绍最全的,有时间在翻译 ...

  9. Uva 11732 strcmp() Anyone?

    strcmp() Anyone? Time Limit: 2000MS   Memory Limit: Unknown   64bit IO Format: %lld & %llu [Subm ...

  10. 取代 Windows Search

    windows自带的搜索工具太难用了,总是在你急需的时候提示还没有建立索引,眼皮底下的文件都找不到. 1. everything 适合快速搜索文件名 优点是速度快,非常快,几乎是瞬间就建立好了索引. ...