在线跪求C语言试题答案,请高手帮帮我~~~~~~~~

一、 单项选择题(共40分,每小题2分)
1. 声明语句为“char a[10]”,执行printf(“%d,%d\n”,sizeof(a),strlen(strcpy(a, “Windows”)));语句后的输出结果为( )。
A.7,7 B.7,8 C. 10,7 D. 10,8

2. 以“只读”方式打开文本文件c:\xy.text,下列语句中哪一个是正确的( )。
A.fp=fopen(“c:\\xy.txt”, “a”); B. fp=fopen(“c:\\xy.txt”, “r”);
C. fp=fopen(“c:\\xy.txt”, “wb”) D. fp=fopen(“c:\xy.txt”, “r”);

3. 要为字符型变量a赋初值,下列语句中哪一个是正确的( )。
A.char a='3'; B.char a=“3” C. char a=%; D. char a=*;

4. 常量字符串”This is Sunday!”,通过strlen函数求其长度,结果为( )。
A.14 B.15 C. 16 D. 17

5. 若定义数组char a[10],char *p=a,则下面变量中,表示地址的是( )。
A.a+4 B.*p C. &a D. &p

6. 在下面定义中,是指针数组的为( )。
A. int *p[8] B. int (*p)[8] C. int (*p)(8) D. int *p(8)

7. 在C语言中可以用( )来定义一个新的变量类型。
A. #define B. #include C. typedef D. struct

8. 下面函数中不是关于文件操作的是( )。
A. fopen B. fclose C. fseek D. format

9. 结构型变量占用内存的字节数是( )。
A.各成员占用内存字节数之和
B.第一个成员占用的内存字节数
C.占用内存最大成员所需的字节数
D.最后一个成员占用的内存字节数

10. 设 struct st
{ int i;
int j;} *p;
main ( )
{
struct st m[ ]={{10, 1}, {20, 2}, {30, 3}};
p=m;
printf (〃%d\n〃,(*++p). j);
}
则程序的输出结果是( )。
A. 1 B. 2 C. 3 D. 10

11. 若p是一个字符指针,则&*p为( )。
A. 地址 B. 字符 C. 字符串 D. NULL。

12. 如果有二维数组a[8][6],则可以使用地址方式来表示第i行第j列的元素的是( )。
A. a[i][j] B. *(*(a+i)+j) C. *(*(a+j)+i) D. *a[i][j]

13. 在说明语句:int *f();中,标识符f代表的是( )。
A.一个用于指向整型数据的指针变量
B.一个用于指向一维数组的行指针
C.一个用于指向函数的指针变量
D.一个返回值为指针型的函数名

14. 如果定义结构体
struct student {
int id;
char name[8];
} *s1;
则如果要表示其成员变量,可以用( )。
A. s1.name B. s1->name C. s1[name] D. s1=name

15. 若有以下的定义:int a[]={1,2,3,4,5,6,7,8,9,10},*p=a,则值为3的表达式是( )。
A. p+=2,*(p++) B. p+=2,*++p C. p+=3,*p++ D. p+=2,++*p

16. 在定义了数组int a[5][6];后,第10个元素是( )。
A.a[2][5] B.a[2][4] C.a[1][3] D.a[4][2]

17. 现有语句:int a[10], *p=a;,则下列表达式中不能表示数组第i个元素的是( )。
A.a[i] B.*(a+i) C.*(p+i) D.*p+i

18. 现有语句char chName[10]={“Wang”};,则语句sizeof(chName)的结果为( )。
A.3; B.4 C.10 D.9

19. 设结构体S定义为:struct S{ short g; char h; double *pf;};,则该结构体共占用( )个字节(短整型变量占2个字节)。
A.11 B.7 C.8 D.14

20. 表示链表结构结束的标识符是( )。
A.NULL B.EOF C.BOF D./0

1.C(sizeof取的是真个数组长度,strlen取的则是字符串长度)
2.B(反斜杠“\”本身有转义符的概念,当需要使用时,需要先转义,所以写成“\\”。而只读方式为“r”,“a”为附加,“wb”为二进制写入)
3.A(字符要用单引号引用,双引号是字符串,区别在于字符串最后有一个空字符作为结束,而字符没有)
4.B(就是字符串长度,算中间的空格,但不算最后那个看不见的结束符)
5.A(a是数组,p是指针,两者概念相似,本身就是地址,星号“*”表示取内容,而和号“&”则表示取地址,但前面已经说了a和p本身就是地址,所以什么都不用取,则a+4很显然是地址)
6.A(没啥好说的,就这么规定的)
7.C(同上)
8.D(format是字符串的格式化输出操作,与文件操作无关)
9.C(字节对齐的问题,印象里应该是最大成员的字节数)
10.B(p为m的首地址,++p后取第二组数据的首地址,*取值后为第二组数据中的第一个数据位置,.j为取j位置上的数据,结果为2)
11.A(上面已经说了,指针本身就是地址,&和*两个符号取地址再取内容,等于抵消,所以还是地址)
12.B(a+i确定行,之后去内容,再+j确定列,再取内容,即可)
13.D(int为返回值类型,*表示返回值为指针,后面的括号表示这是一个函数)
14.B(s1是一个指针,指针结构体的成员用“->”引用,而非指针结构体的成员用“.”引用)
15.A(先自加2,再++运算,最后取内容)
16.C(扳着手指头算都可以)
17.D(*p+i表示数组的第一个元素的值加上i)
18.C(sizeof是数组的大小,与里面的值无关)
19.C(short占用2字节,char占用1字节,double看起来是8字节,但其实double是个指针,指针都是4字节,不看类型。如此相加看起来应该是7个字节,但其中有个字节对齐的问题,所以char后面要空出来一个字节作为对齐,最终结果是8个字节)
20.A(NULL为结束符,EOF应该是结束函数用的,BOF不清楚,/0啥都不是,NULL可以表示为"\0",注意斜杠方向)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-05-04
2.多个源文件的C程序编译和连接:
1)首先分别编辑、编译file1.c和file2.c ;
2)在TC下编辑一个项目文件,扩展名为.PRJ;
如: 文件内容——c:\\zyc\\cprg\\file1.c
c:\\zyc\\cprg\\file2.c
文件内容指出了要参加联调的源程序文件名
3)编译运行

4.结果:
main:x=5 y=1 n=1
func:x=6 y=21 n=11
main:x=5 y=1 n=11
func:x=8 y=31 n=21

5.
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a,b,c,max;
scanf("%d%d%d",&a,&b,&c);
if(a>b)
max=a;
else
max=b;
if(c>max)
max=c;
printf("max=%d",max);

}

6.
#include<stdio.h>
void main(){
float x,y;
printf("请输入x的值:\n");
scanf("%f",&x);
if(x<1)
printf("y的值是:%f",x);
else if(1<=x<10){
y=2*x-1;
printf("y的值是:%f",y);
}
else {
y=3*x-11;
printf("y的值是:%f",y);
}
}

7题
57
5 7
67.856400,-789.124023
67.856400 ,-789.124023
67.86,-789.12,67.864,-789.1240,67.856400,-789.124023
6.78564e+01, -7.9e+02
A,65, 101, 41
1234567,4553207, d687
65535,177777,ffff,-1
COMPUTER, COM

8.结果9

二、编程:
1.
#include<stdio.h>
void main()
{
int a,s;
scanf("%d",&s);
if(s==100)
a=9;
else
a=s/10;
switch(a)
{
case 0:printf("E\n");break;
case 1:printf("E\n");break;
case 2:printf("E\n");break;
case 3:printf("E\n");break;
case 4:printf("E\n");break;
case 5:printf("E\n");break;
case 6:printf("D\n");break;
case 7:printf("C\n");break;
case 8:printf("B\n");break;
case 9:printf("A\n");break;
default:printf("error\n");
}}

2.
#include<stdio.h>
#define N 10
main()
{
int i,j,k;
int a[N];
printf("\nplease input %d datas:\n\n",N);
for(i=0;i<N;i++)
scanf("%d",&a[i]);
for(i=0;i<N;i++)
for(j=0;j<N-i;j++)
if(a[j]<a[j+1])
{
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
printf("\n\nthe sortde numbers are:\n\n");
for(i=0;i<N;i++)
printf("%5d",a[i]);
}

祝你好运!
另外,站长团上有产品团购,便宜有保证
第2个回答  2011-05-04
1.C
2.B
3.A
4.B
5.A
6.A
7.C
8.D
9.A
10.B
11.A
12.B
13.D
14.B
15.A
16.C
17.D
18.C
19.C
20.A
第3个回答  2011-05-04
1.C
2.B
3.A
4.B
5.A
6.A
7.C
8.D
9.A
10.B
11.A
12.B
13.D
14.B
15.A
16.C
17.D
18.C
19.B
20.A
第4个回答  2011-05-04
B B A C C A C D A B A B D B A B D B B A
相似回答