c primer plus第6章总结:循环

来源:互联网 发布:小甲鱼python视频教程 编辑:程序博客网 时间:2024/05/21 10:46
1、循环读入:
sate = scanf("%d", &n) == 1;    // 关系运算符== 比 赋值符= 的优先级高,所以可以不加括号;
while (sate )
{
     sate = scanf("%d", &n) == 1;
}
或:
while (scanf("%d", &n) == 1)
{
}

// 跳过输入直到第一个不为空格和数字的字符
while (scanf("%d", &n) == 1)
     ;    

2、浮点数比较:
while (fabs(pi - 3.14159) > 0.0001)
{
     scanf("%lf", &pi);
}
    判断是否为0:
E = 0.0001;
while (y < E && y > -E)

3、while、for、do whlie 如何选择:
  • 先确定需要入口条件(while 、for)循环还是退出条件(do while)循环;
  • 循环设计初始化和更新变量时,使用for较合适;
  • 哪个效率更高??效率差别不大,按习惯和代码风格选取。

4、数组:
  •      字符数组内包含空字符\0,则字符数组内容就构成一个字符串,空字符标志字符串的结尾;
  •      在当字符串使用时,字符数组要保证数组中存在'\0'做结尾;
  •      虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈;
4.1、字符数组由若干个元素组成,每个元素放一个字符;而字符指针变量中存放的是地址(字符串/字符数组的首地址),绝不是将字符串放到字符指针变量中(是字符串首地址);
4.2、赋值方式:
     对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值
     char str[14];
     str="I love China";     (但在字符数组初始化时可以,即char str[14]="I love China";)
     而对字符指针变量,采用下面方法赋值:
     char* a;
     a="I love China";
     或者是 char* a="I love China";       都可以
4.3、对字符指针变量赋初值(初始化):
         char* a="I love China";      
等价于:
           char* a;
           a="I love China";
而对于字符数组的初始化
          char str[14]="I love China";
不能等价于:
         char str[14];
         str="I love China"; (这种不是初始化,而是赋值,而对数组这样赋值是不对的)
4.4、如果定义了一个字符数组,那么它有确定的内存地址;而定义一个字符指针变量时,它并未指向某个确定的字符数据,并且可以多次赋值。

5、循环使用数组:
 for (index = 0; index < SIZE; index++)
        scanf("%d", &score[index]);  // 循环输入
  
    for (index = 0; index < SIZE; index++)
        printf("%5d", score[index]); // 循环打印

    for (index = 0; index < SIZE; index++)
        sum += score[index];         // 计算所有元素的和

课后习题总结

1、创建[a--z]的数值:
    char ch[26] = { 0 };  // 注意数组的初始化
    for( char index = 'a'; index < ('a'+26); index++ ,i++)    
    {
        ch[i] = index ;
        printf("%c ",ch[i]);       // 字符以整数形式存储,可直接+int;
    }

14、读入一行输入,再反向打印,输入行不超过255个字符;
void main()
{
const static int MAX_CHAR_COUNT = 255;
    char buf[MAX_CHAR_COUNT ] = { 0 };     // 用数组存储输入
    char c = 0;
    int count = 0;
    while (scanf("%c", &c) == 1 && c != '\n' && count < MAX_CHAR_COUNT)
    {
        buf[count++] = c;
    }

    for (int i = count - 1; i >= 0; --i)
    {
        printf("%c", buf[i]);
    }
    printf("\n");
}
0 0
原创粉丝点击