高人帮帮忙,做几道C语言的习题!!!

1:若有以下定义和语句:
union data
{int i;
char c;
float f;
}a;
int n;
则以下语句正确的是( )。
1.a=5; 2.a={2,’a’,1.2}; 3.printf(“%d\n”,a); 4.n=a;
2:在C语言中,要求运算数必须是整形的运算符是( ).
1./
2.++
3.!=
4.%

3:C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是:_____
1.用户指定传递方式
2.无传递
3.单向值传递
4.地址传递

4:以下有关宏替换的叙述不正确的是( )。
1.宏替换不占用运行时间
2.宏名无类型
3.宏替换知识字符替换
4.宏名必须用大写字母表示

5:若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是( ).
1.A%2==1
2.!(入%2==0)
3.!(A%2)
4.A%2

6:下面程序段的运行结果是( )。
char *s=”abcde”;
s+=2; printf(“%d”,s);
1.cde
2.字符’c’
3.字符’c’的地址
4.无确定的输出结果

7:设有如下定义:
struct sk
{int n;
float x;
}data,*p;
若要使P指向data中的n域, 正确的负值语句的是( )。
1.p=&data.n;
2.*p=data.n;
3.p=(struct sk*)&data.n;
4.p=(struct sk*)data.n;

8:利用fseek函数的正确调用形式是( ).
1.改变文件的位置指针
2.文件的顺序读写
3.文件的随机读写
4.以上答案均正确

9:C语言结构体类型变量在程序执行期间( ).
1.所有成员一直驻留在内存中
2.只有一个成员驻留在内存中
3.部分成员驻留在内存中
4.没有成员驻留在内存中

10:若有代数式3ae/bc,则不正确的C语言表达式是( )
1.a/b/c*e*3
2.3*a*e/b/c
3.3*a*e/b*c
4.a*e/c/b*3

11:以下程序段( ).
x=-??1; do{x=x*x;} while(! x);
1.是死循环
2.循环执行二次
3.循环执行二次
4.有语法错误

12:以下程序的运行结果是( ).
#include “stdio.h”
main()
{struct data
{int year,month,day;
}today;
printf(“%d\n”,sizeof(struct data));
}
1.6
2.8
3.10
4.12

1:若有以下定义和语句:
union data
{int i;
char c;
float f;
}a;
int n;
则以下语句正确的是( 1 )。
1.a=5; 2.a={2,’a’,1.2}; 3.printf(“%d\n”,a); 4.n=a;
2:在C语言中,要求运算数必须是整形的运算符是(4 ).
1./
2.++
3.!=
4.%

3:C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是:_3__
1.用户指定传递方式
2.无传递
3.单向值传递
4.地址传递

4:以下有关宏替换的叙述不正确的是(4)。
1.宏替换不占用运行时间
2.宏名无类型
3.宏替换知识字符替换
4.宏名必须用大写字母表示

5:若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是(3).
1.A%2==1
2.!(入%2==0)
3.!(A%2)
4.A%2

6:下面程序段的运行结果是( 1)。
char *s=”abcde”;
s+=2; printf(“%d”,s);
1.cde
2.字符’c’
3.字符’c’的地址
4.无确定的输出结果

7:设有如下定义:
struct sk
{int n;
float x;
}data,*p;
若要使P指向data中的n域, 正确的负值语句的是(3 )。
1.p=&data.n;
2.*p=data.n;
3.p=(struct sk*)&data.n;
4.p=(struct sk*)data.n;

8:利用fseek函数的正确调用形式是(1 ).
1.改变文件的位置指针
2.文件的顺序读写
3.文件的随机读写
4.以上答案均正确

9:C语言结构体类型变量在程序执行期间(1).
1.所有成员一直驻留在内存中
2.只有一个成员驻留在内存中
3.部分成员驻留在内存中
4.没有成员驻留在内存中

10:若有代数式3ae/bc,则不正确的C语言表达式是(3 )
1.a/b/c*e*3
2.3*a*e/b/c
3.3*a*e/b*c
4.a*e/c/b*3

11:以下程序段(4 ).
x=-??1; do{x=x*x;} while(! x);
1.是死循环
2.循环执行二次
3.循环执行二次
4.有语法错误

12:以下程序的运行结果是(4).
#include “stdio.h”
main()
{struct data
{int year,month,day;
}today;
printf(“%d\n”,sizeof(struct data));
}
1.6
2.8
3.10
4.12
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-18
1.都是错误的,必须指明成员,如:a.i=5;
2.选4,因为取余数也只能是整数运算。其他的都可以实数。
3.选4,数组名作实参是地址传递
4.选4,宏名不一定要用大写,只是习惯大写,便于区分它为宏。
5.选3,A%2,A为奇数时,为1,是真;A为偶数时,为0,是假。!(A%2)正好相反,不符合。
6.选3,注意输出的是%d,是地址
7.选3,因为p是一个指针,必须把地址赋给它,不然都是错的。
8.选1,fseek,重定位流(数据流/文件)上的文件内部位置指针 。
9.选1,结构体变量和普通变量一样,都必须存在内存中。
10.选3,乘除法从左往右运算
11. 不知道x=-??1; 你是不是写错了,如果没写错的话,则有语法错误。如果写错了,x=-1,那么循环执行1次,没有答案可以选择。
12. 选4,每个int的大小是4,3个就是12.
第2个回答  2011-08-19
一、2 这是联合。类似于结构体。
二、4 %是取余运算符,所以必须要是整数
三、4 数组名做参数是要把整个数组赋值给另一个数组,通过地址指针来传递的话不会出现问题
四、4 宏名用什么都可以替代
五、3 第3个选项(A%2)表示A%2!=0为真,即A为奇数为真,但是前面加了个!,就变为假了
六、4 %d表示整型数据的输出,这里是字符型,所以不能确定输出结果
七、3 指针要赋值地址,这个看书吧
八、1 重定位流(数据流/文件)上的文件内部位置指针
九、1 所有结构体和变量必须存在内存中
十、3 代数式本来是除以b和c的,第3个表达式中变成乘以c了,应该在加个括号就对了
十一、 没看懂你的x的值。
十二、4 一个int是4个字节,3个int值就是12个字节。
不知道答的是否正确能否帮到你,希望你能好好看书,书上才是最标准的,特别是结构体,最后希望你能给我点分数,,我答了这么久没有功劳也有苦劳吧。。谢谢
第3个回答  2011-08-18
2.a={2,’a’,1.2};
%
4.地址传递
1.宏替换不占用运行时间
3.!(A%2)
1.cde
1.p=&data.n
1.改变文件的位置指针
1.所有成员一直驻留在内存中
没看懂耶
4.有语法错误
4.12
第4个回答  2011-08-19
2 4 4 4 5
3 3 1 1 3
4 4
完毕
二楼回答的第一题片面,2的定义正确
相似回答