C语言的,麻烦帮忙解释以下1

[复制链接]
查看11 | 回复5 | 2009-3-26 18:43:33 | 显示全部楼层 |阅读模式
1,(33)有以下程序

mian()

{ char a[7]="a0\0a0\0"; /*这里面的\0是算一个字符还是两个啊?,怎么数捏?*/

int i,j;

i=sizeof(a); j=stelen(a);/*这两个函数是怎么区别的呀 ,有什么不同捏?*/

printf("%d %d\n",i,j);

}

程序运行后的输出结果是(C)

A)22
B)76
C)72
D)62
2,(34)有以下定义

#include

char a[10],*b=a;

不能给数组a输入字符串的语句是(B)/*答案B为什么不对啊,其他的怎么对捏?*/

A)gets(a);
B)gets(a[0]);
C)gets(&a[10]);
D)gets(b);
3,有以下程序:

main()

{ char *p[10]={"abc","aabdfg","dcdbe","abbd","cd"};

printf("%d\n", strlen(p[4]));/*strlen(p[4]这个不是指向字符
串"abbd"了??/*

}

执行后输出的结果是(A)

A)2
B)3
C)4
D)5
4,设函数fun的定义形式为

viod fun(char ch, float x){ ... }

则以下对函数fun的调用语句中,正确的是(D)

A)fun("abc",3.0);
B)t=fun(′D′,16.5);

C)fun(′65′,2.8);
D)fun(32,32);
/*答案怎么会是D呢?我选C哦,C为什么不对呢,C中用引号引起来的65不是字符吗?奇怪??哦*/
麻烦各位高手拉!懂几题就帮忙解释几题!先谢过拉

回复

使用道具 举报

千问 | 2009-3-26 18:43:33 | 显示全部楼层
1.‘\’是转义字符,‘\0'空字符,一个也不算。sizeof()是计算物理存储空间大小的,字符型每个占1个字节,a[7]所以是7个字节。strlen()计算字符串长度(有效字符的个数),碰到‘\0'结束,所以是2个,a和0. 2.gets()括号中必须是字符指针类型,a[0]不是字符变量,所以不行,其他的都是指针或地址,所以可以。 3. *p[10]是数组,c中数组下标从0开始,p[4]是“cd”,长度为2 4.c中字符和整型可以通用(大部分的时候),字符用单引号括起来,'65’什么也不是,32是个整数,编译时转换为对应的字符,所以d对...
回复

使用道具 举报

千问 | 2009-3-26 18:43:33 | 显示全部楼层
1:\0算一个字符2:sizeof指的是数组的大小,strlen求的是字符串的大小遇到最先的一个\0停止。3。gets表示的是输入字符串,当然要用字符串的首地址罗4:数组指针从零开始的5.、‘65’错了,字符只能是单个或者多个转义字符组成 ,这个是两个字符...
回复

使用道具 举报

千问 | 2009-3-26 18:43:33 | 显示全部楼层
我的答案:1、7 2 sizeof求的是空间大小,strlen求的是字符串长度,到第一个\0字符为止2、B gets(a[0])中的a[0]代表的是字符值,不是指针3、数组下标从0开始p[4]当然指向的是cd4、‘65’错了,字符只能是单个或者多个转义字符组成希望你能看懂。。...
回复

使用道具 举报

千问 | 2009-3-26 18:43:33 | 显示全部楼层
1题\0是空格,运行了一下,输出a0 a0,2题括号里应该是地址,而B是数据,3题a[4]指第五个字符串cd(a[0]是第一个字符串),第四题单引号里的是字符的ASC码值...
回复

使用道具 举报

千问 | 2009-3-26 18:43:33 | 显示全部楼层
乘1.‘\’是转义字符7 2 sizeof求的是空间大小,strlen求的是字符串长度...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行