C语言菜鸟自学笔记(3)

1:基本的输入函数printf()

  printf()将变量内容输出到显示器上.

具有四种用法:

㈠:printf("字符串/n");

㈡:printf("输出控制符",输出参数);

㈢:printf("输出控制符输出控制符输出控制符3",输出参数1,输出参数2,输出参数3);

㈣:printf("输出控制符 非输出控制符",输出参数);

---------------------------------

/*printf("字符串/n")*/

# include <stdio.h>

int main (void)

{

printf("哈哈!/n");

return 0;

}

---------------------------------

/*printf("输出控制符",输出参数)*/

# include <stdio.h>

int main (void)

{

int i = 10;

printf("%d/n",i);

return 0;

}

---------------------------------

/*printf("输出控制符输出控制符输出控制符3",输出参数1,输出参数2,输出参数3)*/

# include <stdio.h>

int main (void)

{

int i , j , k;

i = 13;

j = 14;

k = 15;

printf("%d %d %d/n",i ,j ,k);

return 0;

}

---------------------------------

 

输出控制符:%d,%ld,%c,%f,%lf,%#X(%x或者%X或者%#x),%o,%s

---------------------------------

 

/*比较16进制的输出控制符*/

# include <stdio.h>

int main (void)

{

int i = 47;

printf("%x/n",i);

printf("%X/n",i);

printf("%#x/n",i);

printf("%#X/n",i);//推荐写法

 

return 0;

}

---------------------------------

为什么需要输出控制符:

101组成的代码可以表示数据也可以表示指令

2:如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同的输出格式输出就会有不同的输出结果。

 

2:基本输出函数scanf()

scanf()通过键盘将数据输入到变量中。

两种用法:

㈠:scanf("输入控制符",输出参数);

功能是将键盘输入的字符转化为输入控制符所规定的格式的数据,然后存入以输出参数的值为地址的变量中

㈡:scanf("非输入控制符 输入控制符输出参数);

---------------------------------

/*scanf("输入控制符",输出参数)*/

# include <stdio.h>

int main (void)

{

int i;

scanf("%d",&i);

printf("i = %d/n",i);

 

return 0;

}

---------------------------------

如何使用scanf编出高质量的代码

1:使用scanf之前先使用printf提示用户以什么样的方式输入;

2scanf中尽量不要使用非输入控制符,尤其是 /n

3:应当编写代码对用户的非法输入作适当的处理。

---------------------------------

/*处理用户的非法输入*/

# include <stdio.h>

int main (void)

{

int i;

char ch;

scanf("%d",&i);

printf("i = %d/n",i);

while((ch = getchar()) != '/n')

continue;

int j;

scanf("%d",&j);

printf("j = %d/n",j);

return 0;

}

---------------------------------

1各类数值型数据之间的混合运算

变量的数据类型是可以转换的。转换的方法有两种,一种是自动转换,一种是强制转换。自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则:

1) 若参与运算量的类型不同,则先转换成同一类型,然后进行运算。

2) 转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。

3) 所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。

4) char型和short型参与运算时,必须先转换成int型。

在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。

 

类型自动转换的规则:

char,shot→int→unsignde→long→double

---------------------------------

 

/*类型自动转换,PI为实型;s,r为整型。在执行s=r*r*PI语句时,r和PI都转换成double型计算,结果也为double型。但由于s为整型,故赋值结果仍为整型,舍去了小数部分。*/

# include <stdio.h>

int main (void)

{

float PI = 3.14159;

int s , r = 5;

s = r * r * PI;

printf("s =  %d/n", s);

 

return 0;

}

-------------------------------

 

强制类型转换:

强制类型转换是通过类型转换运算来实现的。

其一般形式为:

    (类型说明符)  (表达式)

其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

例如:

    (float) a      把a转换为实型

        (int)(x+y)     把x+y的结果转换为整型

在使用强制转换时应注意以下问题:

1) 类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。

无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

-------------------------------

/*强制类型转换*/

# include <stdio.h>

int main (void)

{

float f = 3.14;

printf("(int)f = %d,f = %f/n",(int)f,f);

 

return 0;

}

-------------------------------

输出结果是(int)f = 3,f = 3.140000

-------------------------------

 

 

2:运算符

算术运算符:+ , - , * , /(除以),%(取余),++(自增),--(自减)

关系运算符:>,>=,<,<=,!=(不等于),==(等于)

逻辑运算符:!()&&()||()

赋值运算符:=,+=,-=,*=,/=,%=。

运算符的优先级:算术>关系>逻辑>赋值

-------------------------------

# include <stdio.h>

int main (void)

{

int i,j;

i = 4;

j = 7;

int a , b , c , d , e , f , g , h , k;

a = i + j;

b = i - j;

c = i * j;

d = j / i;

e = j % i;

f = i++;

g = ++i;

h = j--;

k = --j;

printf("a = %d, b = %d, c = %d, d = %d, e = %d, f = %d , g = %d, h = %d, k = %d/n", a , b , c , d , e , f , g , h , k);

 

return 0;

}

-------------------------------

输出的结果是:

a = 11, b = -3, c = 28, d = 1, e = 3, f = 4 , g = 6, h = 7, k = 5

-------------------------------

# include <stdio.h>

int main(void)

{

  int i=8;

  printf("%d/n",++i);

  printf("%d/n",--i);

  printf("%d/n",i++);

  printf("%d/n",i--);

  printf("%d/n",-i++);

  printf("%d/n",-i--);

 }  

-------------------------------

输出的结果是

9

8

8

9

-8

-9

-------------------------------

# include <stdio.h>

int main (void)

{

int i = 5 , j = 5 , p , q;

p = (i++) + (i++) + (i++);

q = (++j) + (++j) + (++j);

printf ("p = %d,q = %d,i = %d,j = %d/n",p,q,i,j);

 

return 0;

}

-------------------------------

输出结果是:p = 15,q = 22,i = 8,j = 8

-------------------------------

 

构成复合赋值表达式的一般形式为:

变量  双目运算符=表达式

它等效于

变量=变量 运算符 表达式

例如:

    a+=5      等价于a=a+5

    x*=y+7    等价于x=x*(y+7)

    r%=p      等价于r=r%p

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值