C语言问题,求高手,急!!!

1 设已定义“char *ps[2]={“abc”,”1234”};”,则以下叙述中错误的是( )
A.ps为指针变量,它指向一个长度为2的字符串数组
B.ps为指针数组,其两个元素分别存储字符串”abc”和”1234”的地址
C.ps[1][2]的值为’3’
D.*(ps[0]+1)的值为’b’

2 以下对结构体类型变量的定义中,不正确的是( )
A.typedef struct aa {int n; float m;} AA; AA td1; B.#define AA struct aa AA {int n;float m;} td1;
C.struct {int n;float m;} aa; struct aa td1; D.struct {int n;float m;}td1;

3 若已有以下结构体定义和初始化,则值为2的表达式是( )
struct complex{ int x; int y;} c[]={1,2,3,4} ;
A.c[0].y B.y C.c.y[0] D.c.y[1]

最好解释得详细点,谢谢~
4 设已定义:struct {int a;float b;}s,*ps=&s;,则错误的结构体成员引用是( )
A.s.a B.ps->a C.*ps.a D.(*ps).a

1.A ps是指针数组,不是指针变量
2.B 宏名不许出现在宏值中 否则成了死循环的永远展开不完 A C D都是合法的语句
3.A 结构c一个元素点两个int单元,所以初始化c[]={1,2,3,4}相当于c[]={{1,2},{3,4}}
4.C 点优先级高于* ps为指针,不能直接结合点 (*ps)是结构体对象,可以用点结合
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-01-11
第二题 结构体名字开头只能定义一个,而不是俩个 宏参数可以出现定义宏内 例如 #define S(x,y) x*y
第三题 数组下标1 y[1]代表数组第二个元素 所以是2// 标准写法 应该是 c[]={{1,2},{3,4}}
c.y 用结构体变量调用成员y, y只能是2与4 。//1 3对应x
第四题目 错误不是B 是C //C应该像D那样加()号的(*ps),a//因为 点.的优先级比*大。
指针调用成员用->//还有一种情况就是(*ps).a//这个指针接受了结构体变量的地址 加*就是对这个地址 解引用 *ps就变成对象了
结构体变量调用则用 点.
第2个回答  2012-01-09
1.A
2.B 定义结构体有三种方式,(1).先定义结构体,再定义结构体变量;如题目选项C。(2).在定义结构体的同时定义结构体变量,如题目选项A。(3).直接定义结构体变量,如题目选项D
3.A
4.C
第3个回答  2012-01-08
1.A
2.D
3.A
4.B追问

第二题宏定义后面的字符串可以有空格吗?
第三第四求详解,在线等,满意加财富,万分感谢~

c语言有一道题不会做,求高手解,最好分析一下。
答案是:C 因为scanf("%c%c",&a,&b);接收的是1和2,在输入后按了“回车”这个回车符会传递到下一句,也就是:c=getchar(); ,这样 c 赋值为回车符了;d=getchar(); 接着就是这句,你输入34的时候,d 只接收单个字符,也就是 3 ;所以最后的输出是:12 3 ...

C语言问题,求大神解决,谢谢啦,我是小白,最好能够解释下原因..
第三项结果是一个指针,也就是一个地址。它就是a[2][1]的地址,由于scanf要求是地址,所以它是正确的。

C语言菜鸟求高手解答...
1. 第一个问题似乎是一个关于C语言条件判断的疑问。你需要明确表达你的问题,以便得到具体的解答。2. 在C语言中,`m++` 表示先使用变量 `m` 的值,然后将 `m` 的值加1。所以,表达式 `m++ > 5` 首先将 `m` 的值(初始为5)用于比较,然后 `m` 自增。3. 由于 `m` 的初始值是5,...

c语言几个小小的问题 高手帮个忙
1. C 逗号在这里不合法 2. 输出2,虽然x是浮点型,但是10和4都是整型,所以先按整型运算,再将结果转换为浮点型 3. (++x, y++)表示这是一个逗号表达式,逗号表达式取最后一个表达式的值,也就是y++的值,所以输出结果是3和3 4. printf("%8.4g\\n",b); 这句输出8756,%g表示按%e或者%...

用C语言求解一元二次方程,菜鸟问题,求高手解答。。。
void main(){float a,b,c,disc,x1,x2,realpart,imagpart;scanf("%f,%f,%f",&a,&b,&c);disc=b*b-4*a*c;if(fabs(disc)<=0.0001) printf("has two equal roots:%8.4f\\n",-b\/(2*a));else if(disc>0.0001){x1=(-b+sqrt(disc))\/(2*a);x2=(-b-sqrt(disc))\/(2*a...

c语言编程题,请高手帮忙做一下,拜谢,急急急急……
1.include <stdio.h> double funcPi(int);int main(void){ int arg;printf("Input the argument: ");\/\/ \/\/ 无异常输入 \/\/ while (!scanf("%d", &arg)){ printf("Check your input and retry: ");while (getchar()!='\\n'){ continue;} } while (getchar()!='\\n'){ continue...

高分C语言问题~~·高手请进
int getValue(int A[]){ 初始 int S=0 1. (数组A)n个数字从小到大排序 (例如:1,2,9)2. 取上步中最小的两个数相加之和为一个M , S=S+M 3. 数组A中除去最小的两个数,然后将M加进去形成一个新数组A元素个数为 n=n-1 4. n>1时回到1.否则函数返回S+A[0] (或S+M,因为...

c语言问题,求高手给我一个求n的阶乘的总和的程序。最好是写在c++上然后...
main(){long s,sum,i,n;printf("输入 n:");scanf("%ld',&n);s=1;sum=0;for(i=1;i<=n;i++){for( ;i<=n;i++)s=s*i;sum=sum+s;} printf("n 的阶乘的总和为:%ld\\n",sum);}

C语言简单编程题目两道,求高手做一下。高分!!!
第1题 :include <stdio.h> include <stdlib.h> define MAX 200 int main(void){ int a[MAX], i = 0;srand(time(NULL)); \/\/ 时间种子, 保证真随机, 每次不会相同 while (i < MAX) { a[i] = rand() % 10000; \/\/ 随机获得10000以下数字, 0-9999 if (a[i] < 1000) { ...

C语言编程问题!!高手救命,在线等答案
另外,对于应该输入float的时候用户输入char导致跳过某些变量输入的情况,这和scanf内部实现的机制有关,因为它是靠类型指针来获取对应值的,那么如果对于普通类型(比如float,VC6中为4字节)变量,如果用户的录入有问题(比如char*),scanf会直接跳过当前变量的赋值。针对这种情况,如果非要用C语言而不是...

相似回答