怎么用c语言求一个数组中所有数的整数部分和及小数部分和?

这是全国计算机等级考试,三级数据库技术的上机试题?

#include<stdio.h>

voidmain()

{

doubles;

inta;

doubleb;

printf("Pleaseinputadoublenumber:");

scanf("%lf",&s);

a=(int)s;

b=s-a;

printf("ln%d%lf",a,b);

{

扩展资料

C语言求100内素数

#include<iostream>

usingnamespace std;

int main() {

bool prime=true;

for(inti=0;i<100;i++) {

prime=true;

for(intj=2;j<i;j++) {

if(i%j==0)

prime=false;

}

if(prime==true)

cout<<i<<endl;

}

return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-14

对于任意的浮点数f, C语言规定,将其强制转换为整型时,(int)f就是其整数部分的值。

根据这个,可以知道小数部分就是f - (int)f。 

不过,要求整数部分和小数部分和,可以有更简单的思路,不需要求每个数的小数部分,而是求得所有数的整数部分和后,用所有数的和减去整数部分和,也就是小数部分和了。这样可以精简代码,提高效率。


算法流程如下:

1 定义两个统计变量,保存整数和以及所有数的和,初始化为0;

2 遍历数组,求每个数的整数部分,并累加到整数和。

3 同步计算每个数的和;

4 遍历结束后,结果相减就是小数和;

5 输出结果。


参考代码如下:

float a[10];
int s_int = 0;
float s_float = 0;
int i;

for(i = 0 ;i < 10; i ++)
    scanf("%f", &a[i]);//输入10个数

for(i = 0; i < 10; i ++)
{
    s_int += (int)a[i];//分别累加。
    s_float += a[i];
}
s_float -= s_int; //得到小数部分和。
printf("整数部分和为 %d, 小数部分和为%f\n", s_int, s_float);//输出。

第2个回答  2013-07-26
算法思想:每一个数除以一的商是整数部分,余数是小数部分。
大概程序如下(未进行调试)

void main()
{
int a=0; //整数和
float b=0.0; //小数和
//假设你的数组是array[];
for(int index=0;index<array.length;index++)
{
a+=(int)array[index];
b+=array[index]%1;
}

}
第3个回答  2013-07-26
int a[100],i;定义数组
int sum1=0;保存整数和
float sum2=0.0;保存小数和
for(i=0;i<100;i++)
{
int tmp1;
float tmp2;
tmp1=a[i];
tmp1=(int)tmp1;取整,得到保存在数组中的整数
sum1=sum1+tmp1;

tmp2=a[i]-1.0*tmp1;
sum2=sum2+tmp2

sum1 += tmp;
}

}
第4个回答  2013-07-26
/* HELLO.C -- Hello, world */

#include "stdio.h"
#include "conio.h"

#define max 5
main()
{
float a=0, num[max]={10.2,2.3,3.6,2.5,3.2};
int i,j,sum=0;
for(i=0;i<max;i++)
{
sum+=(int)num[i];
a+=num[i]-(int)num[i];
}
printf("%d %f",sum,a);
getch();
}本回答被网友采纳
相似回答