2021题
建立一个储存工资的表,然后把工资拆分成若干张不同面值的钱,然后输出总共多少张。
#include<stdio.h>
#include <math.h>
int main()
{
int people,i;
while(scanf("%d",&people)!=EOF)
{ if(people==0){return 0;}
int money[people];
int baiyuan=0,wushi=0,wuyuan=0,liangyuan=0,yiyuan=0,shiyuan=0;
for(i=0;i<people;i++)
{
scanf("%d",&money[i]);
baiyuan+=money[i]/100;
wushi+=(money[i]%100)/50;
shiyuan+=((money[i]%100)%50)/10;
wuyuan+=((((money[i]%100)%50))%10)/5;
liangyuan+=(((((money[i]%100)%50))%10)%5)/2;
yiyuan+=(((((money[i]%100)%50))%10)%5)%2;
}
printf("%d\n",baiyuan+wuyuan+wushi+shiyuan+liangyuan+yiyuan);
}
return 0;
}
2022题
建立一个二维数组来储存得分,然后再对数组中的数进行绝对值比较,保留绝对值最大的数的下标,输出下标和原数组的数。
#include<stdio.h>
#include <math.h>
int main()
{
int m,n,i,j,b,a=-1,c;
while(scanf("%d %d",&n,&m)!=EOF)
{ int shuzu[n][m];
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
scanf("%d",&shuzu[i][j]);
}
}
b=abs(shuzu[0][0]);
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(abs(shuzu[i][j])>b)
{
b=abs(shuzu[i][j]);
}
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(abs(shuzu[i][j])==b)
{
a=i;c=j;
break;
}
}
if(a>=0){break;}
}
printf("%d %d %d\n",a+1,c+1,shuzu[a][c]);
a=-1;
}
return 0;
}
2023题
建立一个二维的数组来储存每个学生的成绩,再分别对每行和每列求平均值,最后在拿成绩平均值和每个学生的成绩进行比较找出都超过平均分的人。
#include<stdio.h>
#include <math.h>
int main()
{
int subject,student,i,j;
while(scanf("%d %d",&student,&subject)!=EOF)
{ int shuzu[student][subject];
double avg_student[student],avg_subject[subject];
int good_student=0,count=0;
double sum_student=0,sum_subject=0;
for(i=0;i<student;i++)
{
for(j=0;j<subject;j++)
{
scanf("%d",&shuzu[i][j]);
sum_student+=shuzu[i][j];
}
avg_student[i]=sum_student/subject;
sum_student=0;
if(i==student-1){printf("%.2f",avg_student[i]);}
else{printf("%.2f ",avg_student[i]);}
}printf("\n");
for(i=0;i<subject;i++)
{
for(j=0;j<student;j++)
{
sum_subject+=shuzu[j][i];
}
avg_subject[i]=sum_subject/student;
sum_subject=0;if(i==subject-1){printf("%.2f",avg_subject[i]);}
else{printf("%.2f ",avg_subject[i]);}
}printf("\n");
for(i=0;i<student;i++)
{
for(j=0;j<subject;j++)
{
if(shuzu[i][j]<avg_subject[j]){count++;}
}
if(count==0){good_student++;}
count=0;
}
printf("%d\n",good_student);
good_student=0;
printf("\n");
}
return 0;
}
2024题
建立一个数组来储存字符串,如果直接用scanf来储存字符串的话是储存不了空格的,所以我这边选择的是一个字符一个字符的存,换行号为结束语,然后对每个字符进行筛选,判断符合不符合常规。如果全部符合,则输出yes。
在准备输入字符串时,要用一个getchar()去收集scanf(“%d”,&n)遗留下来的换行符,不然会多一个换行符。
#include<stdio.h>
int main()
{
int n,len=0,count=0,i,j;
char shuzu[51],c;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
len=0;
for (j=0; (c = getchar() )!= '\n'; j++)
{
shuzu[j] = c;
len++;
}
count=0;
for(j=0;j<len;j++)
{
if(!(shuzu[0]>='0'&&shuzu[0]<='9')&&
(
(shuzu[j]>='A'&&shuzu[j]<='Z')||
(shuzu[j]>='a'&&shuzu[j]<='z')||
shuzu[j]=='_'||(shuzu[j]>='0'&&shuzu[j]<='9')
)
)
count++;
else
count--;
}
if(count==len)
printf("yes\n");
else
printf("no\n");
}
return 0;
}
2025题
先建立一个字符串数组,然后寻找字符串中最大的字符,之后再输出字符串的时候每遇到最大的字符就输出一次(max)即可。
#include<stdio.h>
#include <cstring>
int main()
{
char cha[101];
char max;
int len,i,flag;
while(scanf("%s",&cha)!=EOF)
{
len=strlen(cha);
max=cha[0];
for(i=0;i<len;i++)
{
if(cha[i]>max)
{
max=cha[i];
}
}
for(i=0;i<len;i++)
{
printf("%c",cha[i]);
if(cha[i]==max)
{
printf("(max)");
}
}
printf("\n");
}
return 0;
}