首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

高分求解简单C语言题解决思路

2012-03-01 
高分求解简单C语言题希望会的人多多帮忙新手,分要不够给的话,我会记住你们的ID,在以后的文章里,多给你们加

高分求解简单C语言题
希望会的人多多帮忙新手,   分要不够给的话,   我会记住你们的ID,   在以后的文章里,   多给你们加分的,   一分耕耘一分收获!

1)中文到底占几个字符啊,为什么我可以用一个字符读出中文,用fputc( '的 ',     fp);却无法写入文本文件中呢?写进的是乱码

2)程序运行时需要和文件进行操作,一次读写多少字符,可以使程序效率达到最高,有哪些标准可以参考呢?或者怎么测试呢?

3)include   命令包含头文件时,会不会因为包含的头文件过多,而导致程序编译后占用更多空间?

4)学习C99标准,介绍几本中文版的书

5)
#include   <stdio.h>
#include   <stdlib.h>
#include   <string.h>
#include   <malloc.h>
#include   <math.h>

int   main(void)
{
FILE   *fp;

if   ((fp   =   fopen( "test.txt ",   "r "))   ==   NULL)
{
printf( "Cannot   open   file   test.txt\n ");
exit(0);
}

//为什么输出结果为3276543,   编译器VC6,   文本内容只有整数   10
printf( "%d\n ",   getw(fp));

fclose(fp);

return   0;
}

6)附一数学题
X:   1     2     3       4       5
Y:   1     3     5       3       1
画出图象是抛物线,   选择y   =   a   *   x   ^   2   +   b   *   x   +   c   这个模型,   为什么代任意三点都不行呢?哪里出问题?   我想知道原因.

[解决办法]
1)中文到底占几个字符啊,为什么我可以用一个字符读出中文,用fputc( '的 ', fp);却无法写入文本文件中呢?写进的是乱码

弄明白中文在计算机中是怎么编码的,各种编码方式同一个汉字编码出的字符数是不一样的,
比如UNICODE和GB2312都是两个字节,utf8则是三个字节。用fputc( '的 ', fp)可以写进文件,只是打开这个文件的程序不知道这是什么编码方式,按默认的编码方式打开可能是错误的。你可以先用下记事本的另存为功能,选择不同的编码方式看将同一个汉字存成文件后看看数据都是什么,windows会加上自己的文件头来表示这个数据是什么编码方式。

2)程序运行时需要和文件进行操作,一次读写多少字符,可以使程序效率达到最高,有哪些标准可以参考呢?或者怎么测试呢?

理论上将当然一次越多越好,读取存储器中的操作算是IO操作相对比较慢,但这得看具体得文件系统读写API是怎么实现的,现在的操作系统这中间有太多层次。可以用timer或者直接读取系统的clock计时测试。

3)include 命令包含头文件时,会不会因为包含的头文件过多,而导致程序编译后占用更多空间?

include只是一种程序的表示方式,你分为再多的头文件也是告诉编译器同样的内容,增加的只是编译时间,合理的分离成各个头文件可以让程序更具有可读性。

4)学习C99标准,介绍几本中文版的书

实践

5)
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <math.h>

int main(void)
{
FILE *fp;

if ((fp = fopen( "test.txt ", "r ")) == NULL)
{
printf( "Cannot open file test.txt\n ");
exit(0);
}

//为什么输出结果为3276543, 编译器VC6, 文本内容只有整数 10
printf( "%d\n ", getw(fp));

fclose(fp);

return 0;
}

3276543的16进制是31EFFF,弄懂了第一个问题这个问题你也就懂了
[解决办法]
2程序运行时需要和文件进行操作,一次读写多少字符,可以使程序效率达到最高,有哪些标准可以参考呢?或者怎么测试呢?
-->
这个没有定数的。如果要研究这个的话, 需要很多因素如和很强的数学来做做模拟。:)

3include 命令包含头文件时,会不会因为包含的头文件过多,而导致程序编译后占用更多空间
-〉
这个和你所用到的库函数有多少有关,一般这也不是问题。要知道编译,链接的时候只是找到你include的文件中所被用到的函数而已。如果你的程序连这点空间都想省的话,那就不能完成你的功能了。(当然你要想自己编相同功能的函数也可以, 赫赫 不过一般和库函数相比较都是既费时间,又费空间)

4 学习C99标准,介绍几本中文版的书
-〉
prime c v5

5 -〉不知道, 没用过

6-〉不知道你说的什么意思



[解决办法]
1、
中文是两个字节,而且楼主要记住的就是在计算机中显示中文,是画出来的。

在以前使用那些老东东的时候,由于没有硬盘,把中文显示出来,做成字库是

不现实的,所以就有了汉卡(好像求伯君冒病写过一个汉卡程序),把那些

汉字信息存储在了硬件上,供程序使用。

后来随着PC的发展,我们就把汉字信息,做成了字库供程序调用。就有了后来的

HZ_16(16点阵) HZ_24(24点阵)等等。到了现在windows里面使用了很多的字体,

其实那些所谓的字体,就是一种字库文件。

但是无论怎么说,汉字仍然还是被画出来的,被画出来的文字还有韩文、以及乃那些



畜生使用的“日文”等等很多。

2、程序和文件打交道的时候,一个很重要的原则就是减少打开、关闭文件的次数、减少

读写文件的次数。

凡是学过计算机组成原理的人都知道,在当前计算机存储设备中访问速度从高到低依次是

CPU高速二级缓存(Cache)、内存(RAM)、硬盘、光盘、软盘。所以呢,我们在程序中

要尽量的减少跟永久存储数据的存储设备打交道(如:硬盘、光盘、软盘)。所以我们就会

设一个数据缓冲区,先把数据缓冲区里面,然后再使用,这样效率会大大提高。

由于Cache性能的影响,我们在开 buffer 的时候应尽量的保证是2的整次方。如:256、512、

1024等。关于Cache可以参考我对一道百度面试题的解析。

http://blog.csdn.net/ammana_babi/archive/2006/09/20/1254261.aspx

3、上面有人答复的很不错了。

4、 练。

5、仔细的去理解和体会你问的第一个问题。最好弄个字库文件,HZ_16在以前最通用,找本书

做做试验。你如果要在纯dos下显示汉字,必须要字库,而不是你所想象的那么一个简单的

printf或 fputc等等就可以显示的,你要把汉字信息读到buffer里面,然后再一个点一个点的

去画。而如果在VC6下,你使用 puts( "你好 "); 应该是可以支持的了,因为这个函数已经对

字符的处理做了修改了。

热点排行