当前位置:文档之家› C语言程序设计竞赛题及其答案

C语言程序设计竞赛题及其答案


输出样例: 密文:BFjtnRsbuni
#include<stdio.h> void main() { int i,j,h,k,n; n=1;k=0; scanf("%d",i); for(j=1;j<=i/2+1;j++) { k=k+j; if(k==i) {for(h=n;h<=i/2+1;h++) printf("%d "h); printf("\n");n++;} j++; } } 六、最少钱币(附加题 20 分)
输出数据为圆形内的钻石的克拉数(包括圆形边上的钻石)。 输入样例
44 211 输出样例 5
#include<stdio.h> #include<math.h> void main() {
int i,j,x,y; float r; int a,b,count=0; printf("请输入矩阵的行列 i,j:"); scanf("%d %d",&i,&j); printf("请输入圆心的坐标点及半径 x,y,r:"); scanf("%d %d %f",&x,&y,&r); for(a=0;a<i;a++)
列成矩阵,通过投掷圆环决定奖励的钻石的数量。假设每个钻石的 x 和 y 坐标都是 1 到 99 的整数, 输入矩阵及圆形,请你帮他们判断一下这个人能获得多少克拉的钻石。
** * *
** * *
** * *
** * * 输入格式
输入数据包含两行,第一行为矩阵的行数及列数,第二行为圆心的坐标点及半径。 输出格式
二、菱形图案(20 分) 对给定的奇数 n,编程打印菱形图案。 输入样例: 7 输出样例: * ** ***** ******* ***** *** *
#include<stdio.h> #include<math.h> void main() {
int i,j,k;
int n;
scanf("%d",&n);
scanf("%d",i);
for(j=1;j<=i/2+1;j++)
{
k=k+j;
if(k==i)
{for(h=n;h<=i/2+1;h++)
printf("%d "h);
printf("\n");n++;}
j++;
}
}
五、(密钥短语密码)(20 分) 让我们选一个英文短语, 称其为密钥字(key word)或密钥短语(key phrase),如 HAPPY NEWYEAR,
for(b=0;b<j;b++) if(sqrt((a-x)*(a-x)+(b-y)*(b-y))<=r) count++;
printf("钻石个数:%d",count); }
四、连续正整数(20 分)
一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和,如:
15=1+2+3+4+5
15=4+5+6
一、玫瑰花数(20 分) 如果一个四位数等于它的每一位数的 4 次方之和,则称为玫瑰花数。例如: 1634 1^4 6^4 3^4 4^4 ,
编程输出所有的玫瑰花数。 #include<stdio.h> void main() { int i,j,k,l,m; for(i=999;i<=9999;i++) { j=i/1000; k=i%10; l=i/100-10*j; m=i/10-100*j-10*l; if(i==j*j*j*j+k*k*k*k+l*l*l*l+m*m*m*m) printf("%d\n",i); } }
大小从小到大打印各序列。此外,序列不允许重复,序列内的整数用一个空格分隔。如果没有符合
要求的序列,输出 “NONE” 。
例如,对于 15,其输出结果是:
12345
456
78
对于 16,其输出结果是:
NONE
#include<stdio.h>
void main()
{
int i,j,h,k,n;
n=1;k=0;
for(i=0;i<n;i++)
{
for(j=0;j<fabs(n/2-i);j++)
printf(" ");
for(k=0;k<n-2*j;k++)
printf("*");
printf("\n");
}
}
三、钻石奖励(20 分) 海盗们决定用“投环套物”的方式来奖励最近一次行动中贡献最大的人。他们将 1 克拉钻石排
可以假设,每种待凑钱币的数量是无限多的。 输入样例: 15 6 2 5 10 20 50 100 输出样例: 2
#include<stdio.h> #include<stdlib.h> void main() {
int M,K,i; int a[10]; printf("请输入待凑钱数 M:");
scanf("%d",&M); printf("请输入币种个数 K:");
scanf("%d",&K); for(i=0;i<K;i++)
scanf("%d",&a[i]); if(M<1||M>2000||K<1||K>10) { printf("Impossible"); exit(0); } for(i=0;i<K;i++) if(M%a[i]==0) }
按顺序去掉重复字母和空格得 HAPYNEWR。将它依次写在明文字母表之下, 而后再将明文字母表中 未在短语中出现过的字母依次写在此短语之后, 就可构造出一个代替表, 如下所示:
明文:ABCDEFGHIJKLMNOPQRSTUVWXYZ 密文:HAPYNEWRBCDFGIJKLMOQSTUVXZ 请编写一个程序,可以通过用户输入密码(一个字符串)生成密码表(即上面的那个表),然 后可以对用户输入的明文进行加密。 输入样例: 明文:ILoveHuiwen
15=7+8
请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。
输入数据:一个正整数,以命令行参数的形式提供给程序。
输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该
序列的最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各序列的最小正整数的
数学与统计学院 第三届计算机程序设计竞赛题 竞赛需知: 1、 答案必须写在答题纸上。 2、 程序采用 C/JAVA /VB/VFP 语言实现均可。 3、 考虑到各种因素,程序的键盘输入和结果输出可以用伪代码或者自然语言表示。但是必 须说明输入变量和输出变量。 4、 题目最好能用完整、正确的语言程序来解决问题,如确实无法编写完整语言程序的,可 以写出程序主要框架和流程,必要时可以用伪代码或者自然语言描述算法(程序)。
你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成 某个给出的钱数。
输入: 第一行是待凑的钱数值 M(1 <= M <= 2000,整数),接着的一行中,第一个整数 K(1 <= K
<= 10)表示币种个数,随后是 K 个互不相同的钱币面值 Ki(1 <= Ki <= 1000)。输入 M=0 时结束。 输出: 输出一行,即凑成钱数值 M 最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你
这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。 例如:给定了 6 种钱币面值为 2、5、10、20、50、100,用来凑 15 元,可以用 5 个 2 元、1 个 5 元, 或者 3 个 5 元,或者 1 个 5 元、1 个 10 元,等等。显然,最少需要 2 个钱币才能凑成 15 元。
相关主题