C程序设计A实训期末考试-xlc-2019

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;
}

猜你喜欢

转载自blog.csdn.net/qq_30445397/article/details/103806020