首页
外语
计算机
考研
公务员
职业资格
财经
工程
司法
医学
专升本
自考
实用职业技能
登录
计算机
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编一个函数float fun(double h),该函数的功能是:使变量h中的值保留两位小数,并对第三位进行四舍五入(规定h中的值
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编一个函数float fun(double h),该函数的功能是:使变量h中的值保留两位小数,并对第三位进行四舍五入(规定h中的值
admin
2018-08-11
34
问题
使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编一个函数float fun(double h),该函数的功能是:使变量h中的值保留两位小数,并对第三位进行四舍五入(规定h中的值为正数)。
例如,若h值为1234.567,则函数返回1234.570000;若h值为1234.564,则函数返回1234.560000。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
floatfun(float h)
{
}
void main()
{
FILE*wf;
float a;
system("CLS");
printf("Enter a:");
scanf("%f",&a);
printf("The origrinal data is:");
printf("%f\n\n",a);
printf("The result:%f\n",fun(a));
/*********found*********/
wf=fopen("out.dat","w");
fprintf(wf,"%f",fun(8.32533));
fclose(wf);
/*********found*********/
}
选项
答案
float fun(float h) { int tmp=(int)(h*10OO+5)/10; /*单精度数h乘以1000后再加5,相当于对h中的第三位小数进行四舍五入,除以10后将其赋给一个长整型数时就把第三位小数后的数全部截去*/ return(float)tmp/100.0; /*除以100,保留2位小数*/ }
解析
注意:本题要求对h的值真正进行四舍五入运算,而不是为了输出,即不能用prinff("%7.2f",h)来直接得到结果。四舍五入算法:如果要求精确到小数点后面的第n位,则需要对第n+1位进行运算。方法是将该小数乘以10的n+1次方后加5,然后除以10并强制转换变量类型为整型,再将该数除以10的n次方,同时强制转换类型为浮点型。
代码实现如下:
int t;/*定义整型变量t*/
t=(int)(h*10
n+1
+5)/10;/*对h进行操作,得到值浮点型,t取值时取整数部分。10
n+1
为要扩大的倍数*/
h=(noat)t//10
n
;/*将t缩小10
n
倍,并转换成浮点型*/
转载请注明原文地址:https://kaotiyun.com/show/wkxp777K
本试题收录于:
二级C语言题库NCRE全国计算机二级分类
0
二级C语言
NCRE全国计算机二级
相关试题推荐
下列程序的循环次数是______。x=2;do{x=x*x;}while(!x);
下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]==1;pr
已经定义ch为字符型变量,以下赋值表达式中错误的是______。
有以下程序#include<stdio.h>intf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}
若有运算符:>、=、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为()
执行下面的程序后,a的值为()。main(){inta,b;for(a=1,b=1;a<=10;a++){if(b%3==1){b+=3;continue;}
函数viodfun(float*sn,intn)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。 s=1-1/3+1/5-1/7+…1/(2n+1) voidfun(float*s
下列程序段的输出结果是【】。main(){charb[]="Hello,you";b[5]=0;printf("%s\n",B);}
下列程序的运行结果为()。#include<stdio.h>voidabc(char*str){inta,b,i,j;for(i=j=0;str[i]!=’\0’;i++)if(str[i
有以下程序#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen("D1v.dat","w");fprintf(fp,"%d\n",i);fprintf
随机试题
工人必需消耗的工作时问中,()是指为保证基本工作能顺利完成所消耗的时间。
总结我国多次行政管理机构改革的经验,主要有以下几个方面:
关于依沙吖啶羊膜腔内注射引产叙述错误的是
A.β内酰胺类药品B.某些激素类C.高致敏性药品D.青霉素类药品应当使用专用设施(如独立的空气净化系统和设备)的是()。
某依法必须公开招标的国有资产建设投资项目,采用工程量清单计价方式进行施工招标,业主委托具有相应资质的某咨询企业编制了招标文件和最高投标限价。招标文件部分规定或内容如下:(1)投标有效期自投标人递交投标文件时开始计算。(2)评标方法采用经评审的最低投标
花岗石幕墙饰面板性能应进行复验的指标是()
申请营业部负责人的任职资格,应当由拟任职期货公司向公司住所地的中国证监会派出机构提出申请。()
基金对外提供的会计报表不包括()。
A、B两站之间有一条铁路,甲、乙两列火车分别停在A站和B站,甲火车4分钟走的路程等于乙火车5分钟走的路程,乙火车上午8时整从B站开往A站,开出一段时间后,甲火车从A站出发开往B站,上午9时整两列火车相遇,相遇地点离A、B两站的距离比是15:16,那么,甲火
临界区是______。A.一个缓冲区B.一段程序C.一段共享数据区D.一个互斥资源
最新回复
(
0
)