C语言基础复习笔记第四课——顺序结构、C语句(说明、表达式、函数调用、空语句、控制语句、复合语句)、赋值运算符、类型转换、常见格式说明符、格式输出函数printf函数、格式输入scanf函数

本着尽可能全跟简单的原则,总结了一些知识点,希望对大家有用。

一、C语句分类

C语句以分号为结束标志。
在这里插入图片描述

1. 说明语句:用于定义变量、声明函数原型的语句。

例如: int a,b;

2. 表达式语句:即表达式之后加分号。

例如: a=3;(赋值语句)、i++;

3. 函数调用语句:即函数调用之后加分号。

例如: printf(“Hello!”);

4. 空语句:即只有一个分号。(这个一般用不到)
5. 控制语句:是用于控制程序执行流程的语句。(学习重点)

例如: if-else、 while等 。

6. 复合语句:是由一对花括号括起来的一组语句。

例如:{t=a; a=b; b=t;}(典型的借助中间变量交换)
注意:复合语句在语法上视为一条语句。
复合语句你就可以理解为

要完成对a赋值的功能
int a=3;
复合语句
{
int a;
a=3;
}
因为C语言是顺序执行语句
一般分号就是语句结束
上面的可能int a结束以后就会因为某些原因
后面的a=3没有机会执行
为了避免这种情况
才出现了复合语句
t=a;
 a=b;
  b=t;
这三条分开的话很明显是三条语句
可能由于某些原因
只执行完t=a,后面语句的就没机会了
{t=a; a=b; b=t;}
就是在意义上{}是一条语句
然后在这一条大语句里面执行一堆小语句
复合语句用的最多的一个地方就是在一些语句中
如选择和循环语句,ifforwhile中
本来只能后面跟随一条语句
利用复合语句可以达到多条语句变成一条语句的效果。

拿例题加深理解一下吧
输入三个整数,按照由小到大的顺序输出,最后换行。
输入格式:
输入三个整数,中间用空格分隔。
输出格式:
输出三个整数,中间用英文逗号,分隔,最后换行。

#include<stdio.h>
int main()
{
    int a,b,c,t;
    scanf("%d%d%d",&a,&b,&c);
    if(a>b){t=a; a=b; b=t;}
    if(a>c){t=a; a=c; c=t;}
    if(b>c){t=b; b=c; c=t; }
    printf("%d,%d,%d\n",a,b,c);
    return 0;
}

二、赋值运算符:=

格式:变量=表达式
功能:求出表达式的值,并存入左侧变量中。(注意顺序)
注意点:

  1. 赋值表达式的值就是左侧变量的值。
b=3;
printf("%d" ,a=b+l);
结果就是4
这里呢%d所指的就是a=b+1(这个式子)的值
计算一下
b+1=3+1=4
a=4
  1. 赋值运算符右侧的表达式也可以是赋值表达式,赋值运算符具有右结合性。
    最熟悉的
int a,b,c;
a=b=c=1;
因为右结合性
所以先进行c=1;
再b=c;
再a=b;
这就是可以连续赋值的原理
  1. 赋值表达式加分号(属于表达式语句)。
    例如:
    a=a+1 赋值表达式
    a=a+1 ; 赋值语句
  2. 在定义变量的同时,给变量赋值,称为变量的初始化。
    例如:
    int a=3;
    相当于
    int a;
    a=3;
  3. 错误用法
    int a=b=c=1;
    原因就是b,c未定义就使用
    所以请看第二条,应该先定义了
    在进行赋值
    借助赋值运算符的右结合性实现连续赋值

三、类型转换

在C语言中若赋值运算符两侧类型不一致,则以左侧变量的类型为准对右边的进行类型转换。

  1. 实数赋给整型(字符型)变量时,将会截断取整。
int a;
b=1.234;
a=b;
结果:a=1

在这里插入图片描述

  1. 整数(字符常量)赋给实型变量时,将会转换为 实数格式并存入到实型变量中。
 float a;
 a=1;
 结果a=1.000000
 这里我记得double还是float来着
 可能会有改变数字的现象
 就是把你输入的数改成近似值
 很偶然的情况碰到过
 具体的也记不太清了 

在这里插入图片描述
3. 当整型数据赋给类型不同但内存位数相同的整型变量时,将会按该数据的内部形式原样传送。(这条看着没啥用处。。。。)
4. 若两种类型的数据之间可以直接相互赋值,则称之为赋值兼容。
例如整型、实型及字符型之间是赋值兼容的。(ASCII码表类型转换啊啥的题目会有)
例题:
从键盘输入一个字符,编程序输出该字符的ASCII码。
输入格式:
键盘上输入任意一个西文字符。
输出格式:
输出该该字符的十进制ASCII码,并换行。

#include <stdio.h>
int main()
{
    char a;
    int b;
    scanf("%c",&a);
    b=(int)a;
    printf("%c的ASCII码为%d\n",a,b);
    return 0;
}

四、格式输出函数printf函数

  1. C语言中输入输出均由库函数实现。(常用printf、getchar、putchar、scanf、puts等等)
    在C程序中调用库函数时,要用include命令包含相应的头文件。
    如#include <stdio.h>或#include “stdio.h” (这两种格式都OK)
  2. printf(格式控制字符串,输出项表)
    其中的输出项表是若干个要输出的数据项(可以是常量、变量或表达式)
    格式控制字符串则用于规定输出项的输出格式。
    就是后面的按照前面限定的格式输出
#include <stdio.h>
int main()
{
int a=100;
float x=1.234 ;
printf("a=%d,x=%f\n",a,x);
return 0;
}

在这里插入图片描述格式控制串中的字符分为两类:
格式说明
由“%”和格式说明字符组成,如%d、%f等,用于规定与之对应的数据项的
输出格式。
如上例中的%d对应于变量a, %f对应于变量X。
类型搞错了的话,在输出的时候就可能出现错误,或许不会报错,结果出问题,这个排查的时候也不好看出来

  1. 普通字符是格式说明以外的字符,普通字符将原样输出。
    如上例中的“a=”、“,”、“x=”、“\n”等都是普通字符。
    故上例的运行结果为:a=100,x=1.234000

五、常见格式说明符

  1. d(或i)格式符
    用于输出有符号十进制整数。
    %d ( 或%i)
    按实际位数输出有符号十进制整数。
    %ld ( 或%li)
    按实际位数输出有符号十进制长整数。
    %hd (或%hi)
    按实际位数输出有符号十进制短整数。
    %md、%mld、%mhd
    按指定位数输出有符号十进制整数。
    其中的m为正整数,用于指定输出位数。

当你限定长度以后,如果位数不足,那么会在左边补空格
在这里插入图片描述
当实际位数大的时候,指定的位数就不起作用了,按照实际位数输出(避免数据丢失)。
当指定位数小于实际位数时,将按实际位数输出避免数据丢失,指定位数不起作用。
如果指定位数大于实际位数时,则在输出的数据左侧用空格补齐不足的位数。

  1. f格式符
    用于以十进制小数形式输出实数。
    包括以下几种用法:
    %f
    用于输出float型或double型数据。
    整数部分按实际长度输出,并固定输出6位小数(可以观察一下以前的)
    %m.nf
    其中的m、n均为正整数。m指定输出实数的总位数,n指定小数位数。
    规则同上:
    当指定总位数小于实际位数时,将按实际位数输出,指定的总位数不起作用;
    如果指定位数大于实际位数时,则在输出的数据左侧用空格补齐不足的位数。从而避免造成整数部分的有效数据丢失。
  2. c格式符
    用于输出字符型数据
  3. printf函数输出字符串的
    格式字符是 “%s"。
    不过在输出字符串常量时,也可以不使用格式说明“%s",而直接输出字符串常量。
printf ("%s ","How are you?\n") ;
printf ("How are you?\n") ;
  1. 神图
    在这里插入图片描述

六、格式输入scanf函数(类比printf函数,两者差别不大)

  1. scanf(格式控制字符串,变量地址表)
    例如:
    scanf( “%d%d” ,&a,&b);
    其中的格式控制字符串,用于规定变量的输入格式。
    变量地址表,是若干个存储数据的变量的地址。
    &为取地址运算符。
  2. 神图
    在这里插入图片描述
  3. d (或i) 格式符
    用于输入有符号十进制整数。
    包括%d、%ld、 %hd (或%i、%li、 %hi),分别用于输入有符号十进制整数、长整数、短整数。
int a;
scanf("%d",&a);
printf( "%d\n",a);
  1. f格式符
    用于以十进制小数形式输入实数。
    包括以下几种用法:
    %f
    用于输入float型实数。
    %lf
    用于输入double型实数。
    这个地方是个与printf函数区别的地方
float x;
double y;
scanf("%f",&x);
scanf("%1f",&y);
printf("%f\n",x);
printf( "%f\n",y);

输入double型数据时,必须使用“%lf”

  1. c格式符
    用于输入字符型数据。
char ch;
scanf("%c",&ch);
printf("ch=%c\n", ch);

注意事项:

  1. 可以指定输入数据所占的宽度,但是不能指定输入数据的精度。
float x,y;
scanf( "%6f",&x);   //正确
scanf( "%6.2f"&y);    //错误

一般来说用不到这种限定输入宽度的形式,知道是个啥意思就OK了,选择填空可能会考到。

  1. 格式控制字符串中的普通字符,必须原样输入。
1int x,y;
scanf("%d%d",&x,&y);
无内容的话两个数之间空格啊、tab啊、回车啊都可以作为间隔

BUT
(2scanf("%d,%d",&x, &y);
就必须
1,2
这种格式输入,还要注意中英文符号

(3scanf("x=%d,y=%d",&x,&y);
输入时候
x=1,y=2
这属实是麻烦人

(4)

scanf("%d %d",&x,&y);
不建议在%d %d之间加空格,何必去找那个麻烦呢
  1. 用%c格式符输入字符型数据时,每个字符之前不需要分隔符。
int a;
char b,c;
scanf("%d%c%c",&a,&b,&c);
输入的时候
1ab
结果a=1,b=b;c=c
10000yz
结果a=10000,b=y,c=z
这样子输入就OK
输入的时候不要随便加空格,空格会被字符b取到
1 ab
结果a=1,b= ,c=a;
填空选择可能会考这种细节吧,我也不太清楚。
  1. 在scanf函数的格式控制字符串的末尾,不能添加"\n",否则运行时不能正常退出。(跟空格那个差不多,别给自己挖坑很重要)
scanf("%d%d\n",&x,&y);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值