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

若有以下定义和语句:
struct st
{ int n;
struct st * next ;
};
struct st a[3], *p;
a[0].n=5 ; a[0].next=&a[1] ; a[1].n=7 ; a[1].next=&a[2] ; a[2].n=9 ; a[2].next='\0' ; p=&a[0];
则以下值为6的表达式是( D )
p++ -> n B)p-> n++ C)++(*p).n D)++p -> n

有以下程序:
#include<stdio.h>
main()
{ union {short i[2];
long k;
char c[4];
}r, *s = &r;
s->i[0] = 0x39 ; s->i[1] = 0x38;
printf("%x\n", s ->c[0]);
}
已知字符0的ASCII码值的十进制数是48,且数组的第0个元素在低位。以上程序的运行结果是( A )
A)39 B)9 C)38 D)8

有以下程序(若long型和int型数据均占4个字节):
#include<stdio.h>
typedef union {long x[2];int y[4];char z[8];}MYTYPE;
MYTYPE them;
main()
{ printf("%d\n",sizeof(them));}
程序的运行结果是( B )
A)32 B)16 C)8 D)24

设有以下定义和语句
struct STD
{ char name[10];
int age; int sex;
} s[5],*ps;
ps = &s[0];
下面scanf函数调用语句中对结构体变量成员引用错误的是( D )
A)scanf("%s",s[0].name); B)scanf("%d",&s[0].age); C)scanf("%d",&(ps -> sex)); D)scanf("%d",ps -> age);

设变量已定义,以下不能统计出一行中输入字符个数(不含回车符)的程序段是( 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++);

有以下程序:
#include<stdio.h>
struct ord
{ int x,y;}dt[2]={1,2,3,4};
main()
{ struct ord *p=dt;
printf("%d,",++p->x);printf("%d\n",++p->y);
}
程序的运行结果是( D )
A)1,2 B)2,3 C)3,4 D)4,1

以下正确的字符串常量是( D )
A)"\\\" B)‘abc’ C)OlympicGames D)""

若有定义语句:int a[2][3],*p[3]; ,则以下语句中正确的是( C )
A)p=a; B)p[0]=a; C) p[0]=&a[1][2]; D)p[1]=&a;

有以下程序:
#include
void fun(char *t,char *s)
{
while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{
char ss[10]=”acc”,aa[10]=”bbxxyy”;
fun(ss,aa);
printf(“%s,%s\n”,ss,aa);
}
程序运行结果是( D )
A) accxyy , bbxxyy B) acc, bbxxyy
C) accxxyy,bbxxyy D) accbbxxyy,bbxxyy

以下定义语句中正确的是 ( D )
A)int a=b=0 ; B)char A=65+1,b='b';
C)float a=1,*b=&a,*c=&b ; D)double a=0.0,b=1.1;

若变量已正确定义,有以下程序段
int a=3,b=5,c=7;
if(a>b) a=b; c=a;
if(c!=a) c=b;
printf("%d,%d,%d\n",a,b,c);
其输出结果是 ( B )
A)程序段有语法错 B)3,5,3 C)3,5,5 D)3,5,7

以下错误的定义语句是 ( C )
A)int x[][3]={{0},{1},{1,2,3}};
B)int x[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C)int x[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D)int x[][3]={1,2,3,4};

有以下程序
#include <stdio.h>
#include <string.h>
void fun(char *s[ ],int n)
{ char *t; int i,j;
for(i=0;i<n-1;i++)
for(j=i+1;j<n;j++)
if(strlen(s[i])>strlen(s[j])) {t=s[i];s[i]=s[j];s[j]=t;}
}
main()
{char *ss[]={“bcc”,”bbcc”,”xy”,”aaaacc”,”aabcc”};
fun(ss,5); printf(“%s,%s\n”,ss[0],ss[4]);
}
程序的运行结果是 ( C )
A)xy,aaaacc B)aaaacc,xy C)bcc,aabcc D)aabcc,bcc
括号里都是给的答案~ 不知道为什么,帮忙讲解一下~

那个...,忘了分题号了,很抱歉...~

我估计答案应该有问题...

第一题:
这里的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。
好了,都搞定了,因为水平有限,很难保证全对,但是我也是很认真的做了,希望对你有帮助。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-03-25
向字符串的首字符。
说一下s++ 和 ++s的区别:s++ 是使用了s再递增,++s是递增后使用。
在这里,先判断*p是否是空格,判断结束后*p递增(即指向下一个字符),这时的*p已经是指向前面的*p后面的位置了,可以看似一辆开动的车,然后再判断是否是空格。
谢谢!
第2个回答  2011-03-24
1,2,3...n共n个人围成一个圈,从1开始报数,数到k的人离开圈子,下面的人
从1开始重新数,请问,最后剩下的人是几号?的代码
第3个回答  2011-03-24
设变量已定义,以下不能统计出一行中输入字符个数(不含回车符)的程序段是( 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;.....

C语言的题,都不难,帮忙解答,追加悬赏喔。麻烦把各个选项都解释解释最好...
这个题是因为C选项for语句在读入一个换行之后就停止了,所以并不能统计所有输入。第六题:这里的p是指针,他就相当于dt,++p->x = (d[1].x) = ++3 = 4,注意这里的++是作用于P的,所以要先递增p,后面的++p—>y,其实这个值是不确定的,以为p现在已经不是指向a中的元素了。所以有前面的值...

C语言中的问题不明白为什么 新人麻烦详细解释一下谢谢
scanf不指定分隔符时,默认以空白字符(空格、回车、制表符)为分隔符。PS:如果写%d%c不指定分隔符号。由于第二个变量是字符型,输入时中间不要加空格符,否则会将空白符号做为字符接收。

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因..
第一项的结果不正确。第二项和第四项结果等同都是指向指针的指针操作。可以将二维数组看成一个双重指针,第一个中括号是一个一重指针。比如说a[n][m]中a[0]是一个指向a[0][m]数组首位a[0][0]的指针,而a则是指向指针数组*a[n]的首位a[0]的指针。这样我们来看B选项,*(a+2)表示一...

我想问下关于C语言的问题。麻烦请详细解答一下。每一句是什么意思、最...
num++;p++; \/\/p指向下一个元素 }

下面有一些关于C语言问题,希望大伙儿侃侃,最好解释详细,谢谢呢?
void f(int y,int*x) X是按地址传,而Y是按值传,当值传到函数里时,*x可以改变X的值,而Y不能返回.保持原来的值...第六题:这是C语言的内存动态分配,不是很掌握,没有把握,希望其它好心人帮忙一下补齐.第七题:efgh 这道我简单说下,语言点太多,要是不明白,发消息给我,我就这题说详细.ret...

c语言,谁会帮帮忙吧?需要答案和解释!
反斜杠加三个数字代表八进制,“\\376”的十进制是254,而数据在计算机中都是以补码保存的,254为整数,其补码即为原码,1111 1110。而%d是按有符号型输出数据,此时认为“1111 1110”代表一个负数,该负数绝对值的原码(取反加1)即为“0000 0010”,十进制为-2。c输出字符,查下ASCII表,这个数...

今天做C语言的试卷,有几题不会,望会的人帮忙解答一下!谢啦
第一题,选D,题目意思是用循环的方式输入10个到数组a[10]中,A,B明显不对C中会越界,应该是&a[i++],D暂时还有点不太好理解,第二题,结果为-1;因为while(x--);(请注意括号后面后有分号,这一句的目的就是x一直减减,直到x等于0,因为"--"是右结合运算符,所以执行完while(x--);...

C语言的一些题目:不太理解代码,求详细解释,手写部分看不懂
首先main()是主函数,通俗来说就是一个程序的入口,只能先运行main函数。而题中的fun在main中被调用了,并且传入的参数值是500 从题目中得知,需要取 被13或17整除的数字 下图红框可知,k就是那个除数,也就是500,所以int fun括号中输入的应该是k 所以填入int k 最后题目要求最大十个,我也...

求解C语言题目,最好有解释,谢谢:
1.*p1和*p2都是指向float类型的指针。它们的值只能是地址。A B C 中p1或p2的值都是地址,只有D中a[0]+1结果为float类型的数字,不是地址,所以应该选D 2.A 错误,函数的返回值又函数自身定义决定 B正确 C 错误 main函数可以放在程序的后面,前面可以放全局变量和函数等 D 错误 C语言程序总...

C语言高手进,帮忙解答一下下列各题的标准答案。此题是我的重要复习题...
47.C 50.D 58.B 【解析】32.字符串数组除了里面的实际字符,系统还会自动的分配一个结束符"\\0",所以该数组所占空间为6+1=7个。33.一句话说不明白,放心,已经通过程序验证,答案肯定正确。36.括号内的只能算是一个参数。45.因为是static定义的静态变量,所以x的值是无法更改的,所以无论输入...

相似回答