C语言一菜鸟级


私信TA

用户名:LHL

访问量:66231

签 名:

AC总是意料之外 ^_^

等  级
排  名 53
经  验 11536
参赛次数 5
文章发表 56
年  龄 24
在职情况 在职
学  校 四川工商学院
专  业 通信工程

  自我简介:

C语言 蓝桥杯 ACM 新人 欢迎大佬 前来指导 交流 本人 博客https://fivecc.blog.csdn.net/

解题思路:

注意事项:

参考代码:

#include <stdio.h>
#include <string.h>
char b[10]; //截取数据 
long int zh(int le)//字符型转换整型; 
{ 
   long int s=0,i,t=1;
   for(i=1;i<=le;i++)
   {  s+=(b[le-i]-48)*t;t*=10;}
return s;
}
int main()
{
int n,j=0,i,k,len,t1=0,t2=0;
long int sj[101];
char a[1000];
long int max, min,cf,cq;
scanf("%d\n",&n);
while(n--)
{   k=0;
gets(a);
len=strlen(a);
for(i=0;i<=len;i++) 
{
if(48<=a[i]&&a[i]<=57)b[k++]=a[i];//为数字则存入 截取数据 
else if(48<=a[i-1]&&a[i-1]<=57||k!=0)//当前一个为数字后一个为空格 或字符串末尾 处理当前截取数据 
 { sj[j++]=zh(k);k=0;//存入 数据数组 
    if(max<sj[j-1]||j==1)max=sj[j-1];//找最大值 
    if(min>sj[j-1]||j==1)min=sj[j-1];//找最小值 
 }
}
}
while(min<=max)//从前 后 同时数据查找
{ for(i=0;i<j;i++)
  { if(sj[i]==min) t1++; //找到为1 未找到为 0 找到 多次为 2 
  if(sj[i]==max) t2++;
  }
  if(t1==2)cf=min;
  if(t2==2)cf=max;
  if(t1==0)cq=min;
  if(t2==0)cq=max;
  t1=t2=0;
  max--;min++;
}
printf("%ld %ld",cq,cf);
return 0;
}


 

0.0分

7 人评分

  评论区

搞错了搞错了,忘记把断号测试数据和重号测试数据放进去了。抱歉答主。
2021-01-18 10:16:32
代码有问题,当最大值与最小值并不在最后一列数据当中时,输出会超限(原因是sj数组只能存放最后一组数据),比如:
3
1 5 4
2 7 9
3 6 8
2021-01-18 10:06:12
  • «
  • 1
  • »