题目内容:
输入不多于10个的学生信息,,信息包括学号、姓名(不多于10个字符)和成绩,当输入学号为0时输入结束,再输入一个成绩值,将成绩大于等于该值的学生信息按成绩从高到低输出。如果没有满足条件的学生,则输出“Not found”。
输入格式:
分行输入若干个学生信息,而每行按学号、姓名、成绩顺序依次输入数据,当学号输入为0时结束输入。
再输入一个整数表示的成绩值。
输出格式:
将大于等于给定成绩的学生信息按成绩从高到低输出,数据之间只有一个空格,一行只输出一个学生的信息。如果没有满足条件的学生,则输出“Not found”。
输入样例:
1 zhangsan 80
2 wangwu 85
3 lisi 70
4 chengzhen 67
5 leijiajia 78
0
75
输出样例:
2 wangwu 85
1 zhangsan 80
5 leijiajia 78
时间限制:500ms内存限制:32000kb
用例 | 提示 |
---|---|
用例1 | 与样例类似 |
用例2 | 无满足条件学生 |
用例3 | 较大N |
//我做的时候只拿到23分,现在修改了一点,不知道能不能过第三个测试点,在dev C++上感觉没毛病
#include<stdio.h>
#include<string.h>
int main()
{
int a[ 10 ][ 2 ] , i = 0 , j , t , score , num = 0 , pass = 0 ;
char name[ 10 ][ 100 ] , temp[ 10 ] ;
scanf( "%d " , &a[ i ][ 0 ] ) ;
//+++++++++++++++++++++++++++++++++++输入环节+++++++++++++++++++++++++++++++++++
while( a[ i ][ 0 ] != 0 )
{
scanf( "%s %d" , name[ i ] , &a[ i ][ 1 ] ) ;
num++ ; i++ ;
scanf( "%d" , &a[ i ][ 0 ] ) ;
}
scanf( "%d" , &score ) ;
//+++++++++++++++++++++++++++++++++++排序环节+++++++++++++++++++++++++++++++++++
for( i = 0 ; i < num - 1 ; i++ )
for( j = 0 ; j < num - i - 1 ; j++ )
if( a[ j ][ 1 ] < a[ j + 1 ][ 1 ] )
{
t = a[ j ][ 0 ] ;
a[ j ][ 0 ] = a[ j + 1 ][ 0 ] ;
a[ j + 1 ][ 0 ] = t ;
strcpy( temp , name[ j ] ) ;
strcpy( name[ j ] , name[ j + 1 ] ) ;
strcpy( name[ j + 1 ] , temp ) ;
t = a[ j ][ 1 ] ;
a[ j ][ 1 ] = a[ j + 1 ][ 1 ] ;
a[ j + 1 ][ 1 ] = t ;
}
//+++++++++++++++++++++++++++++++++++输出环节+++++++++++++++++++++++++++++++++++
for( i = 0 ; i < num ; i++ )
if( a[ i ][ 1 ] < score ) break ;
else
{
pass++ ;
printf( "%d %s %d\n" , a[ i ][ 0 ] , name[ i ] , a[ i ][ 1 ] ) ;
}
if( pass == 0 ) printf( "Not found\n" ) ;
return 0 ;
}
#include<stdio.h>
#include<string.h>
int main()
{
int a[ 10 ][ 2 ] , l[ 10 ] , i = 0 , j , t , score , num = 0 , pass = 0 ;
char name[ 10 ][ 100 ] , temp[ 10 ] ;
scanf( "%d " , &a[ i ][ 0 ] ) ;
//++++++++++++++++++++++++++++++++++++++++输入环节++++++++++++++++++++++++++++++++++++++++
while( a[ i ][ 0 ] != 0 )
{
scanf( "%s" , name[ i ] ) ;
l[ i ] = strlen( name[ i ] ) ;
scanf( "%d" , &a[ i ][ 1 ] ) ;
num++ ;
i++ ;
scanf( "%d" , &a[ i ][ 0 ] ) ;
}
scanf( "%d" , &score ) ;
//++++++++++++++++++++++++++++++++++++++++排序环节++++++++++++++++++++++++++++++++++++++++
for( i = 0 ; i < num - 1 ; i++ )
for( j = 0 ; j < num - i - 1 ; j++ )
if( a[ j ][ 1 ] < a[ j + 1 ][ 1 ] )
{
t = a[ j ][ 0 ] ; a[ j ][ 0 ] = a[ j + 1 ][ 0 ] ; a[ j + 1 ][ 0 ] = t ;
t = a[ j ][ 1 ] ; a[ j ][ 1 ] = a[ j + 1 ][ 1 ] ; a[ j + 1 ][ 1 ] = t ;
strcpy( temp , name[ j ] ) ; strcpy( name[ j ] , name[ j + 1 ] ) ; strcpy( name[ j + 1 ] , temp ) ;
t = l[ j ] ; l[ j ] = l[ j + 1 ] ; l[ j + 1 ] = t ;
}
//++++++++++++++++++++++++++++++++++++++++输出环节++++++++++++++++++++++++++++++++++++++++
for( i = 0 ; i < num ; i++ )
if( a[ i ][ 1 ] < score )
break ;
else
{
pass++ ;
printf( "%d " , a[ i ][ 0 ] ) ;
for( j = 0 ; j < l[ i ] ; j++ )
printf( "%c" , name[ i ][ j ] ) ;
printf( " %d\n" , a[ i ][ 1 ] ) ;
}
if( pass == 0 )
printf( "Not found\n" ) ;
return 0 ;
}