C语言里面float数据用printf(“%d”)输出的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言里面float数据用printf(“%d”)输出的问题相关的知识,希望对你有一定的参考价值。
参考技术A 首先你接收数据有误,你只接收第一个元素。for(i=0;i<3;i++)
scanf("%f",a);
修改为:
for(i=0;i<3;i++)
scanf("%f",&a[i]);
其次,输出要强制类型转换
for(i=0;i<3;i++)
printf("%d\n",a[i]);
修改为:
for(i=0;i<3;i++)
printf("%d\n",int(a[i]));
修改后:
#include
void
main()
float
a[3]=3*0;
int
i;
for(i=0;i<3;i++)
scanf("%f",&a[i]);
for(i=0;i<3;i++)
printf("%d\n",int(a[i]));
参考技术B “c语言不是能自动将输出数据转化为格式控制类型”
指的是在赋值运算的时候,在printf函数里头是需要形参与实参一一对应。而且必须是一一对应!
c语言输出时调用printf函数实现的,这里的要求就与我们的函数里头讲的要求是一样的。
printf只不过是一类标准的库函数,它本质上还是函数。
C语言中printf()的参数是啥,数据类型,数据结构是啥
1printf的参数是可变的,可以在<stdio.h>头文件中查找的,第一个参数是格式字符串,然后跟进的是各个需要输出的变量,如printf("%d %d %c\n",a,b,c);"%d %d %c\n"这个字符串是第一个参数,a是第二个,b是第三个,c是第四个;printf的参数个数是可变的,要根据你需要输出的变量而定;
2数据类型:
包括:char,int,float,double以及unsigned int /char;long int ,long float,long long int;short int,还包括struct,union,enum等等;
3数据结构简单的说就是数据的组织形式,包括逻辑结构和物理结构(存储结构);主要由数据元素,数据关系和数据操作组成 参考技术A 以下来自MSDN
int printf( const char *format [, argument]... );
format
Format control格式控制
argument
Optional arguments可选的参数
//下面是用printf函数,实现标准输出的例子
/* PRINTF.C: This program uses the printf and wprintf functions
* to produce formatted output.
*/
#include <stdio.h>
void main( void )
char ch = 'h', *string = "computer";
int count = -9234;
double fp = 251.7366;
wchar_t wch = L'w', *wstring = L"Unicode";
/* Display integers. */
printf( "Integer formats:\n"
"\tDecimal: %d Justified: %.6d Unsigned: %u\n",
count, count, count, count );
printf( "Decimal %d as:\n\tHex: %Xh C hex: 0x%x Octal: %o\n",
count, count, count, count );
/* Display in different radixes. */
printf( "Digits 10 equal:\n\tHex: %i Octal: %i Decimal: %i\n",
0x10, 010, 10 );
/* Display characters. */
printf("Characters in field (1):\n%10c%5hc%5C%5lc\n", ch, ch, wch, wch);
wprintf(L"Characters in field (2):\n%10C%5hc%5c%5lc\n", ch, ch, wch, wch);
/* Display strings. */
printf("Strings in field (1):\n%25s\n%25.4hs\n\t%S%25.3ls\n",
string, string, wstring, wstring);
wprintf(L"Strings in field (2):\n%25S\n%25.4hs\n\t%s%25.3ls\n",
string, string, wstring, wstring);
/* Display real numbers. */
printf( "Real numbers:\n\t%f %.2f %e %E\n", fp, fp, fp, fp );
/* Display pointer. */
printf( "\nAddress as:\t%p\n", &count);
/* Count characters printed. */
printf( "\nDisplay to here:\n" );
printf( "1234567890123456%n78901234567890\n", &count );
printf( "\tNumber displayed: %d\n\n", count );
以上是关于C语言里面float数据用printf(“%d”)输出的问题的主要内容,如果未能解决你的问题,请参考以下文章
C语言中printf输出float和double都用%f么(scanf又如何)
C语言初级问题求解=。= 为什么我的这段程序用int %d可以算 但是用float %f却运行不了呢?