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

来源:百度知道 编辑:UC知道 时间:2024/06/06 14:59:38
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)2 2 B)7 6 C)7 2 D)6 2
2,(34)有以下定义
#include <stdio.h>
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的调用语句中,正确的是(

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对

我的答案:
1、7 2 sizeof求的是空间大小,strlen求的是字符串长度,到第一个\0字符为止
2、B gets(a[0])中的a[0]代表的是字符值,不是指针
3、数组下标从0开始p[4]当然指向的是cd
4、‘65’错了,字符只能是单个或者多个转义字符组成
希望你能看懂。。

1题\0是空格,运行了一下,输出a0 a0,2题括号里应该是地址,而B是数据,3题a[4]指第五个字符串cd(a[0]是第一个字符串),第四题单引号里的是字符的ASC码值

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


1.‘\’是转义字符7 2 sizeof求的是空间大小,strlen求的是字符串长度