⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 caibook3.01

📁 介绍c语言的强劲手册
💻 01
📖 第 1 页 / 共 4 页
字号:
    MNvoid main(){
  char a,b;
  printf("input character a,b\n");
  scanf("%c %c",&a,&b);
  printf("\n%c%c\n",a,b);
 }
    scanf("%c   %c",&a,&b);    本例表示scanf格式控制串"%c %c"之间有空格时, 输入的数据
之间可以有空格间隔。e. 如果格式控制串中有非格式字符则输入时也要输入该非格式字符。
   例如:
    scanf("%d,%d,%d",&a,&b,&c);    其中用非格式符“ , ”作间隔符,故输入时应为:    5,6,7
    又如:    scanf("a=%d,b=%d,c=%d",&a,&b,&c);
则输入应为
    a=5,b=6,c=7g. 如输入的数据与输出的类型不一致时,虽然编译能够通过,但结
   果将不正确。void main(){
  int a;
  printf("input a number\n");
  scanf("%d",&a);
  printf("%ld",a);
}
    由于输入数据类型为整型, 而输出语句的格式串中说明为长整
型,因此输出结果和输入数据不符。如改动程序如下:    void main(){
    long a;
    printf("input a long integer\n");
    scanf("%ld",&a);
    printf("%ld",a);
}
运行结果为:
    input a long integer
    1234567890
    1234567890    当输入数据改为长整型后,输入输出数据相等。键盘输入函数
getchar函数getchar函数的功能是从键盘上输入一个字符。其一般形式为:    getchar();  通常把输入的字符赋予一个字符变量,构成赋值语句,如:    char c;
    c=getchar();#include<stdio.h>
void main(){
  char c;
  printf("input a character\n");
  c=getchar();
  putchar(c);
}
使用getchar函数还应注意几个问题:    1.getchar函数只能接受单个字符,输入数字也按字符处理。输
      入多于一个字符时,只接收第一个字符。    2.使用本函数前必须包含文件“stdio.h”。    3.在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏
      幕等待用户输入。输入完毕再返回TC屏幕。void main(){
  char a,b,c;
  printf("input character a,b,c\n");
  scanf("%c %c %c",&a,&b,&c);
  printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);
 }
        输入三个小写字母
    输出其ASCII码和对应的大写字母。
void main(){
 int a;
 long b;
 float f;
 double d;
 char c;
 printf("%d,%d,%d,%d,%d",sizeof(a),sizeof(b),sizeof(f)
	 ,sizeof(d),sizeof(c));
}
    输出各种数据类型的字节长度。
分支结构程序
关系运算符和表达式
    在程序中经常需要比较两个量的大小关系, 以决定程序下一步
的工作。比较两个量的运算符称为关系运算符。 在C语言中有以下
关系运算符:
    <   小于
    <=  小于或等于 
    >   大于
    >=  大于或等于
    ==  等于
    !=  不等于    关系运算符都是双目运算符,其结合性均为左结合。 关系运算
符的优先级低于算术运算符,高于赋值运算符。 在六个关系运算符
中,<,<=,>,>=的优先级相同,高于==和!=,==和!=的优先级相同。
关系表达式
关系表达式的一般形式为:    表达式 关系运算符  表达式  例如:a+b>c-d,x>3/2,'a'+1<c,-i-5*j==k+1;都是合法的关系表达
      式。由于表达式也可以又是关系表达式。 因此也允许出现嵌
      套的情况,例如:a>(b>c),a!=(c==d)等。关系表达式的值是
      “真”和“假”,用“1”和“0”表示。
如:  5>0的值为“真”,即为1。
      (a=3)>(b=5)由于3>5不成立,故其值为假,即为0。void main(){
  char c='k';
  int i=1,j=2,k=3;
  float x=3e+5,y=0.85;
  printf("%d,%d\n",'a'+5<c,-i-2*j>=k+1);
  printf("%d,%d\n",1<j<5,x-5.25<=x+y);
  printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);
 }
        char c='k';
    int i=1,j=2,k=3;
    float x=3e+5,y=0.85;
    printf("%d,%d\n",'a'+5<c,-i-2*j>=k+1);
    printf("%d,%d\n",1<j<5,x-5.25<=x+y);
    printf("%d,%d\n",i+j+k==-2*j,k==j==i+5);    在本例中求出了各种关系运算符的值。 字符变量是以它对应的
ASCII码参与运算的。对于含多个关系运算符的表达式,如k==j==i
+5,根据运算符的左结合性,先计算k==j,该式不成立,其值为0,再
计算0==i+5,也不成立,故表达式值为0。逻辑运算符和表达式
    逻辑运算符
C语言中提供了三种逻辑运算符    &&  与运算
    ||  或运算
    !    非运算    与运算符&&和或运算符||均为双目运算符。具有左结合性。 非
运算符!为单目运算符,具有右结合性。逻辑运算符和其它运算符优
先级的关系可表示如下:
    按照运算符的优先顺序可以得出:      a>b && c>d等价于(a>b) && (c>d)
      !b==c||d<a等价于((!b)==c)||(d<a)
      a+b>c && x+y<b等价于((a+b)>c)  && ((x+y)<b)
逻辑运算的值
        逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表
示。其求值规则如下:1.与运算&&
    参与运算的两个量都为真时,结果才为真,否则为假。例如,5>
0 && 4>2,由于5>0为真,4>2也为真,相与的结果也为真。2.或运算||
    参与运算的两个量只要有一个为真,结果就为真。 两个量都为
假时,结果为假。
例如:5>0||5>8,由于5>0为真,相或的结果也就为真。3.非运算!
    参与运算量为真时,结果为假;参与运算量为假时,结果为真。
例如:!(5>0)的结果为假。
    虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0 ”
代表“假”。 但反过来在判断一个量是为“真”还是为“假”时,
以“0”代表“假”,以非“0”的数值作为“真”。例如:由于5和3均为非“0”因此5&&3的值为“真”,即为1。
又如:5||0的值为“真”,即为1。
逻辑表达式逻辑表达式的一般形式为:    表达式  逻辑运算符  表达式  其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。例如:    (a&&b)&&c根据逻辑运算符的左结合性,上式也可写为:    a&&b&&c    逻辑表达式的值是式中各种逻辑运算的最后值,以“1”和“0”
分别代表“真”和“假”。void main(){
    char c='k';
    int i=1,j=2,k=3;
    float x=3e+5,y=0.85;
    printf("%d,%d\n",!x*!y,!!!x);
    printf("%d,%d\n",x||i&&j-3,i<j&&x<y);
    printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);
}    char c='k';
    int i=1,j=2,k=3;
    float x=3e+5,y=0.85;
    printf("%d,%d\n",!x*!y,!!!x);
    printf("%d,%d\n",x||i&&j-3,i<j&&x<y);
    printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);    本例中!x和!y分别为0,!x*!y也为0,故其输出值为0。由于x为
非0,故!!!x的逻辑值为0。对x|| i && j-3式,先计算j-3的值为非
0,再求i && j-3的逻辑值为1,故x||i&&j-3的逻辑值为 1。对i
<j&&x<y式,由于i<j的值为1,而x<y为0故表达式的值为1,0相与,
最后为0,对i==5&&c&&(j=8)式,由于i==5为假,即值为0, 该表达
式由两个与运算组成,所以整个表达式的值为0。对于式x+ y||i+j+k
由于x+y的值为非0,故整个或表达式的值为1。
 
if语句
    用if语句可以构成分支结构。它根据给定的条件进行判断, 以
决定执行某个分支程序段。C语言的if语句有三种基本形式。1.第一种形式为基本形式    if(表达式) 语句;    其语义是:如果表达式的值为真,则执行其后的语句, 否则不执
	    行该语句。其过程可表示为下图。
void main(){
    int a,b,max;
    printf("\n input two numbers:   ");
    scanf("%d%d",&a,&b);
    max=a;
    if (max<b) max=b;
    printf("max=%d",max);
}
    输入两个整数,输出其中的大数。    scanf("%d%d",&a,&b);
    max=a;
    if (max<b) max=b;
    printf("max=%d",max);
    
    本例程序中,输入两个数a,b。把a先赋予变量max,再用if语句
判别max和b的大小,如max小于b,则把b赋予max。因此max中总是大
数,最后输出max的值。
2.第二种形式为if-else形式    if(表达式)  
        语句1;  
    else  
        语句2;  其语义是:如果表达式的值为真,则执行语句1,否则执行语句2 。
其执行过程可表示为下图。void main(){
    int a, b;
    printf("input two numbers:     ");
    scanf("%d%d",&a,&b);
    if(a>b)
      printf("max=%d\n",a);
    else
      printf("max=%d\n",b);
}
    输入两个整数,输出其中的大数。
    改用if-else语句判别a,b的大小,若a大,则输出a,否则输出b。3.第三种形式为if-else-if形式
    前二种形式的if语句一般都用于两个分支的情况。 当有多个分
支选择时,可采用if-else-if语句,其一般形式为:    if(表达式1)  
        语句1;  
    else  if(表达式2)  
        语句2;  
    else  if(表达式3)  
        语句3;  
    else  if(表达式m)  
        语句m;  
    else  
        语句n;  
    其语义是:依次判断表达式的值,当出现某个值为真时, 则执
行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所
有的表达式均为假,则执行语句n 。 然后继续执行后续程序。 if
-else-if语句的执行过程如图3—3所示。#include"stdio.h"
void main(){
    char c;
    printf("input a character:    ");
    c=getchar();
    if(c<32)
      printf("This is a control character\n");
    else if(c>='0'&&c<='9')
      printf("This is a digit\n");
    else if(c>='A'&&c<='Z')
      printf("This is a capital letter\n");
    else if(c>='a'&&c<='z')
      printf("This is a small letter\n");
    else
      printf("This is an other character\n");
}
    if(c<32)
      printf("This is a control character\n");
    else if(c>='0'&&c<='9')
      printf("This is a digit\n");
    else if(c>='A'&&c<='Z')
      printf("This is a capital letter\n");
    else if(c>='a'&&c<='z')
      printf("This is a small letter\n");
    else
      printf("This is an other character\n");
    本例要求判别键盘输入字符的类别。可以根据输入字符的ASCII
码来判别类型。由ASCII码表可知ASCII值小于32的为控制字符。 在
“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母, 在
“a”和“z”之间为小写字母,其余则为其它字符。 这是一个多分
支选择的问题,用if-else-if语句编程,判断输入字符ASCII码所在
的范围,分别给出不同的输出。例如输入为“g”,输出显示它为小
写字符。4.在使用if语句中还应注意以下问题
(1) 在三种形式的if语句中,在if关键字之后均为表达式。 该表达
    式通常是逻辑表达式或关系表达式, 但也可以是其它表达式,
    如赋值表达式等,甚至也可以是一个变量。例如:    if(a=5) 语句;
    if(b) 语句;    都是允许的。只要表达式的值为非0,即为“真”。如在if(a=5)
…;中表达式的值永远为非0,所以其后的语句总是要执行的,当然
这种情况在程序中不一定会出现,但在语法上是合法的。
又如,有程序段:    if(a=b)
        printf("%d",a);
    else
        printf("a=0");    本语句的语义是,把b值赋予a,如为非0则输出该值,否则输出
“a=0”字符串。这种用法在程序中是经常出现的。(2) 在if语句中,条件判断表达式必须用括号括起来, 在语句之后
    必须加分号。
(3) 在if语句的三种形式中,所有的语句应为单个语句,如果要想在
    满足条件时执行一组(多个)语句,则必须把这一组语句用{} 括
    起来组成一个复合语句。但要注意的是在}之后不能再加分号。
例如:    if(a>b){
        a++;
        b++;
    }
    else{ a=0;
        b=10;
    }if语句的嵌套
    当if语句中的执行语句又是if语句时,则构成了if 语句嵌套的
情形。其一般形式可表示如下:    if(表达式)  
        if语句;  
或者为
    if(表达式)  
        if语句;  
    else  
        if语句;      在嵌套内的if语句可能又是if-else型的,这将会出现多个if和
多个else重叠的情况,这时要特别注意if和else的配对问题。例如:    if(表达式1)
    if(表达式2)
        语句1;
    else
        语句2;其中的else究竟是与哪一个if配对呢?
应该理解为:                 还是应理解为:    if(表达式1)                  if(表达式1)
      if(表达式2)                  if(表达式2)
        语句1;                      语句1;
      else                       else
	语句2;                    语句2;    为了避免这种二义性,C语言规定,else 总是与它前面最近的
if配对,因此对上述例子应按前一种情况理解。void main(){
    int a,b;
    printf("please input A,B:    ");
    scanf("%d%d",&a,&b);
    if(a!=b)
    if(a>b)  printf("A>B\n");
    else     printf("A<B\n");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -