当前位置:文档之家› C语言(结构体与共用体)习题与答案

C语言(结构体与共用体)习题与答案

1、指针的含义是()。
A.名
B.一个标志
C.地址
D.值
正确答案:C
2、若已定义a为int型变量,则下面的语句中正确的是()。
A.int *p=*a;
B.int *p=&a;
C.int *p=a;
D.int p=&a;
正确答案:B
3、若有定义:int x,*p;则以下正确的赋值表达式是()。
A.*p=&x
{
int b,a=28;
char s[10],*p;
p=s;
do{
b=a%16;
if(b<10)
*p=b+48;
else
*p=b+55;
p++;
a=a/5;
}while(a>0);
*p='\0';
puts(s);
}
A.C51
B.10
C.2
D.\0
正确答案:A
12、下面程序的运行结果是()。
#include<stdio.h>
}
A.18
B.19
C.20
D.17
正确答案:B
14、下面判断正确的是()。
A.char c[4]="abc",d[4]="abc";等价于char c[4]=d[4]="abc" ;
B.char பைடு நூலகம்a="china";等价于char *a; *a="china";
C.char str[10]={"china"};等价于char str[10]; str={"china";}
正确答案:C
8、下面程序的运行结果是()。
#include<stdio.h>
void main()
{
int x[5]={2,4,6,8,10},*p,**pp;
p=x;
pp=&p;
printf("%d ",*(p++));
printf("%d",**pp);
}
A.4 6
B.2 2
C.2 4
D.4 4
正确答案:C
9、以下程序运行的结果是()。
#include<stdio.h>
#include<string.h>
void main()
{
char *p1,*p2,str[50]="abc",st[50]="abc";
p1=st;
p2="abc";
strcpy(str+1, strcat(p1,p2));
A.int strcmp4(char *s,char *t)
{ for ( ; *s==*t; s++, t++ )
if (!*s) return 0 ;
return (*t-*s) ;
}
B.int strcmp2(char *s,char *t)
{ for ( ; *s++=*t++; )
if (!*s) return 0 ;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%4d,%4d,%4d\n",a,b,c);
}
A.5,-2,-7
B.5,2,3
C.-5,-12,7
D.-5,-12,-7
正确答案:D
11、以下程序运行的结果是()。
#include<stdio.h>
void main()
B.有语法错误
C.gae
nguage
正确答案:C
13、下面程序的运行结果是()。
#include<stdio.h>
void main()
{
int a[ ]={2, 4, 6, 8, 10}, y=1, x, *p;
p=&a[1];
for(x=0; x<3; x++)
y+=*(p+x);
printf(“%d\n”, y);
printf("%s\n",str);
}
A.cabcabc
B.bcabcabc
C.aabcabc
D.abcabcabc
正确答案:C
10、下面程序的运行结果是()。
#include<stdio.h>
sub( int x, int y, int *z)
{*z=y-x;
}
void main()
{
int a,b,c;
B.p=&x
C.p=x
D.*p=*x
正确答案:B
4、下面的语句段中,char *s="\ta\018bc"; for(; *s!=’\0’;s++) printf("*");
for循环的执行次数是()。
A.9
B.5
C.7
D.6
正确答案:D
5、假设int *p[3];则以下叙述中正确的是()。
A.p是一个指针,它可以指向一个一维数组中的任一元素
if (*s == '\0') return 0 ;
return (*s-*t) ;
}
正确答案:C
16、设有以下说明: struct stud{ char num[6]; int s[4]; double ave;}a;则变量a在内存所占字节数是()。
A.11
B.5
C.18
D.22
正确答案:D
二、判断题
1、在C语言中,可以把一个结构体变量作为一个整体赋值给另一个具有相同类型的结构体变量。(√)
2、当说明一个结构体变量时系统分配给它的内存是成员中占内存量最大者所需的容量。(×)
三、填空题
1、若有以下定义和语句,int a[4]={0,1,2,3},*p; p=&a[2];则*--p的值是___。
正确答案:1
void main()
{
static char a[ ]="Language",b[ ] ="programe";
char *p1,*p2;
int k;
p1=a; p2=b;
for(k=0; k<=7; k++)
if(*(p1+k)= =*(p2+k))
printf(“%c”,*(p1+k));
}
A.ga
B.(*p)[3]与*p[3]等价
C.p是一个指针,它只能指向一个每行包含3个int类型元素的二维数组
D.p是一个指针数组
正确答案:D
6、若有以下定义,int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是()。
A.p1=x+2, *(p1++)
B.p1=x+2, *++p1
2、若有定义:int a[2][3]={2,4,6,8,10,12};
则*(&a[0][0]+2*2+1)的值是___。
正确答案:12
return (*s-*t) ;
}
C.int strcmp3(char *s,char *t)
{ for ( ; *t= =*s; )
{ if (!*t) return 0 ;
t++ ; s++ ;
}
return (*s-*t) ;
}
D.int strcmp1(char *s,char *t)
{ for ( ; *s++=*t++; )
D.char *s="china";等价于char *s; s="china" ;
正确答案:D
15、函数strcmp(char *s,char *t)功能是()。
当第1个串大于第二个串时,函数返回值大于零;
当第1个串等于第二个串时,函数返回值为零;
当第1个串小于第二个串时,函数返回值小于零;
与strcmp功能相等的程序段是:
C.p1=x+3, *p1++
D.x[3]
正确答案:A
7、若有以下说明语句,static int i, a[2][3]={1, 3, 5, 7, 9,11};int m, n;且0≤m≤1,0≤n≤2,则下述对数组元素的引用,正确的是()。
A.*(a+5)
B.a[m]+n
C.*(*(a+m)+n)
D.(a+m)+n
相关主题