C语言题库第8章 结构体和共同体
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第八章结构体和共同体
一、单项选择
1. 若有以下定义:
struct link
{
int data;
struct link *next;
}a,b,c,*p,*q;
且变量a和b之间已有如下图所示的链表结构,若指针p指向a,指针q指向c。
则能把c插入到a和b之间形成新的链表的语句是( C )
2. 若有以下程序段:
int a=1,b=2,c=3;
struct dent {
int n ; int *m ;
} s[3] = {{101,&a},{102,&b},{103,&c}};
struct dent *p=s ;
则以下表达式中值为2的是( D )。
3. 下面程序的运行结果是( D )。
#iunclude
int main ( ) {
struct complx {
int x; int y ;
}cnum[2]={1,3,2,7} ;
printf(“%d\n”,cnum[0].y/cnum[0].x*cnum[1].x) ;
return 0;
}
二、程序设计
1. /*学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s 中,请编写函数fun,
它的功能是:按分数的高低排列学生的记录,高分在前。注意:部分源程序给出如下。
请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序: */
#include
#define N 16
typedef struct
{ char num[10];
int s ;
}STREC;
void fun (STREC a[])
{
/*********Begin*********/
/*********End**********/
}
int main ()
{
FILE *wf,*in;
STREC s[N]={{ "GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},
{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},
{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}};
int i;
fun(s);
printf("The data after sorted :\n");
for (i=0; i printf("%s %4d\n",s[i].num,s[i].s); printf("\n"); /******************************/ in=fopen("in001.dat","r"); i=0; while(!feof(in)) { fscanf(in,"%s %d",s[i].num,&s[i].s); i++; } fun(s); wf=fopen("out.dat","w"); for (i=0; i fprintf(wf,"%s %4d\n",s[i].num,s[i].s); fclose(wf); fclose(in); /*****************************/ return 0; } 【参考代码】 int i,j; STREC t;