本帖最后由 jackz007 于 2021-1-11 20:13 编辑
这个结构数组 struct Info
{
unsigned long long xh ;
char name[100] ;
unsigned int score ;
} info[2] ;
info 的有效下标是 0 和 1,不是 1 和 2,所以,代码中凡是出现 info[2] 的都属于下标索引越界
这个是我修改的代码,楼主可以测试一下,在 Windows 下编译、运行应该没有问题,如果是在 Linux 系统下,long long 型数据输入、输出的格式描述符还得改回 "%lld" 。#include<stdio.h>
int main()
{
struct Info
{
unsigned long long xh ;
char name[100] ;
unsigned int score ;
} info[2] ;
int i ;
for(i = 0 ; i < 2 ; i ++) scanf("%I64u%s%u" , & info[i] . xh , info[i] . name , & info[i] . score) ;
if(info[1] . score > info[0] . score) {
printf("%I64u " , info[1] . xh ) ;
printf("%s " , info[1] . name) ;
printf("%u" , info[1] . score) ;
} else {
printf("%I64u " , info[0] . xh) ;
printf("%s " , info[0] . name) ;
printf("%u" , info[0] . score) ;
}
}
编译、运行实况D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
14308100238 xiaowang 99
15408122584 xiaoli 100
15408122584 xiaoli 100
D:\00.Excise\C>
|