C语言的题,都不难,帮忙解答,追加悬赏喔。麻烦把各个选项都解释解释最好了:)

2024-11-18 14:03:45
推荐回答(4个)
回答1:

第一题:
这里的p是一个指针,他指向数组a的第一个元素,其实这里的p就可以认为是a了。
还有就是这个P++与++P的问题了,P++是先返回P的值在把p递增。++p则是把P先递增再返回。
所以P++ —>n 相当于a[0].n = 5;p->n ++ 相当于(p->n)++是先返回在递增,注意->运算符的优先级大于++,所以还是相当于a[0].n = 5;同理 ++ p->n 就相当于++(p->n) = ++a[0]. n = 6;++(*p).n 是把p的地址递增一,也就是相当于a[1].n = 7.

第二题:
这个union是表示,一块储存空间用short,long,char,三种类型来描述,所以c[0] 与i[0]一样的。这个程序是要打印s->c[0],printf("%x\n", s ->c[0])这句里的%x表示打印的数字是十六进制的。由于c[0]里面放的是0x39,所以这里打印的正好是39.
第三题:
与第二题类似,注意这里求的是them的空间大小,因为them表示成两个long型的数组,一个long是32位,及八个字节,所以两个就是16个字节。所以答案是16.
第四题:
D)scanf("%d",ps -> age);这里的ps->age 并不能表示地址,他只是返回age的值,ABC中的都表示的是地址。

第五题:
这个题是因为C选项for语句在读入一个换行之后就停止了,所以并不能统计所有输入。

第六题:
这里的p是指针,他就相当于dt,++p->x = (d[1].x) = ++3 = 4,注意这里的++是作用于P的,所以要先递增p,后面的++p—>y,其实这个值是不确定的,以为p现在已经不是指向a中的元素了。所以有前面的值确定答案的。

第七题:
字符串首先是用双引号引起来,常量就是一般的字符,“”这个表示的的是空字符,他也是一个字符常量,“\\\”这个反斜杠是用来表示转义的,单引号表示字符的ASCN码运算。

第八题:
a[][] 是一个二维数组,*p[3]这是定义一个Int型的指针数组,表示p[i]中存的是指针(地址),所以C正确,他是a[1][2]的地址存放到p[0]中。因为a二维数组的地址,p指向的是一维数组所以A,B,C错。

第九题:
fun函数的作用是把字符s接到字符t后面,所以在主函数中调用fun(ss,aa)后,ss="accbbxxyy",aa不变。所以输出结果是D

第十题:
A)int a=b=0 ;不允许这样赋值,可以int b=0;a=b;
B)char A=65+1,b='b';这个A的赋值错误,
C)float a=1,*b=&a,*c=&b ; 这个&b的是指针类型,而C却是float
D)double a=0.0,b=1.1; 正确

第十一题:
先判断a>b,不是,所以a=b不执行,接着执行c=a,所以这时c,a都是3,在判断c!=a,不是,所以直接打印,结果是3,5,3

第十二题:
定义二维数组a[m][n]的时候,m可以没有,但是n必须给出。C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}}; 这个错了。

第十三题:
这段程序,中fun函数的作用是;首先有个char型指针数组s[]参数,还有一个n表示长度,从数组(每个数组元素中存放的是字符串)的下标为0的元素开始到下标为n-1的元素为止一共n个元素,依次与该元素后面的一共n-1个元素进行比较(比较数组元素中的字符串),就是s[0]要和s[1]到s[n—1]中的每个元素比较,如果这字符串的长度大于后面的字符串的长度,就把这两个数组元素中的字符串互换。
这个操作和冒泡排序比较类似
所以main()中fun(aa,5)执行之后,ss[] = {"xy","bbc","bbcc","aabcc","aaaacc"}
那么输出结果应该是xy,aabcc。
好了,都搞定了,因为水平有限,很难保证全对,但是我也是很认真的做了,希望对你有帮助。

回答2:

向字符串的首字符。
说一下s++ 和 ++s的区别:s++ 是使用了s再递增,++s是递增后使用。
在这里,先判断*p是否是空格,判断结束后*p递增(即指向下一个字符),这时的*p已经是指向前面的*p后面的位置了,可以看似一辆开动的车,然后再判断是否是空格。
谢谢!

回答3:

1,2,3...n共n个人围成一个圈,从1开始报数,数到k的人离开圈子,下面的人
从1开始重新数,请问,最后剩下的人是几号?的代码

回答4:

设变量已定义,以下不能统计出一行中输入字符个数(不含回车符)的程序段是( C )
A)n=0;while ((ch=getchar())!=‘\n’)n++;
B)n=0;while (getchar()!=‘\n’)n++;
C)for(n=0;getchar()!=‘\n’;n++);
D)n=0;for(ch=getchar();ch!=‘\n’;n++);

这个题目选C,主要考察了for(A;B;C)的执行顺序。
A; C; B; C; B;.....