2012程序设计大赛限时赛题目
- 格式:pdf
- 大小:123.33 KB
- 文档页数:5
C语言程序设计大赛题目和答案在这篇文章中,我们将介绍一些C语言程序设计大赛的题目和对应的答案。
希望通过这些题目和答案的展示,能够对大家在C语言程序设计方面的知识有所帮助。
题目一:计算圆的周长和面积编写一个C程序,计算给定半径的圆的周长和面积,并输出结果。
```c#include <stdio.h>int main() {double radius, perimeter, area;printf("请输入圆的半径:");scanf("%lf", &radius);perimeter = 2 * 3.14159 * radius;area = 3.14159 * radius * radius;printf("圆的周长为:%.2lf\n", perimeter);printf("圆的面积为:%.2lf\n", area);return 0;}```题目二:查找数组中的最大值编写一个C程序,从给定的整型数组中查找并输出最大的元素。
```c#include <stdio.h>#define MAX_SIZE 100int main() {int array[MAX_SIZE], size, i;int max;printf("请输入数组的大小:");scanf("%d", &size);printf("请输入数组的元素:");for(i = 0; i < size; i++) {scanf("%d", &array[i]);}max = array[0];for(i = 1; i < size; i++) {if(array[i] > max) {max = array[i];}printf("数组中的最大值为:%d\n", max);return 0;}```题目三:判断素数编写一个C程序,判断给定的整数是否为素数。
2012年宁波市第27届中小学生计算机程序设计竞赛小学组初赛试题小学组初赛试题●●所有答案都必须写在答题纸上,写在试卷上无效●●一、选择题(每题2分,共30分。
每小题只有唯一一个正确答案)1)乐乐在记事本里打了“Happy Birthday!”,则它们在计算机内存储时采用的编码是:()。
A )区位码B )ASCII 码C )字形码D )条形码2)乐乐经常听MP3,由此他也学到了一些有关MP3的知识。
下列有关MP3的信息中不正确的是:()。
A )表达同一首乐曲时,MP3格式的文件大小比WAVE 格式要小得多。
B )MP3声音是一种声音数字化之后经过压缩和编码技术处理得到的声音格式。
C )MP3音乐所采用的声音数据压缩编码的标准是JPEG 。
D )MP3之所以得以流行,是因为MP3声音的质量好,存储容量小,便于传输与存储。
3)下图所示是一个16×16点阵的发光LED 字幕模块,假如使用1表示点发光、0表示点熄灭,那么这个发光LED 字幕模块如果要在计算机内部完整地保存,在不进行压缩的前提下,最少需要的存储空间是:()。
A )8ByteB )32ByteC )8KBD )32KB4)在计算机系统中,数值一律用补码来表示(存储)。
主要原因:使用补码,可以将符号位和其他位统一处理;同时,减法也可按加法来处理。
那么在PASCAL 系统中,-15用byte 变量类型存储在计算机内,其二进制编码为:()。
A )10001111B )00001111C )11110000D )111100015)十进制数2012.25用二进制数表示的结果是:()。
A )(11111010101.1)2B )(11111011100.01)2C )(1111001000.01)2D )(11111001000.1)26)乐乐在参加信息学奥赛的学习过程中,想在因特网上与他人进行即时讨论、交流,则下列工具中最适合的是:()。
12年的试题比13年的难很多,笔者费了一早上加一中午才全部做完。
如果对答案有疑问或者觉得哪里有问题请联系我qq553915228 李添锐一、写出下列程序段的运行结果(40分)1、(4分)char a='D'-'A',b='\010',c,d;c = ++a || b++;d = a-- && b--;printf("%d,%d,%d,%d",a,b,c,d);输出:3,7,1,12、(4分)char a=0x123FFF;printf("%d,",a);a=127;printf("%d",++a);输出:-1,-1283、(4分)int a=5,y=0;int main(){while(a=5){a+=5;y+=a;printf("%d,%d,", a, y);if (y>18) break;}return 0;}输出:10,10,10,204、(4分)int i=1, j=2, k=4;printf("%f,", i-(float)j/k);printf("%d,", j>1<k);k+=5/10*i ;printf("%d,",k);printf("%d", (j=1)?2:0);输出:0.500000,1,4,25、(4分)int a[][2]={(1,2),(3,4)};printf("%d",a[0][1]);输出:46、(4分)int ave(int x, int y){return (x+y)/2;}int main(){int a=1, b=2, c=3;printf("%d\n",ave(ave(a,b), ave(b,c)));return 0;}输出:1(\n)7、(4分)void exc(int x, int *y){int t;t=x; x=*y; *y=t;}int main(){int a=5,b=8;exc(a,&b);printf("a=%d,b=%d",a,b); return 0;}输出:a=5,b=58、(4分)char str[10]="believe";char *p=str;*(str+5)=0;puts(2+p);输出:lie9、(4分)struct pt{int x; int y;} p[2]={1,3,5,7}; printf("%.3f",p[1].y/(float)p[0].y+ p[1].x/p[0].x);输出:7.33310、(4分)FILE *fp;char c=49;int d=50, e;fp=fopen("a.tmp","w"); fprintf(fp,"%c%d", c, d); fclose(fp);fp=fopen("a.tmp","r"); fscanf(fp,"%d",&e); printf("%d\n",e);输出:150(\n)二、改错题(20分)以下程序实现:从键盘输入若干个学生的成绩数据,将这些数据存到磁盘文件上,并求这些学生的最高成绩。
noip 2012 普及组第一题
2012年全国青少年信息学奥林匹克联赛(NOIP)是一场为广大青少年程序设计爱好者提供展示自己编程能力和竞技技巧的赛事。
普及组是面向初学者的比赛组别,题目设计相对简单,旨在培养学生对程序设计的兴趣和基本能力。
下面我们就来分析2012年NOIP普及组的第一题。
第一题的题目描述如下:小明同学有一个长度为n的序列,他希朝将这个序列从小到大排列,但是他只能进行一种操作,即把序列中的一个数加1或者减1。
问最少进行多少次操作,小明能够将这个序列排列为非降序序列。
这是一道典型的贪心算法问题。
我们可以先对原序列进行排序,得到一个非降序序列。
然后遍历每个数,计算将这个数变为当前位置的数所需的操作次数,累加得到总操作次数。
最后取所有数的总操作次数的最小值即为答案。
具体的实现过程如下:
1. 对原序列进行排序,得到一个非降序序列。
2. 遍历每个数,计算将这个数变为当前位置的数所需的操作次数。
3. 累加得到总操作次数。
4. 取所有数的总操作次数的最小值即为答案。
这样,我们就得到了最少操作次数,使得序列变为非降序序列的方法。
这个算法的时间复杂度为O(nlogn),即对序列排序的复杂度,是一个较为高效的算法。
通过解答这道题目,学生不仅能够锻炼自己的编程能力,还能够培养贪心算法的思维方式,对算法的设计和分析有了更深的理解。
希望广大学生能够通过参加NOIP等比赛,不断提升自己的程序设计能力,享受编程的乐趣。
试题1、数学黑洞(程序文件名maths.c/maths.cpp)【问题描述】任给一个4位正整数,其各位数位上的数字不全相同,将数字重新组合成一个最大的数与最小的数相减,重复这个过程,最多7步,必得6174。
对任给的4位正整数(各位数位上的数字不全相同),编程输出掉进黑洞的步数。
【输入】一行,一个4位正整数n(1000< n<9999)【输出】掉进黑洞的步数输入1234输出32、进制转换(程序文件名conver.c/conver.cpp)【问题描述】任给一个十进制整数n,及正整数m(m<=16且m≠10), 将n转换成m进制并输出。
【输入】一行,两个整数n,m(0 ≤ n ≤ 500000,2 ≤ m ≤ 16,且m≠10),中间用一个空格隔开,其中n 表示十进制数。
【输出】转换后的数【输入输出样例】输入255 8输出3773、分数线划定(程序文件名score.c/score.cpp)【问题描述】公务员选拔工作正在 A 市如火如荼的进行。
为了选拔优秀人才,A 市对所有报名的选手进行了笔试,笔试分数达到面试分数线的选手方可进入面试。
面试分数线根据计划录取人数的150%划定,即如果计划录取m名公务员,则面试分数线为排名第m*150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。
现在就请你编写程序划定面试分数线,并输出所有进入面试的选手的报名号和笔试成绩。
【输入】第一行,两个整数n,m(5 ≤ n ≤ 5000,3 ≤ m ≤ n),中间用一个空格隔开,其中n 表示报名参加笔试的选手总数,m 表示计划录取的人数。
输入数据保证m*150%向下取整后小于等于n。
第二行到第 n+1 行,每行包括两个整数,中间用一个空格隔开,分别是选手的报名号k(1000 ≤ k ≤ 9999)和该选手的笔试成绩s(1 ≤ s ≤ 100)。
数据保证选手的报名号各不相同。
2012福建省第三届大学生程序设计竞赛题目Sample Output(0,700)(1,23)(1,0)Problem B Bin & Jing in wonderlandAccept: 4 Submit: 28Time Limit: 1000 mSec Memory Limit : 32768 KB Problem DescriptionBin has a dream that he and Jing are both in a wonderland full of beautiful gifts. Bin wants to choose some gifts for Jing to get in her good graces.There are N different gifts in the wonderland, with ID from 1 to N, and all kinds of these gifts have infinite duplicates. Each time, Bin shouts loudly, “I love Jing”, and then the wonderland random drop a gift in front of Bin. Thedropping probability for gift i (1≤i≤N) is P(i). Of cause, P(1)+P(2)+…+P(N)=1. Bin finds that the gifts with the higher ID are better. Bin shouts k times and selects r best gifts finally.That is, firstly Bin gets k gifts, then sorts all these gifts according to their ID, and picks up the largest r gifts at last. Now, if given the final list of the r largest gifts, can you help Bin find out the probability of the list?InputThe first line of the input contains an integer T (T≤2,000), indicating number of test cases.For each test cast, the first line contains 3 integers N, k and r (1≤N≤20, 1≤k≤52, 1≤r≤min(k,25)) as the description above. In the second line, there are N positive float numbersindicates the probability of each gift. There are at most 3 digits after the decimal point. The third line has r integers ranging from 1 to N indicates the finally list of the r best gifts’ ID.OutputFor each case, output a float number with 6 digits after the decimal points, which indicates the probability of the final list.Sample Input42 3 30.3 0.71 1 12 3 30.3 0.71 1 22 3 30.3 0.71 2 22 3 30.3 0.72 2 2Sample Output0.0270000.1890000.4410000.343000Problem C Floor problemAccept: 133 Submit: 150Time Limit: 1000 mSec Memory Limit : 32768 KB Problem DescriptionIn this problem, we havef(n,x)=Floor[n/x]. Here Floor[x] is the biggest integer such that no larger than x. For example, Floor[1.1]=Floor[1.9]=1, Floor[2.0]=2.You are given 3 positive integers n, L and R. Print the result off(n,L)+f(n,L+1)+...+f(n,R), please.InputThe first line of the input contains an integer T (T≤100), indicating the number of test cases.Then T cases, for any case, only 3 integers n, L and R (1≤n, L, R≤10,000,L≤R).OutputFor each test case, print the result off(n,L)+f(n,L+1)+...+f(n,R) in a single line.Sample Input31 2 3100 2 100100 3 100Sample Output382332Problem D Digits CountAccept: 11 Submit: 64Time Limit: 10000 mSec Memory Limit : 262144 KB Problem DescriptionGiven N integersA={A[0],A[1],...,A[N-1]}. Here we have some operations:Operation 1: AND opn L RHere opn, L and R are integers.For L≤i≤R, we do A[i]=A[i] AND opn (here "AND" is bitwise operation).Operation 2: OR opn L RHere opn, L and R are integers.For L≤i≤R, we do A[i]=A[i] OR opn (here "OR" is bitwise operation).Operation 3: XOR opn L RHere opn, L and R are integers.For L≤i≤R, we do A[i]=A[i] XOR opn (here "XOR" is bitwise operation).Operation 4: SUM L RWe want to know the result ofA[L]+A[L+1]+...+A[R].Now can you solve this easy problem?InputThe first line of the input contains an integer T, indicating the number of test cases. (T≤100)Then T cases, for any case, the first line has two integers n and m(1≤n≤1,000,000, 1≤m≤100,000), indicating the number of elements in A and the number of operations.Then one line follows n integers A[0], A[1], ..., A[n-1] (0≤A[i]<16,0≤i<n).Then m lines, each line must be one of the 4 operations above. (0≤opn≤15)OutputFor each test case and for each "SUM" operation, please output the result with a single line.Sample Input14 41 2 4 7SUM 0 2XOR 5 0 0OR 6 0 3SUM 0 2Sample Output718HintA = [1 2 4 7]SUM 0 2, result=1+2+4=7;XOR 5 0 0, A=[4 2 4 7];OR 6 0 3, A=[6 6 6 7];SUM 0 2, result=6+6+6=18.Problem E How many tuplesAccept: 0 Submit: 0Time Limit: 10000 mSec Memory Limit : 65536 KB Problem DescriptionGiven m positive integera[1],a[2]…a[m]. We run the following program (in C++):const int MAXN = 20;int a[MAXN], m;int gcd(int a, int b) {return b ? gcd(b, a % b) : a;} long long cnt = 0;void gao(int cur, int g) {if (cur > m) {if (g == 1)++cnt;return;}for (int i = 1; i <= a[cur]; ++i)gao(cur + 1, g < 0 ? i : gcd(g, i));}int main() {scanf("%d", &m);for (int i = 1; i <= m; ++i)scanf("%d", a + i);gao(1, -1);cout << cnt << endl;return 0;}Here gcd is the Greatest Common Divisor, Obviously, the program above is to find the number of tuples (b[1],b[2], …, b[m]) such that:(1) gcd(b[1], b[2], …, b[m])=1. (Here we define gcd(num)=num, that is:gcd(9)=9, gcd(2)=2)(2) 1≤b[i]≤a[i]. (1≤i≤m, b[i] is an integer)Now in this problem, the m and a[i] may be very large! So could you write one efficient program to find the answer? The answer may be too large. So you can just output the answer Mod 1,000,000,007.InputThe first line of the input contains an integer T (T≤10,000), indicating the number of test cases.Then T cases, for any case, only two lines.The first line is one integerm(1≤m≤20).The second line has m integers indicate a[1], a[2], …, a[m] (1≤a[i]≤100,000,000, 1≤i≤m).The answer may be too large. So you can just output the answer Mod1,000,000,007.OutputFor each test case, print a line containing the answer Mod1,000,000,007.Sample Input325 5210000 987321234 5678Sample Output19600261564261566Problem F Hua Rong DaoAccept: 22 Submit: 66Time Limit: 1000 mSec Memory Limit : 32768 KB Problem DescriptionCao Cao was hunted down by thousands of enemy soldiers when he escaped from Hua Rong Dao. Assuming Hua Rong Dao is a narrow aisle (one N*4 rectangle), while Cao Cao can be regarded as one 2*2 grid. Cross general can be regarded as one 1*2 grid.Vertical general can be regarded as one 2*1 grid.Soldiers can be regarded as one 1*1 grid. Now Hua Rong Dao is full of people, no grid is empty.There is only one Cao Cao. The number of Cross general, vertical general, and soldier is not fixed. How many ways can all the people stand?InputThere is a single integer T (T≤4) in the first line of the test data indicating that there are T test cases.Then for each case, only one integer N (1≤N≤4) in a single line indicates the length of Hua Rong Dao.OutputFor each test case, print the number of ways all the people can stand in a single line.Sample Input212Sample Output18HintHere are 2 possible ways for the Hua Rong Dao 2*4.Problem H Mountain NumberAccept: 2 Submit: 7Time Limit: 1000 mSec Memory Limit : 32768 KBProblem DescriptionOne integer number x is called "Mountain Number" if:(1) x>0 and x is an integer;(2) Assumex=a[0]a[1]...a[len-2]a[len-1](0≤a[i]≤9, a[0] is positive). Any a[2i+1] is larger or equal to a[2i] and a[2i+2](if exists).For example, 111, 132, 893, 7 are "Mountain Number" while 123, 10, 76889 are not "Mountain Number".Now you are given L and R, how many "Mountain Number" can be found between L and R (inclusive) ?InputThe first line of the input contains an integer T (T≤100), indic ating the number of test cases.Then T cases, for any case, only two integers L and R(1≤L≤R≤1,000,000,000).OutputFor each test case, output the number of "Mountain Number" between L and R in a single line.Sample Input31 101 1001 1000Sample Output954384Problem I StarAccept: 78 Submit: 320Time Limit: 1000 mSec Memory Limit : 32768 KB Problem DescriptionOverpower often go to the playground with classmates. They play and chat on the playground. One day, there are a lot of stars in the sky. Suddenly, one of Overpower’s classmates ask him: “How many acute triangles whose inner angles are less than 90 degrees (regarding stars as points) can be found? Assuming all the stars are in the same plane”. Please help him to solve this problem.InputThe first line of the input contains an integer T (T≤10), indicating the number of test cases.For each test case:The first line contains one integer n (1≤n≤100), the number of stars.The next n lines each contains two integers x and y (0≤|x|, |y|≤1,000,000) indicate the points, all the points are distinct.OutputFor each test case, output an integer indicating the total number of different acute triangles.Sample Input130 010 05 1000Sample Output1Problem J Min NumberAccept: 85 Submit: 261Time Limit: 1000 mSec Memory Limit : 32768 KB Problem DescriptionNow you are given one non-negative integer n in 10-base notation, it will only contain digits ('0'-'9'). You are allowed to choose 2 integers i and j, such that: i!=j, 1≤i<j≤|n|, here |n| means the length of n’s 10-base notation. Then we can swap n[i] and n[j].For example, n=9012, we choose i=1, j=3, then we swap n[1] and n[3], then we get 1092, which is smaller than the original n.Now you are allowed to operate at most M times, so what is the smallest number you can get after theoperation(s)?Please note that in this problem, leading zero is not allowed!InputThe first line of the input contains an integer T (T≤100), indicating the number of test cases.Then T cases, for any case, only 2 integers n and M (0≤n<10^1000,0≤M≤100) in a single line.OutputFor each test case, output the minimum number we can get after no more than M operations.Sample Input39012 09012 19012 2Sample Output901210921029Problem K TicketsAccept: 14 Submit: 50Time Limit: 3000 mSec Memory Limit : 32768 KB Problem DescriptionYou have won a collection of tickets on luxury cruisers. Each ticket can be used only once, but can be used in either direction between the 2 different cities printed on the ticket. Your prize gives you free airfare to any city to start your cruising, and free airfare back home from wherever you finish your cruising.You love to sail and don't want to waste any of your free tickets. How many additional tickets would you have to buyso that your cruise can use all of your tickets?Now giving the free tickets you have won. Please compute the smallest number of additional tickets that can be purchased to allow you to use all of your free tickets.InputT here is one integer T (T≤100) in the first line of the input.Then T cases, for any case, the first line contains 2 integers n, m (1≤n,m≤100,000). n indicates the identifier of the cities are between 1 and n, inclusive. m indicates the tickets you have won.Then following m lines, each line contains two integers u and v (1≤u, v≤n), indicates the 2 cities printed on your tickets, respectively.OutputFor each test case, output an integer in a single line, indicates the smallest number of additional tickets you need to buy.Sample Input35 31 31 24 56 51 31 21 61 51 43 21 21 2Sample Output12。
大赛试题:注:选择的题数越多,分值越高,得奖越高1:要求在一组数中,插入一个新数,并维护原来的排序方式不变2:用二分法在一个数组中查找你所需元素3:打印一个杨辉三角111121133114641151010514:使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组5:写一个二维数组排序函数,能够具有通用性6:写一个function实现数组内每个元素之间加法的递代运算?注:数组元素全部为自然数.例:$data=array(1,2,3);程序要求打印出数组每个数组元素相互之间各种可能性加法(包括元素自已本身加法) 1+1=2,1+2=3,1+3=5,2+2=4,2+3=5,3+3=6打印出以下结果Array([0]=>Array([0]=>2[1]=>3[2]=>4)[1]=>Array([1]=>4[2]=>5)[2]=>Array([2]=>6))7:设有n种物品,每种物品有一个重量及一个价值。
但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。
8:设随机抽到A的概率为0.1,B的概率为0.2,C的概率为0.3,D的概率为0.4,现在求按此概率随机抽出一个字母的算法,9:一个小孩买了价值少于1美元的糖,并将1美元的钱交给售货员。
售货员希望用数目最少的硬币个数找给小孩。
假设提供了数目不限的面值为25美分、10美分、5美分、及1美分的硬币,写一个算法让售货员用最少的硬币个数找给小孩10:五只猴子采得一堆桃子,猴子彼此约定隔天早起后再分食。
不过,就在半夜里,一只猴子偷偷起来,把桃子均分成五堆后,发现还多一个,它吃掉这桃子,并拿走了其中一堆。
第二只猴子醒来,又把桃子均分成五堆后,还是多了一个,它也吃掉这个桃子,并拿走了其中一堆。
第三只,第四只,第五只猴子都依次如此分食桃子。
2012年东莞市程序设计竞赛镇区选拔赛上机试题小学组2012年4月28日(三小时完成)一.题目概览中文题目名称分组计算数数长方形英文题目名称divide cal count rectangle提交文件名divide.pas cal.pas count.pas rectangle.pas 输入文件名divide.in cal.in count.in rectangle.in输出文件名divide.out cal.out count.out rectangle.out每个测试点时限1秒1秒1秒1秒测试点数目10 101010每个测试点分值10 101010二、注意事项:1、请严格按题目要求的文件名(程序名和输入输出文件名),否则将严重影响得分。
2、测试结果以源文件pas文件为准。
题一分组divide题目描述小明的班级在上体育课,老师想让大家分成两组玩拔河。
现在大家排成了一排,老师嫌麻烦,所以想直接在队伍中间找个位置断开,这样不就分成了两组了吗?但是这个老师的思维很奇怪,他觉得分成人数相等的两组会不公平,他想让两组的体重和的差最小(差值要求体重和大的值减小的值)。
老师把这个任务交给了小明,你能帮帮他吗?输入格式第一行为一个正整数n,表示小明班的人数。
第二行为n个正整数,表示这一排从左到右同学的体重。
输出格式只有一行,为题目描述中最小的差值。
输入样例511 17 3 2 20输出样例3样例解释:从第二位和第三位同学中间断开,则第一位和第二位同学分为一组,体重和为11+17=28第三位,第四位和第五位分为一组,体重和为3+2+20=2528和25相差3,此时为最小,所以答案为3。
数据规模60%的数据:2<=n<=1000,每个同学的体重不超过20。
100%的数据:2<=n<=100000,每个同学的体重不超过1000。
题二计算cal题目描述数学课上,数学老师在黑板上写了一个式子,小明想要快速得出这个式子的答案,你能帮他吗?给出一个只包含+,-,=,0~9 的式子,求该式子的值。
华南农业大学期末考试试卷(A 卷)2012学年第1学期 考试科目: 程序设计(C 语言) 考试类型:(闭卷)考试 考试时间: 120 分钟学号 姓名 年级专业考生注意:1、答案必须分别写在“机读卡”和“答卷”上,写在试题上不得分。
2、必须在机读卡和答卷上正确填写班级、学号、姓名等内容,否则没有考试成绩。
3、在机读卡的学生代号区只填写学号后10位。
4、考试结束,只需交“机读卡”和“答卷”,试题不用交。
一、判断题(在机读卡上答题,本大题共20小题,每小题1分,共20分)用2B 型铅笔涂答题卡!!!按题号顺序,正确的判断涂黑“A ”、错误的判断涂黑“B ” 1、C 语言称为中级语言是因为它允许直接访问物理地址,能进行位运算,能实现汇编语言的大部分功能,可以直接对硬件进行操作。
2、一个C 程序总是从main 函数开始执行,并且从main 函数中结束程序。
3、一个算法具有有穷性、确定性、可行性、有零个或多个输入/输出。
4、在C 程序中使用符号常量,能够增强程序的可读性,方便程序的修改。
5、C 程序中使用变量不一定要遵循“先定义,再赋值,后使用”。
6、C 语言可以通过调用标准库函数实现输入输出功能,也可以使用它本身提供的专门的输入输出语句。
7、能正确表达逻辑关系100≤≤x 的表达式是10||0<=>=x x 。
8、在if 语句中,if 后面的表达式可以是关系表达式与逻辑表达式,而不能是算术表达式。
9、在逻辑表达式的求解过程中,并非所有的逻辑运算符都被执行。
10、带有语句标号的语句的正确书写方法是“语句标号:语句”。
11、for 循环语句只能用于循环次数已经确定的情况。
12、goto 语句和break 语句都能实现使程序执行的流程从循环体内跳至循环体外。
13、while 循环语句至少无条件执行一次循环体。
14、数组必须先定义,然后再使用。
15、定义数组时,数组下标可以是整型常量表达式。
16、已有定义int x[5];,则该定义语句说明x是具有5个元素的一维数组,且数组元素是x[1],x[2],x[3],x[4],x[5]。
2012年青岛市程序设计竞赛试题(小学组)说明:1、必须以题目中规定的文件名进行保存,并用FTP上传到指定文件夹中,FTP上传在试题最后。
请选手每做完一道题及时上传一次,以确保无因机器故障引起的文件丢失。
2、比赛时间为:60分钟,试题100分。
3、使用竞赛规定的文件格式输入、输出。
第一题火柴盒(程序文件名a1.pas,25分)小林今年刚上一年级,最近开始学数学的加法。
老师给他出了这样一道题:火柴盒长为L,宽为W(1<=L,W<=100)。
高度有一层楼这么高,火柴只能按长或宽的方式放进去,给小林了N(1<=N<=50)根火柴,知道一根火柴的长度,问有多少跟火柴可以放进该火柴盒。
你能用计算器帮小林解决这个问题吗?输入(a1.in):第一行,三整数N,L和W用空格隔开;接下来N行每行输入一个1到1000范围内的一个整数,表示火柴的长度。
输出(a1.out):一行整数,能够装进火柴盒的火柴数量。
样例1:输入:5 3 484219输出:3第二题数据统计(程序文件名a2.pas,25分)小林最近想研究末尾有0的整数的性质。
小林给出任一整数N,请你帮小林算出这个整数末尾共有多少个连续的0?输入(a2.in):一行,一个整数N(1<=N<=1000000000)。
输出(a2.out):一行统计出N的末尾连续0 的个数。
样例1:输入:50100输出:2样例2:输入:102304输出:0第3题购文具(程序文件名a3.pas,25分)“六一”儿童节“文具套装”优惠销售,三种购买方式如下:1、现购:10元/套,超过2套以为的,9元/套,超过10套以外的,则7.5元/套;2、网购:9元/套,超过10套,全部按网购每套的价钱打8折;超过5套,则全部按网购每套的价钱六折;3、团购:10元起团购,6元/套,达到或超过50套,则5元/套,达到或超过100套,则4元/套。
小林想用其中一种方式购n套文具,请你帮他计算应付多少元钱?输入(a3.in):一行,两个用空格隔开的整数,分别表示购买方式号(1,2,3)和套数n(n<=200)输出(a3.out):一行,一个整数,应付饭钱(小数部分四舍五入)。
2012年蓝桥杯全国软件设计大赛-C语言校内选拔赛参考答案一、代码填空题(满分50分)1. strlen(str)-1;str[i]=str[j]2.a+b>c&&a+c>b&&b+c>a3.x1或x1!=0或x1>0;x1/2-24.num/100%10==3或num%1000/100==3;!num==0或者num!=05.j<=2或j<3;b[j][i]=a[i][j];i<=2或i<36.&a[i];i%4==0;printf(“\n”)7.x[i-1]+x[i-2];fabs((double)(x[i-1]-x[i]))或者fabs(x[i-1]-x[i])或者 abs(x[i-1]-x[i]);i+28.%;/;j=i,j>=1,j—或者 j=i,j>0;j--9.j=4;a[0]=k10.buf[i]!=buf[strlen(buf)-1-i]二、程序设计(满分50分)1题参考答案:#include "stdafx.h"#include "stdio.h"#include "math.h"int main(int argc, char* argv[]){int n;int i,j;while(1){printf("请从键盘上输入一个大于等于2的整数:");scanf("%d",&n);j=0;if(n<2){printf("输入的数不合法!");}else if(n==2){printf("%d\n",2);break;}else{for(i=2;i<=(int)sqrt(n);i++){if(n%i==0){j=1;break;}}if(j==0){printf("%d\n",n);break;}}}printf("\n");return 0;}2题参考答案:#include "stdafx.h"#include "stdio.h"#define N 10int main(int argc, char* argv[]){int a[N]={12,78,56,34,25,67,9,89,97,46};int i,j,temp;printf("排序前的数组为:\n");for(i=0;i<N;i++){printf("%d\t",a[i]);}printf("\n");for(i=0;i<N;i++){for(j=0;j<N-1-i;j++){if(a[j]<a[j+1]){temp=a[j];a[j]=a[j+1];a[j+1]=temp;}}}printf("排序后的数组为:\n");for(i=0;i<N;i++){printf("%d\t",a[i]);}printf("\n");return 0;}3题参考答案:#include "stdafx.h"#include "stdio.h"int main(int argc, char* argv[]){int x,y,z;for(x=0;x<=10;x++){y=20-2*x;z=30-x-y;if(x+y+z==30){printf("%d\t%d\t%d\n",x,y,z);}}return 0;}杨辉三角参考答案:#include "stdafx.h"#include "stdio.h"#define N 10int main(int argc, char* argv[]){int a[N][N]={{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0},{1,0}};int i,j;for(i=1;i<N;i++){for(j=1;j<=i;j++){a[i][j]=a[i-1][j-1]+a[i-1][j];}}for(i=0;i<N;i++){for(j=0;j<=i;j++){printf("%d\t",a[i][j]);}printf("\n");}return 0;}5.第五题参考答案:#include "stdafx.h"#include "stdio.h"#include "math.h"int main(int argc, char* argv[]){int n;int i,j,k;while(1){printf("请输入3到30之间的奇数:");scanf("%d",&n);if(n%2!=0 && n>=3 && n<=30){break;}else{printf("输入错误,");}}int m=n/2+1;for(i=1;i<=m;i++){for(j=i;j<m;j++){printf(" ");}for(k=1;k<=2*i-1;k++){printf("* ");}printf("\n");}for(i=1;i<m;i++){for(j=1;j<=i;j++){printf(" ");}for(k=1;k<=n-2*i;k++){printf("* ");}printf("\n");}return 0;}6题小孩报数参考答案:#include "stdafx.h"#include "stdio.h"#define N 30int main(int argc, char* argv[]) {int i;int a[N];int count,k=0;for(i=0;i<N;i++){a[i]=i+1;}do{count=0;for(i=0;i<N;i++){if(a[i]!=0){k++;}else{count++;}if(k==6){printf("%d\t",a[i]);a[i]=0;k=0;}}}while(count<N);return 0;}。
宁波市第27届中小学生计算机程序设计竞赛复赛试题(初中组)(请选手务必仔细阅读本页内容)一、题目概览中文题目名称扫雷无根树积木幸运数英文题目名称mine tree block sum可执行文件名mine tree block sum输入文件名mine.in tree.in block.in sum.in输出文件名mine.out tree.out block.out sum.out每个测试点时限1秒1秒1秒1秒测试点数目10 10 10 10每个测试点分值10 10 10 10 比较方式全文比较(过滤行末空格及文末回车)题目类型传统传统传统传统二、提交源程序文件名对于pascal语言mine.pas tree.pas block.pas sum.pas 对于C语言mine.c tree.c block.c sum.c对于C++语言mine.cpp tree.cpp block.cpp sum.cpp三、编译命令(不包含任何优化开关)对于pascal语言fpc mine.pas fpc tree.pas fpc block.pas fpc sum.pas对于C语言gcc –o minemine.c -lm gcc –o treetree.c -lmgcc –o blockblock.c -lmgcc –o sumsum.c -lm对于C++语言g++ –o minemine.cpp -lm g++ –o treetree.cpp -lmg++ –o blockblock.cpp -lmg++ –o sumsum.cpp -lm四、运行内存限制运行内存上限128M 128M 128M 128M注意事项:1、文件名(程序名和输入输出文件名)必须使用英文小写。
2、C/C++中函数 main()的返回值类型必须是 int,程序正常结束时的返回值必须是 0。
1.扫雷(mine.pas/c/cpp)【问题描述】Windows中的扫雷游戏是大家都熟悉的小游戏,今天,味味也设计了一个简易的扫雷游戏。
2012年首届北京联合大学程序设计竞赛《C语言程序设计》试题考试时间:90分钟答题要求:? 将“给学生”文件夹中的“答题”文件夹复制到D盘后重命名,更名后的文件夹以参赛组号和组员姓名构成(如:C语言-T60张三、李四、王五)。
? 分别打开本组文件夹中的3个.c文件答题。
? 做题过程中请及时存盘,不要擅自重启机器,遇到死机时请找监考老师。
? 答卷完毕,关闭所有窗口,经监考教师检查后,离开考场。
? 不要关机。
1.(40分)编写程序实现如下功能:假设有一个圆心为(a,b)、半径为r的圆,其中a、b、r 从键盘输入。
输入10个点的平面坐标(x轴和y轴的坐标值),判断其中哪些点在该圆内、圆外或圆周上,并分别统计圆内、圆外或圆周上点的个数。
已知:两个点(x1,y1)和(x2,y2)间的距离s的计算公式为:s?(x2-x1)2?(y2?y1)22.(30分)下面程序的功能是计算两个49位超大整数之和,请补充完整程序。
#include <stdio.h>#include <stdlib.h>#include <time.h>#define N 50void mycreate(int *p);void myout(int *p);void mysum(int *a,int *b,int *c);main(){ int a[N]={0},b[N]={0},c[N]={0},i=0;mycreate(a); // 产生一个49位整数,并将该数的每一位数字存放在数组a中mycreate(b); // 产生一个49位整数,并将该数的每一位数字存放在数组b中printf("第一个整数: ");myout(a); //输出a[1]至a[N-1]printf("第二个整数: ");myout(b); //输出b[1]至b[N-1]mysum(a,b,c); //计算两个49位整数之和,并将该和的每一位数字存放在数组c中printf("两个整数和:");if(c[0]!=0) //有进位时printf("%d",c[0]);else //无进位时printf(" ");myout(c); //输出c[1]至c[N-1]}// 产生一个49位整数,并将该数的每一位数字存放在p指向的数组中//函数mycreate的首部{ int i=0;。
程序设计比赛试题最少钱币数:【问题描述】这是一个古老而又经典的问题。
用给定的几种钱币凑成某个钱数,一般而言有多种方式。
例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。
显然,最少需要2个钱币才能凑成15元。
你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。
【要求】【数据输入】输入可以有多个测试用例。
每个测试用例的第一行是待凑的钱数值M(1<=M<=2000,整数),接着的一行中,第一个整数K (1<=K<=10)表示币种个数,随后是K个互不相同的钱币面值Ki(1<=Ki<=1000)。
输入M=0时结束。
【数据输出】每个测试用例输出一行,即凑成钱数值M最少需要的钱币个数。
如果凑钱失败,输出“Impossible”。
你可以假设,每种待凑钱币的数量是无限多的。
【样例输入】156 2 5 10 20 50 10011 2【样例输出】2 ImpossibleFeli的生日礼物【问题描述】Felicia的生日是11月1日(和Kitty是同一天生的哦)。
于是Feli请来Kitty一起过生日。
Kitty带来了最新款的“Kitty猫”玩具准备送给Feli,不过她说,这份礼物可不是白送的。
Feli要帮她一个忙,才能够得到心仪已久的玩具。
Kitty说,“Kitty猫”玩具已经卖出了n!个,n<=10^100*_*,Kitty想知道确切的数字,而不是无聊的“一个数加个感叹号”。
Feli听了大吃一惊。
要知道,算出n!是一个无比艰巨的任务。
Feli告诉Kitty,就算Feli算出n!,Kitty也看不下去,因为当n=20时,计算机的长整型已经存不下了(Kitty只能接受1-9之间的数字)。
于是Kitty说,你只要告诉我n!最后一位非0的数就可以了。
2012年程序设计(chénɡ xù shè jì)竞赛(jìngsài)基础(jīchǔ)实训3118 统计(tǒngjì)试统计含有数字(shùzì)7且不能被7整除的m位整数的个数s1,并指出这s1个数中不含有数字4的整数的个数s2。
输入m, 输出s1,s2。
m=5, 输出:m=6, 输出:(1) 设计要点首先通过乘m-1个10计算m位数的起点b=10^(m-1),为枚举提供范围t(b —10*b-1)。
为了检测m位数t含有多少个数字7,每个m位整数t赋给d(以保持t不变),然后通过m次求余先后分离出t的m个数字c,if(c==7) f++, 统计整数t中数字7的个数f。
同时统计数字4的个数g。
如果f>0,说明整数t中含有数字7。
如果g=0,说明整数t中不含数字4。
对每一个m位整数,据f>0 && t%7>0, s1作相应统计。
据f>0 && t%7>0 && g==0, s2作相应统计。
(2)程序设计// 统计含数字7且不能被7整除的m位整数的个数s1,其中不含数字4的个数s2#include <stdio.h>void main(){ int c,f,g,i,j,m;long b,d,s1,s2,t;printf(" 请输入位数m (2<=m<=9): "); scanf("%d",&m);b=1; s1=0;s2=0;for(i=2;i<=m;i++) b=b*10; // 计算m位数的起点for(t=b;t<=10*b-1;t++) // 枚举每一个m位数{ d=t;f=0;g=0;for(j=1;j<=m;j++){ c=d%10; d=d/10;if(c==7) f++; // 统计数字7的个数if(c==4) g++; // 统计数字4的个数}if(f>0 && t%7>0) s1++; // 统计含数字(shùzì)7且不能被7整除数的个数if(f>0 && t%7>0 && g==0) s2++; // 统计(tǒngjì)其中不含数字4的个数}printf(" s1=%ld ,s2=%ld \n",s1,s2);}(3)程序运行示例(shìlì)请输入(shūrù)位数m (2<=k<=9): 5s1=32152 ,s2=20412请输入(shūrù)位数m (2<=k<=9): 6s1=366522 ,s2=208300变通1:试统计含有数字7且能被7整除的没有重复数字的m位整数的个数s1,并指出其中最大的一个数。
C一、填空题(本大题两种题型,程序填空或写结果,程序填空要求每空仅填一条语句,即不能出现分号)(共40分)1、求17922和5394的最小公倍数。
(共5分)答案:答案:5555822、分解成质因数(如输出435234,251 17 17 3 2) (共5分)void prim(int m, int n){if(m>n){while(m%n != 0)n++;;;printf("%d ", n);}}void main(){int n = 435234;printf("%d,", n);prim(n, 2);}答案: m /= n; prim(m, n);3、从数字1开始向右顺时针方向移动,可以得到如下的5×5的螺旋:(共10分)21 22 23 24 2520 7 8 9 1019 6 1 2 1118 5 4 3 1217 16 15 14 13可以算出对角线上数字之和是101.1001×1001的螺旋中对角线上数字之和是?答案:6691710014、欧拉曾发表过一个著名的二次公式:n2+ n + 41。
这个公式对于0到39的连续数字能够产生40个质数。
但是当n=40时,402+40+41 = 40(40+1)+41能够被41整除。
当n=41时,412+41+41显然也能被41整除。
利用计算机,人们发现了一个惊人的公式:n2- 79n+1601,这个公式对于n=0到79能够产生80个质数。
这个公式的系数, -79和1601的乘积是-126479。
考虑如下形式的二次公式:n2+an+b, 其中|a|1000,|b|1000。
找出对于能够为从0开始的连续的n产生最多数量的质数的二次公式,写出该公式的系数a 和b的乘积。
答案:答案: -59231 (a = -61 b = 971 n = 70 )5、有一个整形数组a,长度为n,数组里有正数也有负数。
专业组程序设计技能竞赛
欢迎参加石家庄铁道大学2012年大学生程序设计大赛的专业组程序设计技能竞赛。
注意事项
为了能够更好地享受竞赛的乐趣,请注意以下事项:
1.竞赛时间3小时,共8道题。
2.遵守竞赛的规则。
请不要携带任何书籍资料、计算器和计算器可读的媒体(如磁盘)进场。
竞赛结束后,请遵从竞赛工作人员的指示离场。
3.你可以按照自己喜欢的顺序解题,不必遵守题目实际出现的顺序。
你也可以按照自己喜欢的风格编写程序。
在竞赛中不需要提交任何纸质文档。
4.在竞赛期间,每隔一定时间请自行将源程序存盘备份,避免机器故障带来麻烦。
5.如果你发现机器有问题或对竞赛有任何疑问,请立即联系竞赛工作人员。
6.竞赛评委的决定是最终的。
7.题目中所要求的“输出”请以屏幕显示的形式实现。
解题要求
1.编程语言可用C或C++。
2.首先自己建立一个文件夹,命名为“年级+学号+姓名”,在自己的文件夹下做答,每一个题目建立一个文件夹,命名为“第*题”。
竞赛题目
1.求整数n(10分)
【问题描述】
一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
【输入】
自定义
【输出】
正整数n(n加100后是完全平方数,加168后也是完全平方数。
)
2.打印图形(10分)
【问题描述】
打印出如下图案
*
***
******
********
******
***
*
【输入】
自定义
【输出】
题目要求的图形
3.矩阵转置(10分)
【问题描述】
编写如下函数
void MatrixTranspose(const char*InArr,unsigned int n,const char*OutArray)来完成N*N矩阵的转置
【输入】InArr:输入的矩阵
n:N*N矩阵的行数
【输出】OutArray:转置后的矩阵
【样例输入】
InArr={‘1’,‘2’,‘3’,‘4’,‘5’,‘6’,‘7’,‘8’,‘9’},n=3
【样例输出】
OutArray={‘1’,’4’,’7’,’2’,’5’,’8’,’3’,’6’,’9’}
4.输入联想(10分)
【问题描述】
输入联想功能是非常实用的一个功能,请编程实现类似功能。
要求实现函数:void auto_complete(char*str,char*tmp,char*output)完成联想功能。
【输入】char*str,候选字符串
char*tmp,输入字符串
【输出】int*output,根据输入字符串联想匹配的字符串
【样例输入】
str=chengdu chongqing,tmp=c
【样例输出】
output=chengdu chongqing
【样例输入】
str=chengdu chongqing,tmp=che
【样例输出】
output=chengdu
【样例输入】
str=beijing nanjing,tmp=jing
【样例输出】
output=
5.报数(15分)
【问题描述】
有M个人围成一圈,顺序排号,从第一个人开始顺序报数(从1到N),凡报到N的退出圈子。
退出者的下一个人又从1开始报数,直到圈子里只剩下最后一个人。
请你编写一个程序找出最后一个留在圈子里的人原来的序号。
【输入】
输入文件包含多组测试数据。
第一行为一个整数C,表示有C组测试数据,接下来有C 行数据,每组测试数据只占一行,每行有2个整数,它们用空格隔开,第一个整数表示开始的人数M(1<=M<=200),第二个整数表示报数的最大数N(1<=N<=30000)
【输出】
你的输出应该有C行,即每组测试数据的输出占一行,它是一个整数,表示最后一个留在圈子里的人原来的序号。
【样例输入】
3
133
515
52
【样例输出】
13
1
3
6.求某正整数插入乘号后乘积的最大值(15分)。
【问题描述】
编程实现一个9位数的正整数n中插入4个乘号,使分得的5个整数的乘积最大。
【输入】
正整数n;
【输出】
被分得的5个整数,得到的最大乘积值。
【样例输入】
734019862
【样例输出】
73*401*9*8*62=130674672
7.排队(15分)
【问题描述】
全班有N(2<=N<=45)个人排成一排,但因为高矮不齐,需要进行调整。
调整的方法是,不调换左右次序,只让若干人后退一步变为第2排,使第一排留下的人从左到右的身高按降序排列,即右边的人不比左边的人高。
如果第2排的人还不按降序排列,则照此办理,即再让第2排的若干人后退一步变为第3排,这样继续下去,直到所有排的人都按身高从高到低排列。
调整中,你需要找出一种使第一排留下的人数尽可能多的调整方法,第二排若需要继续调整,则也应使第二排留下的人数尽可能多,余类推。
【输入】
输入文件第一行为一个整数M,表示有M组测试数据。
接下来的两行为一组测试数据,每组测试数据的第一行为一个整数N,表示该组测试数据的人数;接下来的一行是这N个人的身高,以厘米为单位,且都为整数,每个数用空格隔开。
【输出】
对于每组测试数据输出应该是2行:
第一行:第一排留下的人数Man;
第二行:最后调整完共有几排Low。
(具体格式请严格按照样例输出进行)
【样例输入】
3
8
130122112126126125120100
5
187187178165164
5
187187178165167
【样例输出】
Man=6
Low=2
Man=5
Low=1
Man=4
Low=2
8.字符串的距离(15分)
【问题描述】
设有字符串X,我们称在X的头尾及中间插入任意多个空格后构成的新字符串为X的扩展串,如字符串X为“abcbcd”,则字符串“abcb□cd”,“□a□bcbcd□”和“abcb□cd□”都是X的扩展串,这里“□”代表空格字符。
如果A1是字符串A的扩展串,B1是字符串B 的扩展串,A1与B1具有相同的长度,那么我们定义字符串A1与B1的距离为相应位置上的字符的距离总和,而两个非空格字符的距离定义为它们的ASCII码的差的绝对值,而空格字符与其它任意字符之间的距离为已知的定值K,空格字符与空格字符的距离为0。
在字符串A、B的所有扩展串中,必定存在两个等长的扩展串A1、B1,使得A1与B1之间的距离达到最
小,我们将这一距离定义为字符串A、B的距离。
请你写一个程序,求出字符串A、B的距离。
【输入】
有多组数据,每一组数据第一行为字符串A,第二行为字符串B,A、B均由小写字母组成且长度均不超过2000,第三行为一个整数K,1≤K≤100,表示空格与其它字符的距离。
【输出】
每组数据一行包含一个整数,表示要求的字符串A、B的距离。
【样例输入】
cmc
snmn
2
【样例输出】
10。