一个C语言问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个C语言问题相关的知识,希望对你有一定的参考价值。
设变量X为float型且已赋值,则以下语句中能将X中的数值保留到小数点后两位,并将第
三位四舍五入的是
A)x=x*100+0.5/100.0;
B)x=(x*100+0.5)*100.0;
C)x=(int)(x*100+0.5)/100.0;
D)x=(x/100+0.5)*100.0;
答案选C.不过我不清楚为什么,这种题目怎么做啊
首先是float型的x,既然要保留小数点后两位,那就应该x*100,这样将他扩大100倍,比如x=1.2343,x*100=123.43,这样小数点后面一位就是需要舍入的.然后(int)x*100+0.5这样强制转换为一个整形数,起到了舍入的作用.我们知道,这种强制转换是不考虑精度的,在内存中就是把一个高字节的数强行缩短成低字节,所以精度会丢失.经过+0.5后再取整得到的就是舍入的值.最后再把这个数/100.0得到结果.
这种题你根据它的意思,分析选项的异同就可以了. 参考技术A 一个浮点型变量只能保证的有效数字是7位。
比如x=1.234567,x*100=123.4567,加上0.5的作用就是四舍五入,这里简单说明一下,比如0<x<0.5,x+0.5<1.0,那么对(x+0.5)取整的话就可以得到0.最后再除一百就可以得到题目要求的值了!
C语言问题 怎样从一个文件中逐个读入字符(每次读入一个)
怎样从一个文件中逐个读入字符(每次读入一个),再把读入的数经过加密后逐个写入到指定的文件中,加密过程不需要,读写过程的编程请各位赐教了~~高手们都来帮帮忙呀~~~~
charstr[1024];
inti=0;
while((str[i]=getchar())!='\\n')
i++;
getchar();
扩展资料
C语言读取一个文件的字符:
#include<stdio.h>
intmain(void)
FILE*stream;
errno_terr;
//Openforread(willfailiffile"crt_fopen_s.c"doesnotexist)
err=fopen_s(&stream,"crt_fopen_s.c","r");
if(err==0)
printf("Thefile'crt_fopen_s.c'wasopened\\n");
else
printf("Thefile'crt_fopen_s.c'wasnotopened\\n");
参考技术A一般有两种方式
FILE*fp=fopen("文件路径名","打开方式");
文件路径可以是绝对路径,默认为相对路径
打开方式由于是读入,可以直接写"r"
方法1,
char ch;while(!feof(fp))
fscanf(fp,"%c",&ch);
用fscanf()函数读入
方法2,
char ch;while(!feof(fp))
ch=fgetc(fp);
用fgetc()函数读入
参考技术B 先打开文件,然后利用读写函数ch=fgetc(fp);
while(ch!=EOF)
putchar(ch);
ch=fgetc(fp);
fp为文件型指针变量,ch 字符变量。fgetc函数带回一个字符,赋给ch。如果在执行fgetc函数度字符时遇到文件结束符,函数返回一个文件结束标志EOF(即-1)
以上适用于文本文件。需要#include "stdlib.h"本回答被提问者采纳
以上是关于一个C语言问题的主要内容,如果未能解决你的问题,请参考以下文章