C语言结构题, 求大佬帮忙解答一下。

C语言结构题, 求大佬帮忙解答一下。,第1张

/start/

#include<stdioh>

#include<stringh>

int main(){

int i,j,n;

char name[20];

struct person {

char name[20];

int count;

}leader[3] = {"Li", 0, "Zhang", 0, "Fun", 0};

printf("Please input total number:\n");

scanf("%d",&n);

printf("Please input the candidate's name:\n");

for(i=0;i<=n;i++){

gets(name);

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

{

if(strcmp(leader[j]name,name)==0)

{

leader[j]count++;

}

}

}

/end/

printf("Output:\nThe result is:\n");

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

{

printf("%s:%d\n", leader[i]name, leader[i]count);

}

return 0;

}

结构体数组赋值后为:

x[0]num = 1;x[0]name="USA";

x[1]num = 2;x[1]name="USA";

x[2]num = 3;x[2]name="France";

p是指向结构体的指针,p = x + 2 就相当于:p = x[0 + 2] = x[2];这时,p指向x[2]所在内存,p->num中->是指针访问它的变量的运算符,p->num就是x[2]num,就是3了,(p)就是相当于把p指向的内存取出里面的数据,那么就变成了非指针变量,然后用“”运算符访问它的变量name数组,x[2]name为"France",第一个F下标是0,那么下标为2的字母是a,答案就出来了。。。。。。。

我平时有刷类似算法题,如图leetcode上我的记录。此题的思想很简单:原编号就是原排名,自己写个比较函数用sort进行索引排序!这样就能轻松比较排名变化。

程序如下,有详细注释

#include<stdioh>

#include<iostream>

#include<vector>

#include<algorithm>

using namespace std;

typedef union G_sort{

char grade[4];

int id;

}G_sort;

bool greater(const G_sort &a, const G_sort &b) {

return agrade[3] > bgrade[3];

//成绩(高8位)

}

int main() {

//输入

int n;

cin >> n;

//第一行一个整数n,表示学生总数。

vector<G_sort> grade(n);

//表示每个学生的 编号(高24位)|成绩(低8位)

for (int i = 0; i < n; i++) {

//n ≤ 100, 000

scanf("%d", &grade[i]grade[3]);

//成绩(高8位)

//cin >> grade[i]grade[3];

★这种输入会出错

grade[i]id |= i;

//编号(低24位)

}

//排序

sort(gradebegin(), gradeend(), greater);

//根据学号排序

int d_sort = 0, now_sort;//排名上升多少,现排名

for (int i = 0; i < n; i++) {

int d = (grade[i]id & 0xffffff) - i;

//原排名-现排名

if (d > d_sort) {

//若两位同学名次上升幅度相同,输出名次靠前的,也就是编号较小的。(不能取=)

d_sort = d;

now_sort = i + 1;

//注意!下标从0数起 比排名少1

}

}

//输出

/

//16进制查看 grade 数据

for (int i = 0; i < n; i++) {

printf("%x\n", grade[i]id);

}/

cout << now_sort << endl << now_sort+ d_sort << endl;

system("pause");

return 0;

}

#include<stdioh>

#define STNUM 3 //学生数 

struct student{

char id[10];

char name[10];

float course[3];

};

int main(){

student st[STNUM]; //student结构体数组 

int i,j;

printf("==========录入信息==========\n");

for(i=0;i<STNUM;i++){

printf("请输入第%d个学生的信息\n",i+1);

printf("请输入学号:");

scanf("%10s",&st[i]id);

printf("请输入姓名:");

scanf("%10s",&st[i]name);

printf("请输入3门课的成绩:");

for(j=0;j<3;j++){

scanf("%f",&st[i]course[j]);

sum[i] += st[i]course[j];

}

}

printf("==========学生信息==========\n");

for(i=0;i<STNUM;i++){

printf("-----------学生%d----------\n",i+1);

printf("学号:%s\n",st[i]id);

printf("姓名:%s\n",st[i]name);

printf("3门课的成绩:");

for(j=0;j<3;j++){

printf("%1f ",st[i]course[j]);

sum[i] += st[i]course[j];

}

printf("\n");

}

return 0;

}

以上就是关于C语言结构题, 求大佬帮忙解答一下。全部的内容,包括:C语言结构题, 求大佬帮忙解答一下。、C语言结构体一道题习题,求详解、C++程序题结构体和sort排序问题E:进步最快等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10104678.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存