阅读量:0
目录
1、输出格式化
printf:将数据(字符串)输出(打印)到终端
用法: #include <stdio.h> printf("字符串");//字符串多个字符的序列,printf就会输出 字符串 由于使用printf可能会输出各种数据的值,而直接写入printf的输出 "字符串" 就会当作字符 原样输出, 所以在printf的 "字符串" 中 可以包含一种叫做格式化字符,表示其中要输出的类型值,之后再添加具体的值 格式化字符: %d: int类型 %hd:short类型 %ld:long类型 %u:unsigned int类型 %hu:unsigned short类型 %lu:unsigned long类型 %nd:n代表宽度。以n的宽度输出。不足补空格,大于n按实际长度输出。且右对齐 %3d 以宽度为3的十进制格式输出,如果数据长度<3,在左边补空格,否则按实际长度输出。 %c:char类型 %f:float类型 %lf:double类型 %.mf 保留m位小数,遵循四舍五入 %n.mf 数据宽度为n,右对齐,且保留m位小数,遵循四舍五入 %o:以八进制格式 %x:以十六进行格式 %s:字符串格式 %e:浮点数的指数表示 printf("字符串+格式化字符",格式化字符的值1,格式化字符的值2,格式化字符的值3,格式化字符的值4,.....) 注意:格式化字符和值要对应起来
2、输入格式化
scanf:从终端由用户输入数据(从终端获取数据)
格式: #include <stdio.h> scanf("字符串+格式化字符",&变量1,&变量2,&变量3,....) 终端输入时,必须按照scanf "字符串"格式进行输入,通过格式化字符来确定输入的数据类型 注意:格式化字符与变量类型匹配
注意:
1、scanf中,%d、%f、%s 在输入时是不会获取'\n'、'\t'、空格
2、scanf中的%c 会获取'\n'、'\t'、空格
3、常用转义字符
\n 换行,使光标跳转到当前行的下一行的开头, \r 回车,使光标跳转到当前行的开头位置; \b 回退,使光标回退一格; \t 水平制表符; \v 垂直制表符 \\ 打印\; \" 打印“ %% 打印% \ddd 三个八进制数 '\72'代表:八进制数072 \xdd 两个16进制数 '\xab'代表: 十六进制0xab
4、练习代码:
//计算90的十六进制,打印结果 #include<stdio.h> int main(int argc, const char *argv[]) { int a=90,c,d; char b; b=90%16+55; c=90/16; //d=c/16; printf("90=0x%d%c\n",c,b); printf("\x5A\n"); printf("b=%#x\n",90);//十六进制打印90,添加#打印十六进制的标示符0x printf("\x35\n");//打印十六进制35的字符 printf("\x41\n");//打印十六进制41的字符 return 0; }
输出结果:
90=0x5A Z b=0x5a 5 A
//计算c=0xc0,打印十进制整数 #include<stdio.h> int main(int argc, const char *argv[]) { char c=0xc0; int b; b=16*12; printf("b=%d\n",b); printf("%d\n",c); //无符号字符型取值范围-128-127, //192超过取值范围,应该转换为二进制补码取反+1得到-64 return 0; }
输出
b=192 -64
//实现两个数的交换 #include<stdio.h> int main(int argc, const char *argv[]) { int a,b,c; printf("请输入两个数:"); scanf("%d %d",&a,&b); c=a; a=b; b=c; printf("a=%d,b=%d\n",a,b); return 0; }
输出
请输入两个数:34 45 a=45,b=34
//看类型是不是转换为无符号类型 #include<stdio.h> int main(int argc, const char *argv[]) { unsigned int a=10; int b=-100; printf("%d",a+b); char c=192; printf("%d",b+c);//c超过char类型取值范围,值为-64, return 0; }
输出
-90 -164
//设置a和b都是double类型的数据,且a=5.5,b=2.5,表达式(int)a+b/b的结果是多少 #include<stdio.h> int main(int argc, const char *argv[]) { double a,b; a=5.5; b=2.5; printf("%lf\n",(int)a+b/b); return 0; }
输出
6.000000
//终端输入一个整形数据,判断是偶数还是奇数 #include<stdio.h> int main(int argc, const char *argv[]) { int a,b; printf("请输入一个数字:"); scanf("%d",&a); if (a%2==0 && a!=0) printf("%d是一个偶数\n",a); else if(a==0) printf("%d不是偶数也不是奇数\n",a); else printf("%d是奇数\n",a); return 0; }
//设x=2.7,a=8,y=4.9,表达式x+a%3*(int)x+(int)(y/5)%3的结果 #include<stdio.h> int main(int argc, const char *argv[]) { float x=2.7,y=4.9; int a=8; printf("%f",x+a%3*(int)x+(int)(y/5)%3); return 0;
//a是整型变量,则执行表达式a=25/3%3的值是多少 #include<stdio.h> int main(int argc, const char *argv[]) { int a; a=25/3%3; printf("%d\n",a); return 0; }
//输入一个数,看这个数是不是水仙花数 #include<stdio.h> int main(int argc, const char *argv[]) { int a,b,c,d; printf("请输入三个数:"); scanf("%d%d%d",&a,&b,&c); if ( a*a*a+b*b*b+c*c*c == a*100+b*10+c) { printf("能构成水仙花数\n"); d=a*100+b*10+c; printf("%d",d); } else printf("不能构成水仙花数\n"); return 0; }
//赋值运算 #include<stdio.h> int main(int argc, const char *argv[]) { int a=12; a*=2+3/2; printf("%d\n",a); return 0; }