当前位置:
文档之家› C语言 第七章 结构体期末测试习题与答案
C语言 第七章 结构体期末测试习题与答案
{
int i,sum=0;
for(i=1;i<=10;i+=2)
sum+=i;
printf("%d\n",sum);
}
正确答案:25
3、写出以下程序的执行结果。
#include "stdio.h"
void f13(int y,int *x)
{
y=y+*x;
*x=*x+y;
}
int main( )
{
int x=2,y=4;
9、函数f19的功能是求str所指向字符串的长度,并返回。请在下划线处填空。
int f19(char *str)
{
int i=0;
while (*( str+i))
i++;
return i;
}
int main()
{
int k;
char s[81];
printf("请输入一个字符串:\n");
gets(s);
{
__________;
}
return f;
}
正确答案:f=1或f=1;
5、函数f15的功能是从键盘输入m个整数,求出其中的最大值并返回。请在下划线处填空。
int f15(int m)
{
int n,i=1,max;
scanf("%d",&n);
__________;
while( i++<m )
{
scanf("%d",&n);
一、选择题
1、一个C语言程序的执行是从()。
A.第一个语句开始,直到最后一个语句结束
B.第一个函数开始,直到最后一个函数结束
C.main函数的第一条语句开始,直到main函数最后一条语句结束
D.main函数开始,直到最后一个函数结束
正确答案:C
2、变量定以后,系统将为变量分配存储空间,double类型的静态变量()。
A.p=&stu.age
B.p++
C.(*p).num
D.(p++)->num
正确答案:A
10、已知如下定义的结构体,若有p=&data,则对data中的成员a的正确引用是()。
struct sk{ int a; float b;}data,*p;
A.(*p).data.a
B.(*p).a
C.p->data.a
A.将在编译时分配4个字节的存储空间
B.将在编译时分配8个字节的存储空间
C.将在程序执行时分配4个字节的存储空间
D.将在程序执行时分配8个字节的存储空间
正确答案:B
3、设int x=8, y;执行y=x++;后,变量x、y的值分别是()。
A.8,8
B.8,9
C.9,8
D.9,9
正确答案:C
4、对于整数n=378,表达式n%10和n/10的值分别是()。
D.p.data.a
正确答案:B
二、填空题
1、写出调用函数f11()的执行结果。
void f11()
{
int x=10,y=20,t=0;
if(x>y)
t=x;x=y;y=t;
printf("%d,%d\n",x,y);
}
正确答案:20,0
2、写出调用函数f12()的执行结果。
void f12( )
A.3,8
B.8,3
C.37,8
D.8,37
正确答案:D
5、与p!=0等价的表达式是()。
A.p
B.p==1
C.p=1
D.!p=0
正确答案:A
6、已定义:int a[5];则数组a可引用的元素有()。
A.a[1]~a[5]
B.a[0]~a[5]
C.a[1]~a[4]
D.a[0]~a[4]
正确答案:D
{
k=1; s=0;m=n;
while( m )
{
k*=m%10;
s+=m%10;
__________;
}
if(k>s)
printf("%d\n",n);
}
}
正确答案:m=m/10或m=m/10;
7、函数f17的功能是将x的值插入到含有N-1个元素的有序数组a中,使数组依然保持升序。请在下划线处填空。
void f17(int a[],int x)
{
int i;
for(i=N-2;i>=0&&a[i]>x;i--)
__________;
a[i+1]=x;
}
正确答案:a[i+1]=a[i]或a[i+1]=a[i];
8、函数f18的功能是求N个字符串str[N][M]中的最小字符串,放在min[M]中。请在下划线处填空。
gets(stu[i].num);
gets(stu[i].name);
stu[i].sex=getchar();getchar();
gets(str);
__________ ;
gets(str);
stu[i].score=atof(str);
}
}
正确答案:stu[i].age=atoi(str)或stu[i].age=atoi(str);
void f18(char str[N][M],char min[M])
{
int i;
strcpy(min,str[0]);
for (i=1; i<N; i++)
{
if (strcmp(min,str[i])>0)
__________;
}
}
正确答案:strcpy(min,str[i])或strcpy(min,str[i]);
if(n>max)
max=n ;
}
return max;
}
正确答案:max=n或max=n;
6、函数f16的功能是输出10到99之间每位数的乘积大于每位数的和的数。例如整数26,各位上数字的乘积12大于数字之和8。请在下划线处填空。
void f16()
{
int n,k,s,m;
for(n=10;n<100;n++)
char sex; //性别
int age; //年龄
double score; //分数
};
函数f20的功能是输入N个学生信息。请在下划线处填空。
void f20(struct student *stu)
{
int i;
char str[XM];
for(i=0;i<N;i++)
{
printf("请输入第%d个学生信息(学号、姓名、性别、年龄、成绩):\n",i+1);
C.strcat(str1,str2) ; str2= str1-str2; str1= str1-str2;
D.strcpy(str,str1) ; strcpy(str1,str2) ; strcpy(str2,str) ;
正确答案:D
8、若有语句:int a [4],*p=a;,下面均代表地址的一组选项是()。
__________;
printf("字符串的长度为:%d\n",k);
return 0;
}
正确答案:k=f19(s)或k=f19(s);
10、已知student结构体定义如下:
struct student
{
char num[XH];//源自号,XH为符号常量char name[XM]; //姓名,XM为符号常量
7、已知char str[20],str1[10]="China", str2[10]="Russia" ;将str1和str2中存放的字符串交换的正确操作是()。
A.str=str1 ; str1=str2 ; str2=str;
B.str1= str1+str2 ; str2= str1-str2; str1= str1-str2;
A.a,p,a[0]
B.a,p,++p
C.&a,*p,p[0]
D.*a,p++,&a[0]
正确答案:B
9、若有以下定义语句,则以下错误的引用是()。
struct student{ int num,age;};
struct student stu[3]={{101,20},{102,19},{103,18}},*p=stu;
f13(y,&x);
printf("%d,%d\n",x,y);
return 0;
}
正确答案:8,4
4、函数f14的功能是:判断输入年份year是否是闰年,若是返回1,否则返回0。请在下划线处填空。
int f14(int year)
{
int f=0;
if(year%4==0&&year%100!=0||year%400==0)