中国石油大学(华东)C语言在线测评答案-第12章结构体和共用体(2013级亲测正确)

更新时间:2023-05-03 18:56:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

. .

12.1 修改学生的各科成绩

给定程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。请在程序的下划线处填入正确的容并把下划线删除,使程序得出正确的结果。

注意:只需提交补充完整的fun函数和main函数

预设代码

/**********found**********/

void fun(___1___ *ss,float a)

{

int i;

for(i=0; i<3; i++)

/**********found**********/

ss->___2___ *=a;

}

int main( )

{

STU std={ 1,"Zhanghua",76.5,78.0,82.0 };

float a;

scanf("%f",&a);

/**********found**********/

fun(___3___,a);

show(std);

return 0;

}

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

#include

#include

#include

typedef struct

{

int num;

char name[9];

float score[3];

页脚

. . }STU;

void show(STU tt)

{

int i;

printf("%d %s : ",tt.num,180f812ebeeb19e8b8f67c1cfad6195f302be8d3);

for(i=0; i<3; i++)

printf("%5.1f",tt.score[i]);

printf("\n");

}

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

/**********found**********/

void fun(STU *ss,float a)

{

int i;

for(i=0; i<3; i++)

/**********found**********/

ss->score[i] *=a;

}

int main( )

{

STU std={ 1,"Zhanghua",76.5,78.0,82.0 };

float a;

scanf("%f",&a);

/**********found**********/

fun(&std,a);

页脚

. .

页脚 show(std); return 0;

}

12.2 修改学生信息

程序通过定义学生结构体变量,存储了学生的学号、和 3 门课的成绩。函数 fun 的功能是对形参 b 所指结构体变量中的数据进行修改 , 最后在主函数中输出修改后的数据。 例如 : b 所指变量 t 中的学号、、和三门课的成绩依次是 : 10002 、 "ZhangQi" 、 93 、 85 、 87 ,修改后输出 t 中的数据应为: 10004 、 " LiJie " 、 93 、 85 、 87 。

请在程序的下划线处填入正确的容并把下划线删除 , 使程序得出正确的结果。

不得增行或删行,也不得更改程序的结构!

注意:只需提交补充完整的fun 函数和main 主函数

预设代码

void fun( struct student *b)

{

/**********found**********/

b__1__ = 10004;

/**********found**********/

strcpy(b__2__, "LiJie");

}

int main()

{

struct student t={10002,"ZhangQi", {93, 85, 87}};

int i;

/**********found**********/

fun(__3__);

printf("No: %ld Name: %s\nScores:",t.sno, 180f812ebeeb19e8b8f67c1cfad6195f302be8d3);

for (i=0; i<3; i++) printf("%6.2f", t.score[i]);

printf("\n");

return 0;

}

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

#include

#include

. .

struct student

{

long sno;

char name[10];

float score[3];

};

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

void fun( struct student *b)

{

/**********found**********/

b->sno = 10004;

/**********found**********/

strcpy(b->name, "LiJie");

}

int main()

{

struct student t={10002,"ZhangQi", {93, 85, 87}}; int i;

/**********found**********/

fun(&t);

printf("No: %ld Name: %s\nScores:",t.sno, 180f812ebeeb19e8b8f67c1cfad6195f302be8d3); for (i=0; i<3; i++) printf("%6.2f", t.score[i]); 页脚

. .

页脚 printf("\n");

return 0;

}

12.3

学生信息的排序

程序通过定义学生结构体数组,存储了若干名学生的学号、和 3 门课的成绩。函数 fun 的功能是将存放学生数据的结构体数组,按照的字典序(从小到大)排序。

请在程序的下划线处填入正确的容并把下划线删除 , 使程序得出正确的结果。 注意:只需提交补充完整的fun 函数。

预设代码

void fun(struct student a[], int n)

{

/**********found**********/

__1__ t;

int i, j;

/**********found**********/

for (i=0; i<__2__; i++)

for (j=i+1; j

/**********found**********/

if (strcmp(__3__) > 0)

{ t = a[i]; a[i] = a[j]; a[j] = t; }

}

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

#include

#include

struct student

{

. .

long sno;

char name[10];

float score[3];

};

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

void fun(struct student a[], int n)

{

/**********found**********/

struct student t;

int i, j;

/**********found**********/

for (i=0; i

for (j=i+1; j

/**********found**********/

if (strcmp(a[i].name,a[j].name) > 0)

{ t = a[i]; a[i] = a[j]; a[j] = t; }

}

12.4 找出指定分数围的学生

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中, 请编写函数fun,它的功能是:把指定分数围的学生数据放在h所指的数组中,分数围的学生人数由函数值返回。

例如,输入的分数是60 69, 则应当把分数在60到69的学生数据进行输出,包含60分和69分的学生数据。主函数中将把60放在low中,把69放在heigh中。

注意:只需提交fun函数

页脚

. .

STREC

s[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},{"GA001",96},{"GA 007",72},{"GA008",64},{"GA006",87},{"GA015",85},{"GA013",94},{"GA012",64},{ "GA014",91},{"GA011",90},{"GA017",64},{"GA018",64},{"GA016",72}};

页脚

. .

12.5找出分数最低的学生

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中, 请编写函数fun,它的功能是:把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。注意: 只需提交fun函数

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

#include

#define N 16

typedef struct

{

char num[10];

int s;

}STREC;

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

int fun(STREC s[],STREC h[])

页脚

. .

{

int j,min,count=0;

min=s[0].s;

for(j=1;j

{

if(s[j].s

{

min=s[j].s;

}

}

for(j=0;j

{

if(s[j].s==min)

{

h[count]=s[j];

count++;

}

}

return count;

}

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

int main()

{

STREC

s[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",7页脚

. .

页脚 2},{"GA08",64},{"GA06",87},{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",

91},{"GA011",91},{"GA017",64},{"GA018",64},{"GA016",72}};

STREC h[N];

int i,n;

n=fun(s,h);

for(i=0;i

printf("%s %4d\n",h[i].num,h[i].s);

return 0;

}

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

12.6求平面上两点距离

编写程序,计算二维平面上两点p1和p2间的直线距离。

输入:两点的坐标值 输出:两点的距离 注意:只需提交fun 函数

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

#include

#include "math.h"

typedef struct

{

double x,y;

}POINT2D;

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

double fun(POINT2D p1,POINT2D p2)

{

double m=0;

. .

页脚 m=(p2.x-p1.x)*(p2.x-p1.x);

m+=(p2.y-p1.y)*(p2.y-p1.y); m=(double)(sqrt(m));

return m;

}

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

int main()

{

POINT2D p1,p2;

double e;

scanf("%lf%lf",&p1.x,&p1.y);

scanf("%lf%lf",&p2.x,&p2.y);

e=fun(p1,p2);

printf("%lf\n",e);

return 0;

}

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

12.7加密

编写程序,按下表所示的码表将明文中指定的明码转换为暗码(其他字符不变),形成密文并输出。

输入:明文 输出:与输入相对应的密文 注意:只需提交fun 函数

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

. .

#include

#define N 80

typedef struct

{

char real; /*明码*/

char code; /*密码*/

}ENCODE;

/* PRESET CODE END - NEVER TOUCH CODE ABOVE */

void fun(char s[],char t[],ENCODE tab[])

{

int i=0,j,find;

while(s[i]!='\0')

{

find=0;

for(j=0;j<4;j++)

{

if(s[i]==tab[j].real)

{

t[i]=tab[j].code;

find=1;

break;

}

}

页脚

. .

if(find==0) t[i]=s[i];

i++;

}

t[i]='\0';

}

/* PRESET CODE BEGIN - NEVER TOUCH CODE BELOW */

int main()

{

char s[N],t[N];

ENCODE tab[]={{'a','d'},{'b','z'},{'z','a'},{'d','b'},{'\0'}}; /*定义码表,供转换时查阅*/

gets(s);

fun(s,t,tab);

printf("%s\n",t);

return 0;

} /* PRESET CODE END - NEVER TOUCH CODE ABOVE */

页脚

本文来源:https://www.bwwdw.com/article/yiqe.html

Top