小杰学c(four day)——千淘万漉虽辛苦,吹尽狂沙始到金

(函数三要素:功能、参数、返回值)

1.转换

(1)隐式转换:

  1. 算数运算式中低类型转换为高类型,比int类型字节数低的自动转换为int类型再计算,例如char和short。
  2. 赋值表达式中,右边表达式自动隐式转换为左边变量类型并赋值给它。
  3. 函数的传参和返回值也会进行隐式转换。

(2)转换规律:

  1. 高转低则截断,低转高则补符号位。
  2. 当不同类型进行操作时,先转换成相同数据类型进行操作,若字节数不同转换成字节数高的类型;若字节数相同而一种有符号,一种无符号,则转换成无符号类型。

int -> unsigned int -> long int ->unsigned long int -> float ->double -> long double

2.输入输出

(1)按字符输入输出

①putchar()

1.   int putchar(int c)

2.功能:向终端输出一个字符

3.参数(c):要输出字符的ASCII码值

4.返回值:输出字符的ASCII码值,输出错误返回EOF(end of file)文件结束标志

②按字符输入getchar()

1.   int getchar(void);

2.功能读取终端用户输入一个字符

3.参数

4.返回值输入字符ASCII如果达到文件末尾或者发生错误返回EOF

5.用法

int c;

c = getchar(); //用变量c去接收getchar函数的返回值,函数调用完之后,c里面就是输入字符的ASCII值了。

putchar(c); //打印输入的这个字符

6.还可用于吃掉字符(如回车)

(2)按格式输入输出

①printf()

1.   int printf(const char *format, ...);

2.功能按照指定格式终端输出

3.参数:format: 双引号括起来格式控制输出表

4.返回值输出字符个数(不常用)

printf("格式控制串", 输出表);

格式控制串包含两种信息

  1. 普通字符原样输出
  2. 格式说明: 修饰符%后面格式字符用于指定输出格式

输出表按照格式输出数据(可以没有,多个时以逗号分隔)

格式字符如下:

%d int

%ld long

%f float

%lf double

%c char

%s 字符串

%#x 十六进制

%#o 八进制

%u 十进制无符号

%e 指数

%p 地址

②位宽与小数

%m.n含义

.n: 实数指定小数点后几位(四舍五入)

字符串指定实际输出位数

m: 位宽输出数据域数据长度<m空格否则实际输出

-: 左对齐默认右对齐

0: 输出数值时指定左边使用空位置自动填充0,其他不行,只能为0。其他可用循环。

int a = 123;
    float b = 12.345;
    char c = 'a';
    printf("%2d,%8d,%08d,%-8d\n", a, a, a, a);
    printf("%f,%10f,%8.2f,%08.2f\n", b, b, b, b);
    printf("%c,%3c,%-10c\n", c, c, c);
    printf("%s,%10.2s,%-10s", "hello", "hello", "hello");

③scanf()

1.  int scanf(const char *format, ...);

2.功能: 格式终端输入

3.参数类似printf,不同处scanf取数据地址

4.返回值: 正确输入数据个数第一个输入数据格式不正确直接返回0

5.格式:

scanf("格式控制串", 地址表);

地址表变量地址常用地址运算符&

格式字符如同printf

    int a, b;
    scanf("%d %d", &a, &b);
    printf("%d %d\n", a, b);

注意:使用scanf时""中不要写提示语句,不然输入的时候需要按原样输入才能输入成功。

一般空格TAB回车键作为分隔符

其他字符作为分隔符时格式串两个格式字符要一致。

注意:scanf函数输入回车问题: 多次输入字符,回车会被下次的%c接收到。其他格式不会出现这种问题。

注意:有时会产生垃圾字符。

④回收垃圾字符

三种方法

1.getchar()

只能回收任意一个字符,常用于循环内。

2.%*c

也是只能回收任意一个字符,printf()中使用

3.通过空格回收

可以回收一个或者多个空格、回车、tab

具体程序如下:

#include<stdio.h>
int main(){
    char a;
    scanf("%c", &a);
    getchar();
    printf("%c", a);
    //scanf("%*c", &a);
    //scanf(" %c", &a);
    printf("%c", a);
    return 0;
}

3.控制语句

(2).分支语句

①if语句

结构1:

if(表达式)

{

        语句块1;

}

else

{

        语句块2;

}

结构2:

if(表达式1){

        语句块1;

}

else if(表达式2){

        语句块2;

}

else if(表达式3){

        语句块3;

}

……

(最后可加else分支,也可不加)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值