ACM程序设计与竞赛作业 下载本文

内容发布更新时间 : 2024/11/14 18:00:38星期一 下面是文章的全部内容请认真阅读。

样例输出

HelloWorld 123

Nicetomeetyou abc

提示

用scanf是不能读入一行有空格的字符串的,用gets吧。 用“gets(str) != NULL”可以判断输入是否结束,如果此条件为假(即gets(str) == NULL),则表示输入结束(对于本题)。

#include #include void main() { int i,f; char a[90];//定义一个字符串; while(gets(a)!=NULL) { f=strlen(a);//把字符串的长度值赋给f; for(i=0;i

心得:这里也是主要考察输入输出问题,首先也是定义了一个字符串,用strlen()函数获得字符串的长度f,进行f次循环,判断这个字符串是否有空格?如果有把数组中的每个数往后进一位,即去点空格,如果没有直接输出。

7问题 D: 成绩转换

时间限制: 1 Sec 内存限制: 128 MB

提交: 78 解决: 30 [提交][状态][讨论版]

题目描述

输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下: 90~100为A; 80~89为B; 70~79为C; 60~69为D; 0~59为E;

输入

输入数据有多组,每组占一行,由一个整数组成。

输出

对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。

样例输入

56 67 100 123

样例输出

E D A

Score is error!

提示

#include int main() { int x;

while(scanf(\实现多行实例输入; { if(x<60) printf(\ else if(x<70) printf(\ else if(x<80) printf(\ else if(x<90) printf(\ else if(x<=100) printf(\ else printf(\ }//分数转换为等级; return 0; }

心得:这里主要运用了选择语句,用while(scanf(\语句实现多行实例输入,然后把所输入的分数通过if语句进行判断,转换成相应的等级,输出。

8问题 A: 金块问题

时间限制: 1 Sec 内存限制: 128 MB

提交: 92 解决: 71 [提交][状态][讨论版]

题目描述

老板有一袋金块(共n块,n是2的冪(n>=2)),最优秀的雇员得到其中最重的一块,最差的雇员得到其中最轻的一块。假设有一台比较重量的仪器,希望用最少的比较次数找出最重和最轻的金块。

输入

输入共两行,

第一行输入金块的数量N<100000;

第二行N金块的重量,用空格间隔。

输出

两个数用空格分开,最重金块 最轻金块

样例输入

5

3 7 9 6 4

样例输出

9 3

#include int main() {

int n,a[100000]; int max,min,i;

while(scanf(\实现多行实例输入; { for(i=0;imax) max=a[i]; }//求最最重的金块; for(i=1;i

return 0; }

心得:这题主要运用分治算法的思想,把一个大问题分成一个个小的子问题去求解,这个题目是典型的二分法问题,把这个题分成两个小问题,即求最重的和求最轻的金块,首先定义了一个一维数组,把所有金块的质量存入其中,把数组的初始值赋给最重的和最轻的金块,然后运用循环对数组中每个金块的质量与金块的初始值进行比较,求的最重和最轻的金块,然后输出。

9问题 B: 工资问题

时间限制: 1 Sec 内存限制: 128 MB

提交: 121 解决: 74 [提交][状态][讨论版]

题目描述

某单位给每个职工发工资(精确到元),为了保证不要临时兑换零钱,且取款的张数最少,取工资前要统计出所有职工的工资所需各种 币值(100,50,20,10,5,2,1元共7种)的张数,请编程完成。

输入

输入一个工资数<10000元

输出

输出各个币种的张数,没有的用0代替,中间用空格分开

样例输入

173

样例输出

1 1 1 0 0 1 1

#include int main() {

int j,z,a;

int b[7]={100,50,20,10,5,2,1};//把所有币值按从从大到小的顺序存到一位数组中; int s[7]={0};//定义一个一位数组,元素值全为0; scanf(\ for(j=0;j<7;j++) {

a=z/b[j];

s[j]=a; z=z-a*b[j];