一.函数题
6-1 选队长
void showCaptain(TeamMember team[], int n)
{
TeamMember max;
max = team[0];
for (int i = 1; i < n; i++)
{
if (max.ability < team[i].ability)
max = team[i];
}
printf("%d %s %s %s %.2lf", max.id, max.lastname,max.firstname, max.sex, max.ability);
}
6-2 按等级统计学生成绩
int set_grade(struct student* p, int n)
{
int count = 0;
for (int i = 0; i < n; i++)
{
if (p[i].score >= 85 && p[i].score <= 100)
p[i].grade = 'A';
if (p[i].score >= 70 && p[i].score <= 84)
p[i].grade = 'B';
if (p[i].score >= 60 && p[i].score <= 69)
p[i].grade = 'C';
if (p[i].score >= 0 && p[i].score <= 59)
{
p[i].grade = 'D';
count++;
}
}
return count;
}
6-3 学生成绩比高低
int compareScore(const struct Student* s1, const struct Student* s2)
{
if ((s1->C + s1->English) > (s2->C + s2->English))
return 1;
if ((s1->C + s1->English) < (s2->C + s2->English))
return -1;
if ((s1->C + s1->English) == (s2->C + s2->English))
{
if (s1->C > s2->C)
return 1;
if (s1->C < s2->C)
return -1;
if (s1->C == s2->C)
return 0;
}
}
6-4 综合成绩
double getAverage(Applicant* a)
{
double sum = 0.0;
sum = a->computational * 1.0 * 0.4 + a->humanistic * 1.0 * 0.5 + a->logical * 1.0 * 0.3 + a->presentation * 1.0 * 0.6 + a->scientific * 1.0 * 0.8;
return sum;
}
6-5 利用“选择排序算法“对结构体数组进行排序
int min_idx = p1->score;
for (p2 = p1 + 1; p2 < pData + n; p2++)
{
if (p2->score > min_idx)
{
min_idx = p2->score;
p = p2;
}
}
if (min_idx != p1->score)
{
num = p1->num;
score = p1->score;
p1->num = p->num;
p1->score = p->score;
p->num = num;
p->score = score;
}
6-6 结构体的最值
ST* MaxST(ST d[], int n, int k)
{
ST* max = NULL;
for (int i = 0; i < n; i++)
{
if (d[i].gender == k && (max == NULL || max->scored < d[i].scored))
{
max = &d[i];
}
}
return max;
}
6-7 复数相乘运算
PLEX multi(PLEX a, PLEX b)
{
PLEX product;
product.re = a.re * b.re - a.im * b.im;
product.im = a.re * b.im + a.im * b.re;
return product;
}
二.编程题
7-5 一帮一
文章来源:https://www.toymoban.com/news/detail-757328.html
#include<stdio.h>
#include<string.h>
struct student
{
int a;
char name[20];
};
struct student1
{
int b;
char name1[20];
};
int main()
{
struct student s1[50];
struct student1 s2[50];
struct student1 s3[50];
int i, n, j = 0, t = 0, c, d;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d %s", &s1[i].a, s1[i].name);
}
for (i = 0; i < n; i++)
{
if (s1[i].a == 1)
{
s2[j].b = i;
strcpy(s2[j].name1, s1[i].name);
j++;
}
if (s1[i].a == 0)
{
s3[t].b = i;
strcpy(s3[t].name1, s1[i].name);
t++;
}
}
c = n / 2 - 1, d = n / 2 - 1;
j = 0, t = 0;
for (i = 0; i < n / 2; i++)
{
if (s3[j].b < s2[t].b)
{
printf("%s %s\n", s3[j].name1, s2[c].name1);
j++;
c--;
}
else
{
printf("%s %s\n", s2[t].name1, s3[d].name1);
t++;
d--;
}
}
return 0;
}
7-6 考试座位号
文章来源地址https://www.toymoban.com/news/detail-757328.html
#include<stdio.h>
struct student
{
char number[17];
int s;
int k;
};
int main()
{
int N = 0;
scanf("%d", &N);
struct student stu[1001] = {0};
for (int i = 0; i < N; i++)
{
scanf("%s %d %d", stu[i].number, &stu[i].s, &stu[i].k);
}
int n = 0;
scanf("%d", &n);
int ret = 0;
for (int i = 0; i < n; i++)
{
scanf("%d", &ret);
int j = 0;
for (j = 0; j < N; j++)
{
if (ret == stu[j].s)
{
printf("%s %d\n", stu[j].number, stu[j].k);
}
}
}
return 0;
}
到了这里,关于【C/PTA —— 14.结构体1(课外实践)】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!