数字溢出

1017:期末成绩 分数: 1

时间限制:1 秒
内存限制:32 兆
特殊判题:
提交:2
解决: 1

标签

  • 简单模拟
  • 查找

题目描述

又到学期末,小明迎来了又一次的期末考试。虽然每学期都要考试,但是这次期末考试对小明来说意义重大。因为小明爱慕已久的女神说,如果小明这次考了全班前三名就做他女朋友。虽说小明没有十足的信心,但是女神的话不能不听啊。
考完试后,小明拿到了全班的成绩单,这张成绩单是按学号顺序排好的。小明很想知道班里到底有多少人分数比他高,现在就请你帮帮他,帮他数一下到底有多少人的分数比他高吧。

输入格式

输入数据的第一行是一个正整数T,表示测试数据的组数,接下来有T组测试数据。
每组数据包括两行。
第一行有两个正整数N,K(0<N<1000,0<K<=N),分别表示成绩单上总共的学生数目,和小明的学号。
第二行有N个整数Xi(0<=Xi<=100)分别表示各个学生的成绩,以学号递增顺序给出,第一个学生学号为1。

输出

对于每组数据,请在一行里输出班里一共有多少个学生成绩高于小明。

样例输入

1
3 2
81 72 63

样例输出

1

 

开始我的代码写成了:

#include<iostream>
using namespace std;
int main()
{
 int t,n,k,i,j,a[100],temp,c;
 cin>>t;
 while (cin>>n>>k){
  for(i=1;i<=n;i++){
   cin>>a[i];
   if(i==k)
   c=a[i];
  }
 for (i=1;i<=n;i++){
  for (j=i+1;j<=n;j++)
    if(a[i]<a[j]){
     temp=a[i];
     a[i]=a[j];
     a[j]=temp; 
    }
    }      
 for(i=1;i<=n;i++){
  if(a[i]<=c){
  cout<<i-1;break;
 }
 }
     cout<<endl;
 }
  return 0;
 }

明显的数字溢出了  0<n<1000;  而我设定的数组a只有100;heihei数字溢出大概就是此类型吧!

正确代码:

#include<iostream>
using namespace std;
int main()
{
 int t,n,k,i,j,a[1005],temp,c;
 cin>>t;
 while (cin>>n>>k){
  for(i=1;i<=n;i++){
   cin>>a[i];
   if(i==k)
   c=a[i];
  }
 for (i=1;i<=n;i++){
  for (j=i+1;j<=n;j++)
    if(a[i]<a[j]){
     temp=a[i];
     a[i]=a[j];
     a[j]=temp; 
    }
    }      
 for(i=1;i<=n;i++){
  if(a[i]<=c){
  cout<<i-1;break;
 }
 }
     cout<<endl;
 }
  return 0;
 }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值