输入输出函数

1、printf

#include<stdio.h>
void main(){
  // printf  f代表format,按格式输出
	printf("%d,%f\n", 1.0,1);  //0,0.0000000    格式不匹配输出错误, printf不会进行自动类型转换,
                    //同样的二进制按照不同方式解析会有不同时的数值 printf("%%d",1); //$d 因为printf从左至右解析 %% 解析成% 然后再输出%d printf("%*d\n",3,5); //*控制符代表替换第一个数为* 即为printf("%3d",5); for(int i = 1; i<5;i++){ printf("%*d\n",i,1); } printf("%+d,%d\n",10,-10); //+10,-10 printf("% d,% d\n",10,-10); //空格空字符对正数来说,前面会多一个空格, 对负数没有影响, printf("%#x,%x\n",10,10); //#控制符表示16进制前自动加0x printf("%#o,%o\n",10,10); //#控制符表示8进制前自动加0 putchar('H'); //输出一个字符,也可以对应的ascci码值 putchar('A'+32); // 小写a puts("Hi"); //输出字符串后自动换行 }

 2、scanf一定要记得取地址符,否则会把变量的值当做内存地址

 

#include<stdio.h>
void main(){
     int n1,n2,n3;
     scanf("%d%d%d",&n1,&n2,&n3);   //输入多个数据可以用空格键,回车键,tab键隔开输入,最后回车
     //如果输入的数据满足了scanf对需要,则输入结束,如果回车后数据不够,则回车只当作一个空白符。
     //scanf_s()  安全输入函数
     printf("%d",n1);

     //单精度输入数据
     float f;
     scanf("%f",f);  //130.0
     scanf("%e",f);  //1.3e2 
     scanf("%E",f);  //1.3E2 
     scanf("%g",f); //1.3e2 
     scanf("%G",f); //1.3E2 

     //双精度输入数据不能用%f,要用%lf
     double d;
     scanf("%lf",&f);  //130.0
     scanf("%le",&f);  //1.3e2 
     scanf("%lE",&f);  //1.3E2 
     scanf("%lg",&f); //1.3e2 
     scanf("%lG",&f); //1.3E2 

     int a,b,c;
     scanf("%d,%d,%d",&a,&b,&c);  //输入也要按照1,2,3的格式输入
     scanf("    %d%d%d",&a,&b,&c);  //前面有空白符会自动忽略空白符
     scanf("%d  %d %d",&a,&b,&c);  //中间有空白符会自动忽略空白符
     scanf("%d%d%d  ",&a,&b,&c);  //后面有空白符会要求多输入一个数据,即输入四个数据
     //使用scanf尽量不要使用非空白符和空白符

     //在用%c格式符时,空格字符和转义字符都被当作有效字符输入,如:
     char c1,c2,c3;
     scanf("%c%c%c",&c1,&c2,&c3);
     printf("\n[%c] [%c] [%c]",c1,c2,c3);

     //宽度指示时,读入到相应的宽度。如%3d,则只解析3个数字即认为读入这个整数完毕。
     int num;
     scanf("%3d",&num);  //输入123456,只能接收123

     char c4 = getchar(); //getchar()会把空格,tab和回车也当成是一个字符,
                    //如果要获取两个字符就要用三个getchar(),第三个getchar用来接收最后一个回车字符 char c5 = getchar(); char c6 = getchar(); //scanf char str[30] ={0}; //初始化数组为0 scanf("%[xyz]",str); //值接受xyz的输入,有一个字符不匹配就退出 printf("%s",str); scanf("%[^xyz]",str); //值接受xyz以外字符的输入,xyz中有一个字符匹配就退出 printf("%s",str); scanf("%[a-z]",str); //值接受a-z的输入,有一个字符不匹配就退出 printf("%s",str); int data; scanf("%d%n",&data,&num); //%n统计输入了多少个字符,把数值赋值给num printf("%d",num); //%n统计输入了多少个字符,把数值赋值给num printf("hello%n,china",num); //num=4 //*空字符会忽略此次输入 scanf("%d%i%d",&x,&y); //输入123,2被忽略,x=1,y=3 //scanf("%5.3f",&num); //指定精度后,scanf就无效了 double db; //scanf("%f",&db);// %f对double无效 scanf("%lf",&db);// /* %d —— 以带符号的十进制形式输出整数 %o —— 以无符号的八进制形式输出整数 %x —— 以无符号的十六进制形式输出整数 %u —— 以无符号的十进制形式输出整数 %c —— 以字符形式输出单个字符 %s —— 输出字符串 %f —— 以小数点形式输出单、双精度实数 %e —— 以标准指数形式输出单、双精度实数 %g —— 选用输出宽度较小的格式输出实数 %a —— 十六进制指数的形式输出 p计数法 %hhd,%hhu,%hho,%hhx %hh限定了8位一个字节的十进制 char %hd,%hu,%ho,%hx %h限定了16位2个字节的十进制 short %ld,%lu,%lo,%lx %l限定了32位4个字节的十进制 long %lld,%llu,%llo,%llx %ll限定了64位一个字节的十进制 long long %Ld,%Lu,%Lo,%Lx %L限定了64位一个字节的十进制 long double */ }

 3、答疑

#include<stdio.h>
void main(){
     //bool b;  C语言中没有bool类型,只能用char或int 代替
     printf("%d\n",sizeof("你"));  //4  uft-8中一个汉字占3个字节,字符串最后加一个\0,占一个字节,总共是4个字节
     printf("%d\n",sizeof("你好"));//7
}

 

posted @ 2019-07-27 14:38  Coding_Changes_LIfe  阅读(317)  评论(0编辑  收藏  举报