zoukankan      html  css  js  c++  java
  • 学习C (一)

    int _tmain(int argc, _TCHAR* argv[])
    {

    char str[20],str2[20];
    cout
    <<str<<endl; //由于分配了空间,没有写入数据,在输出地时候读没有写入数据的地址就回出现乱码
    for(int i=0;i<20;i++)
    {
    str[i]
    ='a';
    //if(i==10)
    //{
    // str[10]='\0';//字符串遇到了\0,就会结束,所以strlen(str)=10
    //}
    }
    str[
    19]='\0';//结束字符串,没有这一句就回出现乱码

    strcpy(str2,str);
    //将一个字符串赋给列一个相等容量的字符串是会出现乱码的,因为字符串的最后一位必须是\0
    cout<<str<<" , "<<sizeof(str)<<" , "<<strlen(str)<<" , "<<str2<<endl;

    int k = 5;
    k
    = k + (++k);
    cout
    <<k<<endl;

    int b1;
    cin
    >>b1;
    return 0;
    }



    输出结果如下:







    char str[20];

    定义一个长度为20的字符数组,系统会分配20个连续的空间给str;开始的时候每个空间里面都没有值;

    str指向数组的第一个空间,str相当于一个常量指针,所以不能写str
    =?;



    sizeof(str)表式str所占的空间长度,char str[20]表示长度为20,也就是说sizeof(str)的值在定义的时候就已经定了,

    就是字符创数组的长度。



    strlen(str)表示str中字符的个数,这里有19个,最后一个\0不算。



    int k = 5;
    k
    = k + (++k);

    最后k
    =12;这个的确不太好理解





    理解:可以这样理解i
    ++++i:
    对于一个表达式;如果有
    ++i;就相当于在表达式之前加入一行代码i=i+1
    同理有i
    ++;相当于在表达式后面加入一行代码i=i+1

    int k = 5; k = k + (++k);相当于int k=5;k=k+1;k=k+k;

    测试题:递归实现猴子偷桃问题

    //猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
    //第二天又将剩下的桃子吃掉一半,又多吃一个。以后每天都吃了前一天剩下的一半零一个。
    //到第10天,只剩下一个桃子了。编程试求第一天共摘了多少桃子。
    int Eat(int currentCount,int i)
    {
    if(i==10)
    {
    return currentCount;
    }
    else{
    currentCount
    =(currentCount+1)*2;
    i
    ++;
    }
    return Eat(currentCount,i);
    }

    cout
    <<Eat(1,10)<<endl;

    得出第一天摘了1534个桃子。

    最后一招猴子偷桃,竟然偷了1534个。

  • 相关阅读:
    java设计模式之代理模式 ,以及和java 回调机制的区别
    oracle 安装,启动 ,plsql 连接
    jsp 访问文件夹中的图片,tomcat配置虚拟目录
    最实用解决tomcat startup.bat 一闪而过
    oracle 创建表
    java debug源码完整版
    node.js事件轮询(1)
    markdown命令语法
    mac常用的命令
    node + nginx + mongo搭建负载均衡
  • 原文地址:https://www.cnblogs.com/hlxs/p/2087984.html
Copyright © 2011-2022 走看看