
/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:进步最快等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)