1:基本的输入函数printf()
printf()将变量内容输出到显示器上.
具有四种用法:
㈠:printf("字符串/n");
㈡:printf("输出控制符",输出参数);
㈢:printf("输出控制符1 输出控制符2 输出控制符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("输出控制符1 输出控制符2 输出控制符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;
}
---------------------------------
为什么需要输出控制符:
1:01组成的代码可以表示数据也可以表示指令
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提示用户以什么样的方式输入;
2:scanf中尽量不要使用非输入控制符,尤其是 /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