导航:首页 > 保研推免 > 字符数组谁拿了最多奖学金

字符数组谁拿了最多奖学金

发布时间:2020-12-06 14:20:32

㈠ ·[PASCAL]谁拿了最多奖学金

本题题目有点长..
基本思路:首先用ansistring读入每一行并作处理,可先用pos函数找到空格然后将1~pos的值-1截下作为名字nn,接下来2个分数都是将前面空格前的删掉继续用pos找空格,然后对空格前的字符串长度作处理,并将分数记为n1、n2,再接下来同样处理得出n3、n4、n5,然后就按照题目要求计算出当前人的奖学金s,然后与之前最大值max比较,若比max大那么就将max:=s同时将该同学名字nn存如maxn中,并将s加到总和sum中,最后就可以按要求输出max,maxn,sum了.
这道题很早做的..已经忘了很多,程序太长不好找错..只能讲讲思路了.
附我以前做的程序,略有些复杂,可优化(与上述变量无关):
var a,b,c,l,i,j,n,sum,max,s,ss:longint;nn,n1,n2,n3,n4,n5:ansistring;
begin
readln(n);
sum:=0;
max:=0;//初始化
for i:=1 to n do begin
s:=0;//还是初始化
readln(n4);
l:=length(n4);
n1:='';//仍然是初始化,我是读一行做一行..
for j:=1 to l do
if n4[j]<>' ' then n1:=n1+n4[j] else begin ss:=j;break;end;//找名字,用pos看上去会清楚点..
n5:='';
for j:=ss+1 to l do
if n4[j]<>' ' then n5:=n5+n4[j] else begin ss:=j;break;end;
if length(n5)=1 then a:=ord(n5[1])-ord('0') else
if length(n5)=2 then a:=(ord(n5[1])-ord('0'))*10+ord(n5[2])-ord('0') else
if length(n5)=3 then a:=100;//对分数的字符长度判断并得出分数
n5:='';
for j:=ss+1 to l do
if n4[j]<>' ' then n5:=n5+n4[j] else begin ss:=j;break;end;
if length(n5)=1 then b:=ord(n5[1])-ord('0') else
if length(n5)=2 then b:=(ord(n5[1])-ord('0'))*10+ord(n5[2])-ord('0') else
if length(n5)=3 then b:=100;//对第二个分数的处理,同上
n2:='';
n3:='';
n2:=n4[ss+1];
n3:=n4[ss+3];//接下来2个Y或N
ss:=ss+4;
n5:='';
for j:=ss+1 to l do
if n4[j]<>' ' then n5:=n5+n4[j];
if length(n5)=1 then c:=ord(n5[1])-ord('0') else
if length(n5)=2 then c:=(ord(n5[1])-ord('0'))*10+ord(n5[2])-ord('0');//求论文数
if (a>80) and (c>=1) then s:=s+8000;
if (a>85) and (b>80) then s:=s+4000;
if a>90 then s:=s+2000;
if (a>85) and (n3='Y') then s:=s+1000;
if (b>80) and (n2='Y') then s:=s+850;
sum:=sum+s;
if s>max then begin max:=s;nn:=n1;end;
end;//按照题目要求做
writeln(nn);
writeln(max);
writeln(sum);//输出答案
end.

㈡ c语言 谁拿了最多奖学金

1 #include <iostream>
2 using namespace std;
3 struct Stu{
4
char name[20];
5
int west;
6
int qimo;//��ĩ
7
int bj;//
8
int gb; //
9
int art; //����
10
int mo;
11 };
12 Stu stu[130];
13 int n;
14 long long money=0;
15 int main()
16 {
17
freopen("scholar.in","r",stdin);
18
freopen("scholar.out","w",stdout);
19
memset(stu,0,sizeof(stu));
20
cin >> n;
21
for(int i=1;i<=n;i++){
22
char a,b;
23
cin >> stu[i].name >> stu[i].qimo >> stu[i].bj >> a >> b >> stu[i].art;
24
if (a=='Y')stu[i].gb=1;
25
if (b=='Y')stu[i].west=1;
26
}
27
int bigm=0,jn;
28
for(int i=1;i<=n;i++){
29
if (stu[i].qimo>80 && stu[i].art)stu[i].mo+=8000;
30
if (stu[i].qimo>85 && stu[i].bj>80)stu[i].mo+=4000;
31
if (stu[i].qimo>90) stu[i].mo+=2000;
32
if (stu[i].qimo>85 && stu[i].west)stu[i].mo+=1000;
33
if (stu[i].bj>80 && stu[i].gb)stu[i].mo+=850;
34
money+=stu[i].mo;
35
if (stu[i].mo>bigm)bigm=stu[i].mo,jn=i;
36
}
37
cout << stu[jn].name << endl;
38
cout << bigm << endl;
39
cout << money << endl;
40
41
return 0;
42 }
43

㈢ C语言解答"谁拿了最多的奖学金"

#include <stdio.h>
int main()
{
int i,G1[10],G2[10],n[10],sum[10],S1,S2,N;
char name[10],Y[10],X[10];
for(i=1;i<=N;i++)
{
scanf("%s %d %d %c %c %d\n",&name[i],&G1[i],&G2[i],&Y[i],&X[i],&n[i]);
if(G1[i]>80,n[i]>=1)
sum[i]=sum[i]+8000;
if(G1[i]>85,G2[i]>80)
sum[i]=sum[i]+4000;
if(G1[i]>90)
sum[i]=sum[i]+2000;
if(G1[i]>85,X[i]='Y')
sum[i]=sum[i]+1000;
if(G2[i]>80,Y[i]='Y')
sum[i]=sum[i]+850;
}
for(i=1;i<=N;i++)
{
if(sum[i]>=sum[i+1])
S1=sum[i];
if(sum[i]=S1)
S2=S1+sum[i];
}
printf("%s\n,%d\n,%d",name[i],S1,S2);
return 0;
}

㈣ c++谁拿了最多的奖学金

#include <string>
#include <iostream>
using namespace std;

string stu_name[100];
int stu_num[100];

int main()
{
int n;cin>>n;
memset(stu_name,0,sizeof stu_name);
memset(stu_num,0,sizeof stu_num);
for (int i=0;i<n;i++)
{
int sc1,sc2;
char fl1,fl2;
int c;
cin>>stu_name[i];
cin>>sc1>>sc2>>fl1>>fl2>>c;
if (sc1>80&&c)
stu_num[i] += 8000;
if (sc1>85&&sc2>80)
stu_num[i] += 4000;
if (sc1>90)
stu_num[i] += 2000;
if (sc1>85&&fl2=='Y')
stu_num[i] += 1000;
if (sc2>80&&fl1=='Y')
stu_num[i] += 850;
}
int max_index = 0;
int max_num = 0;
for (int i=0;i<n;i++)
{
if (stu_num[i]>stu_num[max_index])
max_index = i;
max_num += stu_num[i];

}
cout<<stu_name[max_index]<<endl<<stu_num[max_index]<<endl<<max_num<<endl;
return 0;
}

㈤ C 语言 谁拿了最多的奖学金

没有错啊!

㈥ "谁拿了最多奖学金" C程序求助,在线等答案

这是我写的C++代码
希望能被采纳,谢谢
你的这题目是NOIP的吧
我做过,现在我学NOI了

#include <iostream>
#define FOR(i,a,b) for(i=a;i<b;i++)
using namespace std;

struct Student
{
char name[21];
int m1,m2;
char c1,c2;
int p,total;
};

int main( void )
{
int n,i,totals(0),max(0);
cin >> n;
struct Student* team = new Student[n],* tmax ;
FOR(i,0,n) {
cin >> team[i].name
>> team[i].m1 >> team[i].m2
>> team[i].c1 >> team[i].c2
>> team[i].p;
team[i].total = 0;
}
FOR(i,0,n) {
if (team[i].m1 > 80 && team[i].p > 0) team[i].total += 800;
if (team[i].m1 > 85 && team[i].m2 > 80) team[i].total += 400;
if (team[i].m1 > 90) team[i].total += 200;
if (team[i].m1 > 85 && team[i].c2 == 'Y') team[i].total += 100;
if (team[i].m2 > 80 && team[i].c1 == 'Y') team[i].total += 85;
totals += team[i].total;
}
max = team[0].total; tmax = &team[0];
FOR(i,1,n) if (team[i].total > max)
{max = team[i].total ; tmax = &team[i]; }
cout << tmax -> name << endl
<< tmax -> total << '0' << endl
<< totals << '0' << endl;
totals = max = 0;
delete [] team;
}

㈦ tyvj的谁拿了最多奖学金问题;C语言;求更正

awa函数里面用的全复部制是大于号,对于80分那么得到的奖学金就是0了
看起来好像每次都要比n多输入一个学生的数据,虽然最后一个p1没有加到链表中
提个小建议啊,malloc的内存都没有释放,特别是最后p1所指的内存基本就是丢失了(因为对于n个学生每次都分配n+1个节点的内存)

㈧ pasacal 谁拿了最多奖学金 求救

repeat k:=k+1;read(p[k]);xingming[i]:=xingming[i]+p[k]; until(p[k]=' ');
read(a1[i]);read(a2[i]); For j:=1 to 4 do read(q[j]);
s1[i]:=q[2];s2[i]:=q[4];read(a3[i]);readln; end;
For i:=1 to n do

㈨ C语言 谁拿了最多的奖学金 高手看看哪错了。

首先,memset(jxj,0,sizeof(jxj));这个东西,你自己看看,是个什么东西呢?我看了半天实在回没有搞明白。说他是函答数声明吧,没有参数类型,也不应该放在这;说他是函数调用吧,没看到函数定义部分,说他是函数定义吧,那就没有了该函数调用的代码,更不应该在其后加分号。难道是系统函数?
再就是,那个gb和xb,我看你是定义成字符型二维数组吧,怎么在下面的用法中出现了和单个字符的比较啊?gb[i]是一维的,内容是字符串,比较要用strcmp(str1,str2)函数的,是和字符串比较,不是单个字符。gb[i][j]才是一个字符。最后,你输入的n,有可能越界的啊,要注意。

㈩ C语言结构基础谁拿了最多的奖学金

#include <stdio.h>
struct student{
char name[21];
int qtest,btest;
char gb,xb;
int lw;
int total;
};
int main(void)
{
int n,i,maxtotal=0;
struct student s[100],smax;

scanf("%d",&n);
for(i=0;i<n;i++){
scanf("%s",s[i].name);
scanf("%d%d",&s[i].qtest,&s[i].btest);
getchar();
s[i].gb=getchar();
getchar();
s[i].xb=getchar();
scanf("%d",&s[i].lw);
s[i].total=0;
}

for(i=0;i<n;i++){
if(s[i].qtest>80&&s[i].lw>=1) s[i].total+=8000;
if(s[i].qtest>85&&s[i].btest>80) s[i].total+=4000;
if(s[i].qtest>90) s[i].total+=2000;
if(s[i].qtest>85&&s[i].xb=='Y') s[i].total+=1000;
if(s[i].btest>80&&s[i].gb=='Y') s[i].total+=850;
}

maxtotal=s[0].total;
smax=s[0];
for(i=1;i<n;i++){
maxtotal+=s[i].total;
}

for(i=0;i<n;i++){
if(smax.total<s[i].total) smax=s[i];
}

printf("%s\n",smax.name);
printf("%d\n",smax.total);
printf("%d\n",maxtotal);
return 0;
}

阅读全文

与字符数组谁拿了最多奖学金相关的资料

热点内容
20132014南开大学国家奖学金名单 浏览:560
专升本考生考研复试 浏览:354
研究生给导师写自荐信被婉拒了怎么回复 浏览:470
2020中科大非全日制分数 浏览:747
江西非全日制研究生 浏览:1
2016全日制自考学校 浏览:86
考研广播电视学分数线 浏览:465
研究生什么年龄能考试 浏览:580
中科院大学研究生考试培训 浏览:43
全日制大专免考免试入学 浏览:943
考研在学校租房子 浏览:543
上海全日制专升本报名 浏览:924
事业单位必须是全日制学历吗 浏览:233
出国读研澳洲 浏览:340
金融研究生考英语考试 浏览:43
云南大学研究生比较好的专业 浏览:32
本科生考在职研究生报考时间 浏览:173
密码学专业考研科目 浏览:996
工程学院针对的考研的学校有哪些 浏览:982
研究生考试366分 浏览:123