《第五届“赛为”杯程序设计大赛预赛试卷A(C语言)(共4页).doc》由会员分享,可在线阅读,更多相关《第五届“赛为”杯程序设计大赛预赛试卷A(C语言)(共4页).doc(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上安徽工业大学第五届“赛为”杯程序设计大赛预赛试题A(C语言)满分128分注意:答案一律按要求书写在答题纸上,否则不得分。第一部分:阅读程序写结果(共9题,每题8分,共计72分)1. int main()int i, a, b, c, d, f4;for(i = 0; i f2)printf(%dn, a + b);elseprintf(%dn, c + d);return 0;输入:9 19 29 39 输出: 2 #include “stdio.h”void digit(long n,long m) if(m0) printf(%2ld,n%10); if(m1)
2、digit(n/10,m/10); printf(%2ld,n%10); main() long x,x2; printf(Input a number:n); scanf(%ld,&x); x2=1; while(x2x) x2*=10;x2/=10; digit(x,x2); printf(n); 输入:输出: 3void func(int ary, int n )int i=0, j, x;j=n-1;while(ij) while (i0) i+;while (ij&aryj0) j-;if (ij)x=aryi;aryi+=aryj;aryj-=x;int main( )int a2
3、0, i, m;m=10;for(i=0; im; i+)scanf(%d, &ai);func(a, m);for (i=0; i0; i+ )ai = n%10;n /= 10;for ( j=0; ji; j+=2, k*=10 )d += aj*k;if ( j+1 = 1; i-) if (stri - 1 stri) break; if (i = 0) printf(No result!n); return 0; for (j = 0; j i - 1; j+) putchar(strj); memset(chr, 0, sizeof(chr); for (j = i; j str
4、i - 1 & strj mmin) mmin = strj; chrstrj - a+; chrmmin - a-; chrstri - 1 - a+; putchar(mmin); for(i = 0; i 26; i+) for(j = 0; j chri; j+) putchar(i + a); putchar(n); return 0; 输入:zzyzcccbbbaaa输出: 6.#include void f(char *str, char del)int i,j,len;len=strlen(str);i=0;while(i0)d=m%10;m=m/10;result=resul
5、t+(d*10+d)*mul; mul=mul*100;return result;main() long t;scanf(“%d”,&t);printf(“%ld”, fun(t);输入:1357输出: 9. #include “stdio.h”long g(long k) if (k = 1) return k; return (2002 * g(k - 1) + 2003 * g(k - 2) % 2005; int main() long n; scanf(%ld, &n); printf(%ldn, g(n); return 0; 输入:2005 输出: 第二部分:根据题目要求,完成
6、程序填空(共3题,每空4分,共56分)。(1)木材加工 题目描述: 木材厂有一些原木,现在想把这些木头切割成一些长度相同的小段木头(木头有可能有剩余),需要得到的小段的数目是给定了的。当然,我们希望得到的小段越长越好,你的任务是计算能够得到的小段木头的最大长度。 木头长度的单位是cm。原木的长度都是正整数,我们要求切割得到的小段木头的长度也是正整数。 输入: 第一行是两个正整数N和K(1 N 10000,1 K 10000),N是原木的数目,K是需要得到的小段的数目。 接下来的N行,每行有一个1到10000之间的正整数,表示一根原木的长度。 输出: 输出能够切割得到的小段的最大长度。如果连1c
7、m长的小段都切不出来,输出”0”。 输入样例: 3 7 232 124 456 输出样例: 114 程序: #include stdio.hint n, k, len10000; int isok(int t) int num = 0, i; for (i = 0; i = k) break; num = (1) ; if ( (2) ) return 1; else return 0; int main() int i, left, right, mid; scanf(%d%d, &n, &k); right = 0; for (i = 0; i n; i+) scanf(%d, &(len
8、i); if (right leni) right = leni; right+; (3) ; while ( (4) right) mid = (left + right) / 2; if ( (5) ) right = mid; else left = mid; printf (%dn, left); return 0; (2) 找出一个二维数组中的鞍点,即该位置上的元素在该行上最大,也在该列上最小。 可能没有鞍点。#define N 10#define M 10main()int i,j,k,m,n,flag1,flag2,a34,max, maxi, maxj;scanf(”%d,%d
9、”,&n,&m); for(i=0;in;i+)for(j=0;jm;j+)scanf(“%d”,&aij);flag2=0;for(i=0;in;i+) max= (6) for(j=0;jm;j+)if ( (7) )max=aij; maxj=j;for( (8) ;kakmaxj) flag1=0; if( (9) )printf(“n第%d行,第%d列的%d是鞍点n”, i, maxj,max);flag2=1;if ( (10) ) printf(”n矩阵中无鞍点!n”);(3)下面程序将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中。 #include stdio.h#include string.hmain() char a=acegikm; char b=bdfhjlnpq; char c80,*p; int i=0,j=0,k=0; while( (11) ) if (aibj) ck= (12) ; i+; else ck= (13) ; j+; k+; ck=0; if( (14) =0) p=b+j; else p=a+i; strcat(c,p); puts(c);专心-专注-专业
限制150内