初识C语言3

1.接着上一篇内容,我对目前所学的C语言代码所包含的一个预处理文件#include<stdio.h>有了进一步的了解(这是我问的结合自己查询到内容):stdio的意思与其缩写有联系,standard input and output,意为“标准输入输出”,该头文件包含了我们平时用到的输入“scanf”,输出“printf”还有其它getchar等等一些函数,得知这些,我深刻地体会到事物之间的藕断丝连,这些关联如此奇妙。

2.关于VS设置断点调试,就现在而言,感觉不太深(听说是VS精髓之处),只会一些皮毛,用来监视定义的某个变量的数值变化,比如以下代码:

#include <stdio.h>  
#include <stdlib.h>
int main() {  
    int x = 10;  
    int y = 20;

  printf("Before debug\n");   // 设置断点  
    if (x > y) 
{  
        printf("x > y\n");  
        int z = x + y;  
        printf("z = %d\n", z);  
    }
        else 
    {  
        printf("x <= y\n");  
    }
    printf("After debug\n");
    return 0;  
}

通过VS,按下快捷键F9(在光标处设置断点),点击调试,会在下方弹出监视窗口显示x,y的数值,如果在printf("After debug\n");前设置一个断点,加一个对z的监视,会显示z未定义,可能是if语句不执行printf("z = %d\n", z);  的原因(希望可以得到解答),之后还得多多摸索它的作用。

2.通常计算一个像从1到100的求和,可以借助for循环语句,它的基本语法为for (初始化;条件;递增/递减){    }

例如:

#include <stdio.h>  
#include <stdlib.h>
int main()
{
    int sum=0;
    for (int a = 1; a <= 100; a++)
    {
        sum += a;
    }
    printf("1到100的sum=%d", sum);
    system("pause");
    return 0;
}

这里涉及到了自加等问题,简单说明一下:a++表示先输出a再自加1,sum+=a 表示sum=sum+a。

就像if语句一样,for循环也存在嵌套:

#include <stdio.h>

int main()

{
    for (int i = 1; i <= 9; i++)
    {
        for (int j = 1; j <= i; j++)
        {
            printf("%d*%d=%d\t", j, i, i * j);
        }
        printf("\n");
    }
    return 0;
}

运行结果为:

1*1=1
1*2=2   2*2=4
1*3=3   2*3=6   3*3=9
1*4=4   2*4=8   3*4=12  4*4=16
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

这里结果以一排一排的形式呈现,没有和上一个一样定义一个变量sum来储存数据。

3.循环结构除了上述的for循环,while循环也可以重复执行,有这么一个问题:输入一串字符,统计其中字母的个数和数字的个数。通常看到字符串这类问题,首先想到的应该是数组的概念,但是因为还未学习到那里,我用了之前的知识运行这个过程,以下:

#include<stdio.h>
int main()
{
    int sum1=0,sum2=0;
    int c=getchar();
    while (c != '#')
    {
        if (c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z')
        {
            sum1++;
        }
        else if (c >= '0' && c <= '9')
        {
            sum2++;
        }
        else
            printf("没有输入字母和数字");
        c = getchar();
    }
    printf("字母个数:%d\n", sum1);
    printf("数字个数:%d\n", sum2);
    printf("\n");
    return 0;
}

明显这个代码运用了多种语句的镶嵌(目前不太懂),并且while语句通过识别到#来停止循环(可以自己定义其他的符号)。

其中一种运行结果为:

12345678abcd520lyt#
字母个数:4
数字个数:10

4.谈到逻辑语句,这里就不得不说一说if-else语句了(其实还有很多种结构,这里我只简单地讲一下我自己比较喜欢的一种形式),同时,我还要将switch语句和if-else语句对比讲述一下:

if-else语句的一般结构大致为以下:

{
    if (条件)
  {
    执行的代码
  }
    else if()
  {
    执行的代码
  }
    else
  {
    执行的代码
  }
}

注意:(1).if语句和后面跟的条件不属于一个语句,结尾处不需要分号

(2).执行的代码一般用花括号括起来,只有一个语句可以不括起来,但是我更喜欢都括起来,养成一个好的习惯;

(3).else后面不需要括号括起来的条件。

switch语句的一般结构如下:

switch(变量)
 {
 case 3:语句;break;
 case 2:语句;break;
 case 1:语句;break;
 default:语句;break;
 }

注意:(1).case和后面的字符之间要又空格,否则会造成格式不对;

(2).每一种case结尾都有对应的break,以表示语句的结束

有这么一道题目:编写程序,通过键盘输入字符,判断其属于控制、数字、大写字母、小写字母和其他字母中的类别。

分析:要编写这样一个程序,最关键的应该是判断的过程,这里简单的运用了if-else语句和switch语句,通过以下两段代码,可以更好的感受到两者之间的区别和用处。

(1)#include<stdio.h>
#include<stdlib.h>
int main()
{
    char c;
    printf("Enter a char:");
    c=getchar();
    if(c<0x20)
        printf("\nThe char is a control char.\n");
    else if(c>='0'&&c<='9')
        printf("The char is a digit char.\n");
    else if(c>='a'&&c<='z')
        printf("The char is a lower char.\n");
    else if(c>='A'&&c<='Z')
        printf("The char is a captal char.\n");
    else
        printf("The char is an other char.\n");
    system("pause");
    return 0;
}

(2)#include<stdio.h>
int main()
{
    char c;
    printf("please input a char:\n");
    c = getchar();
    switch (c)
    {
    case 'a':
    case 'b':
        printf("The char is a lower char.\n");
        break;
    case 'A':
    case 'B':
        printf("The char is a captal char.\n");
        break;
    case 0x20:
        printf("The char is a control char.\n");
        break;
    default :
        printf("The char is an other char.\n");
    }
    return 0;
}

总结:上述switch语句我只举例说明了几个字母(也可以将其补充完整),显然switch语句在有的时候会显得代码冗长,而且一旦改变了变量的范围,就需要更改case的情况,而if-else语句灵活性比较强,可以包容比较复杂的条件,修改也比较方便。但是switch语句简单易懂,能够很清楚地了解代码的意图。

总而言之,switch语句适合处理数量有限的、无序的条件分支;

if-else语句适合处理复杂有序的条件判断。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值