c语言程序复习题~~求教高手帮忙啊 太多了 我的全不分奉献上啦 就这么多了

来源:百度知道 编辑:UC知道 时间:2024/05/03 00:45:11
1.执行语句:int a[10];可以给a数组分配_______个字节的存储空间。
2、在c语言中,二维数组元素在内存中是按 存放的;若有定义:double x[3][5];则x数组中行下标的下限是 ;列下标的上限是 。
3、若有定义:int a[2][3]={2,4,6,8};则a[1][0]的值是 。
4、如果要将一个字符型数组中的字符串拷贝到另一个字符型数组中,应使用的函数是_______。
5、设有n行m列的数组a,假设数组的首地址是从0开始的,则a[i][j]的地址是____。
6、假设定义数组int a[5]; 则该数组的首地址可以表示为_______和________。
7、比较两个字符串的大小的函数是________。
8、下面程序段的运行结果是 。
char a[7]=“abcdef”;
char b[4]=“ABC”;
strcpy(a, b);
printf(“%c”, a[5]);
9、下面程序的运行结果是 。
main( )
{ int i, f[10];
f[0]=f[1]=1;
for (i=2; i<10; i++)
f[i]=f[i-2]+f[i-1];
for (i=0; i<10; i++)
printf("%3d", f[i]);
}
10、下面程序段的运行结果是 。
char c[5]={‘a’, ‘b’, ‘\0’, ‘c’, ‘\0’};
printf(“%s”, c);
1、有下面程序段
char a[3], b[ ]=“China”;
a=b; printf(“%s”, a);
则 。
A、运行后将输出China B、运行后将输出Ch
C、运行后将输出Chi D、编译出错
2、在C语言中,引用数

都是基本的问题,我只说一下第一题,因为事实上这个题目最难,也比较容易错(可能“标准答案”就不一定是对的)。

语句
int a[10];
声明一个数组,数组所占空间大小可以由表达式sizeof(a)求出。按C语言规定,则有sizeof(a) == sizeof(int) * 10。求出的数字的单位是sizeof(char),即C语言保证sizeof(char) == 1。

至于具体这个数组占多少个字节,就不一定了。

首先,现代计算机的“字节”是8个2进制位,但“字节”概念在几十年前是没有标准化的,可能就有6位或7位之类;第二,一个字符(char类型)可能占一个字节,但并不一定占一个字节,C语言没有规定,至于它在计算机中具体占几个二进制位,在C语言中是用<stddef.h>中的一个宏CHAR_BIT确定的,在大多数现在的微型计算机上这个数是8。

抛开上面比较少见的情况不计,问题还是不能解决,因为C语言也没有规定int类型应该占多少二进制位。一般来说,int类型的大小和机器字长相匹配。现在的电脑一般是32位机或64位机,所以就是4个或8个字节。但386以前的一些旧电脑是16位机,则只有2个字节。

还有麻烦的是,在不同的编译器上,甚至不同版本的编译器上,int类型的大小也不同。TC 2.0是80年代末的软件,所以只是16位的;但一般常用的VC编译器,则都是32位的;如果你使用比较新式的电脑(用Intel64位处理器的),可能会装上支持64位的编译器(如GCC)。那么一个int数据是2个、4个还是8个字节,即使在同一台电脑上也可能不一样。

总之,这题(不过也只有这题)比较复杂,应该是出题人的知识太单一,没有注意到这些情况。

再说一个题,补充题目的第5题,C和D两个选项都是正确的。猜测出题人的意图大概是要你选C。不过D也进行了语法正确的初始化,第一个元素被初始化为10,其他元素初始化为0。