Problem A: 判断及格否
Description
判断及格否。输入一个成绩(正整数),判断其是否及格,若大于等于60分,输出“pass”,否则输出“fail”。
Input
多组测试,每组输入一个成绩(正整数)。多组测试代码模式 while (scanf("%d", &score) != EOF) {… … }
Output
若大于等于60分,输出”pass”,否则输出”fail”
Sample Input
59
60
90
Sample Output
fail
pass
pass
AC 代码
#include <stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n>=60) printf("pass\n");
else printf("fail\n");
}
return 0;
}
Problem B: 求1+2+……+N的和
Description
计算1+2+……+N的和。
Input
输入一个正整数N(N≥1)。
Output
输出1+2+……+N的和。
Sample Input
100
Sample Output
sum=5050
AC 代码
#include <stdio.h>
int main()
{
int n;
int sum=0;
scanf("%d",&n);
for(int i=1;i<=n;i++) sum+=i;
printf("sum=%d\n",sum);
return 0;
}
Problem C: 调用函数,求三个数中最大数
Description
输入三个数,输出其中最大数。要求自定义函数max(a,b),其功能是找出并返回a,b中较大的数。在main函数中调用该函数,求三个数中最大数。如三个数变量a, b, c和变量m, m = max(a,b), m = max(m, c),这样m就是最大数了。
Input
多组测试数据,每组输入三个整数。
Output
输出三个数中最大数。
Sample Input
3 9 2
0 4 8
7 -1 2
Sample Output
9
8
7
AC 代码
#include <stdio.h>
int max(int a,int b)
{
if(a>b) return a;
else return b;
}
int main()
{
int a,b,c,m;
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
{
m=max(a,b);
m=max(m,c);
printf("%d\n",m);
}
return 0;
}
Problem D: 调用函数,输出100到200之间的所有素数
Description
编写一个判断素数的函数,主函数中调用这个函数,输出100与200之间的所有素数,每行输出5个数。
Input
无
Output
输出100与200之间的所有素数,每行输出5个数,每个数占5位。
Sample Input
无
Sample Output
101 103 107 109 113
127 131 137 139 149
151 157 163 167 173
179 181 191 193 197
199
AC 代码
#include <stdio.h>
int isprime(int n)
{
if(n==1) return 0;
if(n==2) return 1;
for(int i=2;i<=n/2+1;i++)
{
if(n%i==0) return 0;
}
return 1;
}
int main()
{
int count=0;
for(int i=100;i<=200;i++)
{
if(isprime(i))
{
count++;
printf("%5d",i);
if(count%5==0) printf("\n");
}
}
return 0;
}
Problem E: 零起点学算法93——矩阵转置
Description
现要求你把一个矩阵行列转置后输出,注意行数和列数可能不相同的。
Input
多组测试数据,每组测试数据先在一行输入n 和m ,表示这个矩阵的行数和列数(1 < n,m <= 10) 然后是n行m列的一个矩阵
Output
对于每组测试数据输出转置后的矩阵
Sample Input
3 2
1 2
3 4
5 6
Sample Output
1 3 5
2 4 6
AC 代码
#include <stdio.h>
#include <math.h>
int main (){
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
int a[n][m];
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
}
}
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
printf("%d",a[j][i]);
if(j<n-1) printf(" ");
if(j==n-1) printf("\n");
}
}
}
return 0;
}
Problem F: 计票
Description
美国总统大选终于拉开了正式帷幕,大家都预计希拉里会获胜。各州的统计结果陆续出来了,你能帮忙统计下总得票吗?
Input
多组测试数据,每组先输入一个整数T,表示组数,然后每组先输入一个整数n,表示已经出结果的n个州,然后分两行分别是特朗普和西拉里的选票。每行n个整数.
Output
对于每组数据,输出特朗普和西拉里的总得票数,中间用空格隔开
Sample Input
1
2
67 34
0 69
Sample Output
101 69
AC 代码
#include <stdio.h>
int main()
{
int t,n;
scanf("%d",&t);
while(t--)
{
int ans1=0,ans2=0;
int a[100],b[100];
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
ans1+=a[i];
}
for(int i=0;i<n;i++)
{
scanf("%d",&b[i]);
ans2+=b[i];
}
printf("%d %d\n",ans1,ans2);
}
return 0;
}
Problem G: 搬砖
Description
这一日,快码佳编四兄弟姐妹他们来到了秦朝修造长城现场。发现一堆人在搬砖头。
佳佳眼睛尖,发现要搬的砖头数和人数正好一样。
现有n块砖,要由n人一次搬完,假定男人一次可以搬4块,女人一次可以搬3块,两个小孩搬1块,计算这n人中男人、女人和小孩的人数。
Input
输入整数n表示人数
Output
所有满足条件的男人、女人和孩子的人数,多种可能按男人数少的先输出,男人数相同的情况按女人数少的先输出,没有符合条件的提示信息“no result!”
Sample Input
7
Sample Output
1 0 6
AC 代码
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int flag=1;
for(int i=0;i<=n/4+1;i++)
{
for(int j=0;j<=n/3+1;j++)
{
if(4*i+3*j+(n-i-j)/2==n)
{
if((n-i-j)%2==0)
{
flag=0;
printf("%d %d %d\n",i,j,n-i-j);
}
}
}
}
if(flag) printf("no result!\n");
return 0;
}
Problem H: 工人评优
Description
优秀工人评选。某车间(小于30人)进行评优工作,按职工的综合分进行排序,评分方法为:工作业绩占80%, 考勤记录占20%。请编程计算综合分并排出名次。
Input
多组输入,每组先输入整数n,再输入n个职工的工号、姓名、工作业绩、考勤记录,数据都以空格间隔。
Output
输出按综合分排序后的名次,含:工号、姓名、总评分(一位小数)、名次,空格隔开,输出格式printf("%s %s %.1f %d\n",…);或printf("%d %s %.1f d%\n",…);
Sample Input
4
1001 zhang 90 80
1002 wang 95 75
1003 he 100 95
1004 li 92 90
Sample Output
1003 he 99.0 1
1004 li 91.6 2
1002 wang 91.0 3
1001 zhang 88.0 4
AC 代码
#include <stdio.h>
struct gongren
{
int id;
char name[50];
int yj;
int kq;
double zh;
}w[35],temp;
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
{
scanf("%d%s%d%d",&w[i].id,w[i].name,&w[i].yj,&w[i].kq);
w[i].zh=0.8*w[i].yj+0.2*w[i].kq;
}
for(int i=0;i<n-1;i++)
{
for(int j=i;j<n;j++)
{
if(w[i].zh<w[j].zh)
{
temp=w[i];
w[i]=w[j];
w[j]=temp;
}
}
}
for(int i=0;i<n;i++)
{
printf("%d %s %.1f %d\n",w[i].id,w[i].name,w[i].zh,i+1);
}
}
return 0;
}