【c语言】C语言中的坑

1.输出数据所占宽度

1.float a=12.346;
printf("%4.2f\n",a);//12.35  输出数据多于n2位,截去右边多余的小数,并对截去部分的第一位小数做四舍五入处理

2.float a=12.346;
 printf("%.3f",a);//12.346不指定总宽度,仅指定小数位,其他有系统自动突破

 3.float a=12.346;
 printf("%3.0f",a);//空格12
  
 4.float a=12.346;
  printf("%.0f",a);//不输出小数部分
 5.int a=3;
  printf("%5d");//4个空格3 
 6.int a=3;
  printf("%05d");//00003
 7.int a=3;
  printf("%.5d");//00003
 8.float a=12.346
  printf("%8.4f",a);//空格12.4360
 9.float a=12.346
   printf("%8.4f",a);//012.4360
 10.char s[18]="a book";
    printf("%.4s",s);//a bo  n2小于字符串的长度,将只输出字符串的前n2个字符

2.字符串的长度

1.语句printf("%d\n",strlen("AFS\n\x2E"));输出结果是5
            AFS是三个  \n一个   \x2E一个
2.语句printf("%d\n",strlen("AFS\n\\123"));输出结果是8
           AFS是三个   \n一个 \\是转义字符\是一个  123三个
3.语句printf("%d\n",strlen("AFS\n\035\\"));输出结果是6
            AFS是三个   \n一个 \035是一个八进制数 \\是转义字符\是一个
4.语句printf("%d\n",strlen("\x3Df\085\\"));输出结果是1
            \x3DF是十六进制数 是一个    \085 不是八进制数 因此先是\0 \0结束字符串不做数
5.语句printf("%d\n",strlen("\x3Dde8965G\085\\"));输出结果是2
             
   \x3Dde8965是个十六进制数 是一个    G是一个  \085 不是八进制数 因此先是\0 \0结束字符串不做数
6.语句printf("%d\n",strlen("\\TOP\t\65\""));输出结果是7
               \\一个    TOP三个  \t一个   \65一个  \"一个

3.

char str[]={'s','t','r','i','n','g','!'};

以上定义了一个有7个元素的字符数组str,因为所赋初值的末尾没有串结束标志,因此不能认为在str中存放了字符串,这时不能把它当作字符串使用。正确格式应是:char str[]={'s','t','r','i','n','g','!','\0'};

4.

定义 float f1,f2,f3;
     scanf("%f%f%f",&f1,&f2,&f3);

在输入整数和实数这类数值型数据时,输入的数据之间必须用空格、回车符、制表符(Tab键)等间隔符隔开,间隔符个数不限。即使在格式说明中人为指定了输入宽度,也可以用此方式输入。

若要给f1赋值10,f2赋值12.3,f3赋值1234567.89,输入格式可以是(输入的第一个数据之前可有任意空格):

10 12.3 1234567.89<CR>

此处<CR>表示回车键。也可以是

10<CR>
12.3<CR>
1234567.89<CR>

只要能把3个数据正确输入,就可以按任意格式添加间隔符。

5.设char *s="\ta\017bc";则指针变量s指向的字符串所占的字节数是:

首先,字节数不是指字符串长度,字符串长度比存储字节数少一。
\t 是一个转义字符 相当于键盘“Tab”键
a 普通字符
\017 转义字符 ASCII代码值为8进制数17即10进制数15的那个符号
b 普通字符
c 普通字符
字符串结束标志‘\0’
s是字符串类型。每一个都是char型变量;char型变量的二进制长度是8,也就是一个字节,
所以指针变量s 指向的字符串所占字节数是6 ,字符串长度是5.

6.如果函数值的类型与返回值类型不一致,以函数值类型为准。

   如果形参与实参类型不一致,以形参类型为准。

发布了52 篇原创文章 · 获赞 69 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/lbqlzch/article/details/85332545