网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月03日漏签0天
c语言吧 关注:801,426贴子:4,372,629
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 6回复贴,共1页
<<返回c语言吧
>0< 加载中...

为什么dev c++的结果和pta不一致

  • 只看楼主
  • 收藏

  • 回复
  • 贴吧用户_a474ZRJ
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include<stdio.h>
int max(const int *a,int n){ int i=0; int max=0; for(i=0;i<n;i++){ if(a[lbk]i[rbk]>=a[lbk]max[rbk])max=i; } return max;}int min(const int *a,int n){ int i=0; int min=0; for(i=0;i<n;i++){ if(a[lbk]i[rbk]<=a[lbk]min[rbk])min=i; } return min;}int main(){ int n; char s[lbk]100[rbk]; scanf("%d",&n); getchar(); int b[lbk]n[rbk]; char c[lbk]100[rbk]; int max1,min1; char h[lbk]n[rbk][lbk]46[rbk]; for(int i=0;i<n;i++){ int j=0,flag=0,r=0,o=0; while((s[lbk]j[rbk]=getchar())!='\n'){ if(s[lbk]j[rbk]==' '){ if(o==0){flag=1;o=1;} else if(o==1){flag=2;} } if(flag<2){h[lbk]i[rbk][lbk]j[rbk]=s[lbk]j[rbk];}
if(flag==2&&s[lbk]j[rbk]>='0'&&s[lbk]j[rbk]<='9'){r=r*10+s[lbk]j[rbk]-48;} j++; } b[lbk]i[rbk]=r; h[lbk]i[rbk][lbk]j[rbk]='\0'; } max1=max(b,n),min1=min(b,n); int z=0,w=0; while(h[lbk]max1[rbk][lbk]z[rbk]!='\0') printf("%c",h[lbk]max1[rbk][lbk]z++[rbk]); printf("\n"); while(h[lbk]min1[rbk][lbk]w[rbk]!='\0') printf("%c",h[lbk]min1[rbk][lbk]w++[rbk]); printf("\n"); //puts(h[lbk]max1[rbk]); //puts(h[lbk]min1[rbk]); return 0;}
题目是basic level pat的第四题,为啥后边多出一个汉字,pta里却是正常的






  • 贴吧用户_a474ZRJ
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
另外,lz更改了char[n][46]中,46这个数字的大小,
发现
把46换成15 16 49的时候,只通过第一个检查点
换成17-23 25 29 33 37 39 42 45的时候,通过第一第二个检查点
换成24 26 27 30 31 34-36 38 40 41 46三个检查点全部通过,
换成28 43 47时,通过第二第三个检查点
换成32 50时,通过第一第三个检查点
换成44时,只通过第二个,且第一个检查点格式错误
换成48,通过第二第三个,第一个检查点格式错误
求指导


2025-12-03 20:19:07
广告
不感兴趣
开通SVIP免广告
  • 贴吧用户_a474ZRJ
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
lz没学结构,不得不用了这么一个很绕的方法解决问题,思路就是把每个人的姓名学号在输入的时候顺便赋给一个二元数组char h[n][46],同时将他们的成绩取出来赋给另一个数组b[],然后构造两个能取到数组内部最大值最小值的下标的函数,再把下标代入到二维数组输出姓名学号


  • 贴吧用户_a474ZRJ
  • 毛蛋
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
用结构好简单


  • 香菜味包子
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
看不懂,我大受震撼
这题根本不需要数组和结构体,就算用数组也不用这么麻烦
会用getchar不知道scanf怎么获取字符串吗
int main() {
int n = 0;
scanf("%d", &n);
char names[n][128];
int scores[n];
for(int i = 0 ; i < n; i++){
scanf("%s %d",names[i], &scores[i]);
}
int max = 0;
int min = 0;
for(int i = 0 ; i < n; i++){
if(scores[i] > scores[max])
max = i;
if(scores[i] < scores[min])
min = i;
}
printf("%s %d", names[max],scores[max]);
printf("%s %d", names[min],scores[min]);
}


  • 香菜味包子
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
数组也是不需要的
int main() {
int n = 0;
scanf("%d", &n);
char name1[128];
char name2[128];
int maxscores = -1;
int minscores = 100;
char tmp[128];
int score = 0;
for(int i = 0 ; i < n; i++){
scanf("%s %d",tmp, &score);
if (score > maxscores) {
maxscores = score;
strcpy(name1, tmp);
}
else if (score < minscores) {
minscores = score;
strcpy(name2, tmp);
}
}
printf("%s %d\n", name1,maxscores);
printf("%s %d\n", name2,minscores);
}


  • 香菜味包子
  • 超能力者
    9
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
调试看了一下,你根本没有把成绩存进b数组里,看不懂你的思路


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 6回复贴,共1页
<<返回c语言吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示