MOOC输出满足条件的学生信息。(30分)

题目内容:

输入不多于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 ;
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浣花溪畔蜂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值