2011年全国软件专业人才设计与开发大赛---C语言(本科组)第八题
- 格式:doc
- 大小:159.00 KB
- 文档页数:3
全国软件专业人才设计与开发大赛题目样例― c语言全国软件专业人才设计与开发大赛题目样例―c语言1.单选样例lintk=x>y?(x>z?x:z):(y>z?y:z)语句的目的就是:(a)谋x,y,z最大值(b)谋x,y,z最小值(c)谋x,y,z中间值(d)谋x,y,z平均值答案:al定义:charp[20];则,&p,p,&p[0]的区别是:(a)&p,&p[0]不能作为左值变量,而p可以。
(b)它们所表达的数值不同。
(c)p在栈中,而p[0]在堆中(d)没有区别答案:d2.多选样基准l如何让一个函数返回大量的数据?(a)使用公开的静态空间(b)定义大量的形参(c)让被调函数申请空间并返回该指针,主调函数用后负责释放该空间。
(d)让主调函数申请空间并传入该指针,被调函数用后负责释放空间。
(e)让主调函数传入指向指针的指针。
答案:a,c,e3.程序填空题样例l如果只提供更多加减乘除的基本运算能力,你能够同时实现谋平方根吗?可以的!先随便猜猜一个根,用它试除目标数字,如果结果恰好等同于所猜猜的数,则问题化解。
否则用结果与所猜猜的数字的平均值再回去试除?.假设等待开方的数字为doublea;doublet=a/2;doublet2;for(;;){t2=a/t;if(fabs(t-t2)<0.001)break;t=_________;}答案:(t+t2)/2注意:(t+t2)/2.0,(t2+t)*0.5都算对的。
4.编程题样基准(高职)在电梯、家用电器中,随处可见数码管显示的应用。
一般是7个发光管组成8字形的排列,可以显示0-9的数字。
我们可以给这7个发光管编号,以便区分它们:0号管及3号管及1号管及2号管及6号管及4号管及5号管及我们给出了一个用于模拟这个显示过程的程序,并提供了源代码。
输入数字,可以在控制台示意这些数字的对应数码管显示的效果,亮的管显示为“@”,不亮的管显示为“.”。
2011年选拔赛c 本科1.代码填空(满分3分)神秘的三位数有这样一个3位数,组成它的3个数字阶乘之和正好等于它本身。
即:abc = a! + b! + c!下面的程序用于搜索这样的3位数。
请补全缺失的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
int JC[] = {1,1,2,6,24,120,720,5040,40320,362880};int i;for(i=100; i<1000; i++){int sum = 0;int x = i;while(_____x != 0_____){sum += JC[x%10];x /= 10;}if(i==sum) printf("%d\n", i);}2.代码填空(满分4分)歌赛新规则歌手大赛的评分规则一般是去掉一个最高分,去掉一个最低分,剩下的分数求平均。
当评委较少的时候,如果我们只允许去掉一个分数,该如何设计规则呢?有人提出:应该去掉与其余的分数平均值相差最远的那个分数。
即“最离群”的分数。
以下的程序用于实现这个功能。
其中x存放所有评分,n表示数组中元素的个数。
函数返回最“离群”的那个分数值。
请补全缺失的代码。
把填空的答案(仅填空处的答案,不包括题面)存入考生文件夹下对应题号的“解答.txt”中即可。
double score(double x[], int n){int i,j;double dif = -1;double bad;for(i=0; i<n; i++){double sum = 0;for(j=0; j<n; j++){if(________) sum += x[j];}double t = x[i] - sum / (n-1);if(t<0) t = -t;if(t>dif){dif = t;bad = x[i];printf("%d, %f\n", i, x[i]);}}return bad;}3.代码填空(满分4分)反转串我们把“cba”称为“abc”的反转串。
2011年9月全国计算机等级考试二级笔试试卷一、选择题A)算法就是程序B)设计算法时只需考虑数据结构的设计C)设计算法时只需考虑结果的可靠性D)以上三种说法都不对(2)下列关于线性链表叙述中,正确的是A)各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B)各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C)进入插入与删除时,不需要移动表中的元素D)以上三种说法都不对(3)下列关于二叉树的叙述中,正确的是A)叶子结点总是比度为2的结点少一个B)叶子结点总是比度为2的结点多一个C)叶子结点数是度为的结点数的两倍D)度为2的结点数是度为1的结点数的两倍(4)软件按功能分为应用软件、系统软件和支撑软件(或工具软件)。
下现属于应用软件的是A)统(5)该系统总体结构图的深度是A)7 B)6 C)3 D)2(6)程序调试的任务是A)设计测试用例B)验证程序的正确性C)发现程序中的错误D)诊断和改正程序中的错误(7)下列关于数据库设计的叙述中,正确是的A)在需求分析阶段建立数据字典B)在概念设计阶段建立数据字典C)在逻辑设计阶段建立数据字典D)在物理设计阶段建立数据字典(8)数据库系统的三级模式不包括A)概念模式B)内模式C)外模式D)数据模式R S T(9)有三个关系R 、S 和T 如下:则由关系R 和S 得到关系T 的操作是 A)自然连接 B)差C)交 D)并(10)下列选项中属于面向对象设计方法主要特征的是A)继承 B)自顶向下 C)模块化 D)逐步求精(11)以下叙述中错误的是A)C 语言编写的函数源程序,其文件名后缀可以是.C B)C 语言编写的函数都可以作为一个独立的源程序文件 C)C 语言编写的每个函数都可以进行独立的编译并执行 D)一个C 语言程序只有一个主函数(12)以下选项中关于程序模块化的叙述错误的是A)把程序分成若干相对独立的模块,可便于编码和调试B)把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C)可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序 D)可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序 (13)以下选项中关于C 语言常量的叙述错误的是A)所谓常量,是指在程序运行过程中,其值不能被改变的量 B)常量分为整型常量、实型常量、字符常量和字符串常量 C)常量可分为数值常量和非数值常量 D)经常被使用的变量可以定义成常量(14)若有定义语句: int a=10; double b=3.14; ,则表达式'A'+a+b 的值的类型是 A)char B)int C)double D)float (15)若有定义语句: int x=12, y=8, z; ,在其后执行语句z=0.9+x/y;,则z 的值为 A)1.9 B)1 C)2 D)2.4(16)若有定义: int a,b;,通过语scanf("%d;%d",&a,&b);,能把整数3赋给变量a, 5赋给变量b 的输入数据是A)3 5 B)3,5 C)3;5 D)35(17)若有定义语句: int k1=10, k2=20;,执行表达式(k1=k1>k2) && (k2=k2>k1)后,k1和k2的值分别为 A)0和1B)0和20C)10和1D)10和20(18)有以下程序#include <stdio.h> main( ){ int a=1, b=0;if (--a) b++;else if(a==0) b+=2;else b+=3;printf("%d\n",b);}程序运行后的输出结果是A)0 B)1 C)2 D)3(19)下列条件语句中,输出结果与其他语句不同的是A) if(a) printf("%d\n", x); else printf("%d\n",y);B) if(a==0) printf("%d\n", y); else printf("%d\n",x);C) if(a!=0) printf("%d\n", x); else printf("%d\n",y);D) if(a==0) printf("%d\n", x); else printf("%d\n",y);(20)有以下程序#include <stdio.h>main( ){ int a=7;while (a--);printf("%d\n",a);}程序运行后的输出结果是A)-1 B)0 C)1 D)7(21)以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII码值为97)A)printf("%c\n",'a'-32); B)printf("%d\n",'A')C)printf("%c\n",65); D)printf("%c\n",'B'-1);(22)有以下程序(注:字符a的ASCII码值为97)#include <stdio.h>main( ){ char *s={"abc"};do{ printf("%d",*s%10); ++s; }while (*s);}程序运行后的输入结果是A)abc B)789 C)7890 D)979899(23)若有定义语句: double a,*p=&a; 以下叙述中错误的是A)定义语句中的 * 号是一个间址运算符B)定义语句中的 * 号只是一个说明符C)定义语句中的p只能存放double类型变量的地址D)定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p#include <stdio.h>double f(double x);main( ){ double a=0; int i;for (i=0; i<30; i+=10) a+=f( (double)i);printf("%5.0f\n",a);}double f(double x){ return x*x+1; }程序运行后的输出结果是A)503 B)401 C)500 D)1404(25)若有定义语句: int year=2009, *p=&year;,以下不能使变量year中的值增至2010的语句是A)*p+=1; B)(*p)++; C)++(*p); D)*p++;(26)以下定义数组的语句中错误的是A)int num[]={1,2,3,4,5,6} B)int num[][3]={{1,2},3,4,5,6}; C)int num[2][4]={{1,2},{3,4},{5,6}}; D)int num[][4]={1,2,3,4,5,6};(27)有以下下程序#include <stdio.h>void fun(int *p){ printf("%d\n", p[5]); }main( ){ int a[10]={1,2,3,4,5,6,7,8,9,10};fun(&a[3]);}程序运行后的输出结果是A)5 B)6 C)8 D)9(28)有以下程序#include <stdio.h># define N 4void fun(int a[][N], int b[]){ int i;for (i=0; i<N; i++) b[i]=a[i][i]-a[i][N-1-i];}main( ){ int x[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}}, y[N], i;fun(x, y);for (i=0;i<N; i++) printf("%d,",y[i]); printf("\n");}程序运行后的输出结果是A)-12,-3,0,0, B)-3,-1,1,3, C)0,1,2,3, D)-3,-3,-3,-3,int fun(char *x, char *y){ int n=0;while ( (*x==*y) && *x!='\0') {x++; y++; n++; }return n;}函数的功能是A)查找x和y所指字符串中是否有'\0'B)统计x和y所指字符串中最前面连续相同的字符个数C)将y所指字符串赋给x所指存储空间D)统计x和y所指字符串中相同的字符个数(30)若有定义语句: char *s1="OK", *s2="ok";,以下选项中,能够输出"OK"的语句是A)if (strcm(s1,s2)==0 puts(s1); B)if (strcm(s1,s2)!=0 puts(s2);C)if (strcm(s1,s2)==1 puts(s1); D)if (strcm(s1,s2)!=0 puts(s1);(31)以下程序的主函数中调用了在其前面定义的fun函数#include <stdio.h>∶main( ){ double a[15],k;k=fun(a)∶}则以下选项中错误的fun函数首部是A)double fun( double a[15]) B)double fun( double *a)C)double fun( double a[]) D)double fun( double a)(32)有以下程序#include <stdio.h>#include <string.h>main( ){ char a[5][10]={"china", "beijing", "you", "tiananmen", "welcome"};int i,j; char t[10];for ( i=0; i<4; i++)for (j=i+1; j<5; j++)if( strcmp(a[i], a[j])>0){ strcpy(t,a[i]); strcpy(a[i],a[j]); strcpy(a[j],t); }puts(a[3]);}程序运行后的输出结果是A)beijing B)china C)welcome D)tiananmen(33)有以下程序#include <stdio.h>int f(int m){ static int n=0;n+=m;return n;}main( ){ int n=0;printf("%d,", f(++n));printf("%d\n", f(n++));}程序运行后的输出结果是A)1,2 B)1,1 C)2,3 D)3,3(34)有以下程序#include <stdio.h>main( ){ char ch[3][5]={"AAAA","BBB","CC"};printf( "%s\n", ch[1] );}程序运行后的输出结果是A)AAAA B)CC C)BBBCC D)BBB(35)有以下程序#include <stdio.h>#include <string.h>void fun(char *w, int m){ char s,*p1, *p2;p1=w; p2=w+m-1;while (p1<p2) { s=*p1; *p1=*p2; *p2=s; p1++; p2--; }}main( ){ char a[]="123456";fun( a, strlen(a) ); puts(a);}程序运行后的输出结果是A)654321 B)116611 C)161616 D)123456(36)有以下程序#include <stdio.h>#include <string.h>typedef struct {char name[9]; char sex; int score[2]; } STU;STU f(STU a){ STU b={"Zhao",'m',85,90};int i;strcpy(, );a.sex=b.sex;for (i=0; i<2; i++) a.score[i]=b.score[i];return a;}main( ){ STU c={"Qian",'f',95,92}, d;d=f(c);printf("%s,%c,%d,%d,",,d.sex,d.score[0],d.score[1]);printf("%s,%c,%d,%d\n",,c.sex,c.score[0],c.score[1]);}程序运行后的输出结果是A)Zhao,m,85,90,Qian,f,95,92 B)Zhao,m,85,90,Zhao,m,85,90A)Qian,f,95,92,Qian,f,95,92 B)Qian,f,95,92,Zhao,m,85,90(37)有以下程序#include <stdio.h>main( ){ struct node {int n; struct node *next;} *p;struct node x[3]={{2,x+1}, {4,x+2}, {6, NULL}};p=x;printf("%d,", p->n );printf("%d\n",p->next->n );}程序运行后的输出结果是A)2,3 B)2,4 C)3,4 D)4,6(38)有以下程序#include <stdio.h>main( ){ int a=2, b;b=a<<2; printf("%d\n",b);}程序运行后的输出结果是A)2 B)4 C)6 D)8(39)以下选项中叙述错误的是A)C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值B)在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限于本复合语句内C)C程序函数中定义的自动变量,系统不自动赋确定的初值D)C程序函数的形参不可以说明为static型变量(40)有以下程序#include <stdio.h>main( ){ FILE *fp;int k,n,i,a[6]={1,2,3,4,5,6};fp = fopen("d2.dat","w");for (i=0; i<6; i++) fprintf(fp, "%d\n",a[i]);fclose(fp);fp = fopen("d2.dat","r");for (i=0; i<3; i++) fscanf(fp, "%d%d", &k, &n);fclose(fp);printf("%d,%d\n", k, n);}程序运行后的输出结果是A)1,2 B)3,4 C)5,6 D)123,456二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。
1假设有两种微生物X 和YX出生后每隔3分钟分裂一次(数目加倍),Y出生后每隔2分钟分裂一次(数目加倍)。
一个新出生的X,半分钟之后吃掉1个Y,并且,从此开始,每隔1分钟吃1个Y。
现在已知有新出生的X=10, Y=89,求60分钟后Y的数目。
如果X=10,Y=90 呢?本题的要求就是写出这两种初始条件下,60分钟后Y的数目。
题目的结果令你震惊吗?这不是简单的数字游戏!真实的生物圈有着同样脆弱的性质!也许因为你消灭的那只Y 就是最终导致Y 种群灭绝的最后一根稻草!请忍住悲伤,把答案写在“解答.txt”中,不要写在这里!2福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把ABCDE 所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!3福尔摩斯到某古堡探险,看到门上写着一个奇怪的算式:ABCDE * ? = EDCBA他对华生说:“ABCDE应该代表不同的数字,问号也代表某个数字!”华生:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把ABCDE 所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!4某电视台举办了低碳生活大奖赛。
题目的计分规则相当奇怪:每位选手需要回答10个问题(其编号为1到10),越后面越有难度。
答对的,当前分数翻倍;答错了则扣掉与题号相同的分数(选手必须回答问题,不回答按错误处理)。
每位选手都有一个起步的分数为10分。
某获胜选手最终得分刚好是100分,如果不让你看比赛过程,你能推断出他(她)哪个题目答对了,哪个题目答错了吗?如果把答对的记为1,答错的记为0,则10个题目的回答情况可以用仅含有1和0的串来表示。
第三届“蓝桥杯”全国软件专业人才设计与创业大赛全国总决赛C/C++程序设计本科组比赛选手须知:●比赛时间为4小时(9:00-13:00)。
●参赛选手切勿在提交的代码中书写“姓名”、“考号”,“院校名”等身份信息或其它与竞赛题目无关的内容,否则成绩无效。
●试题包含三种类型:“结果填空”、“代码填空”与“程序设计”,总计100分。
结果填空:5分代码填空:16 分程序设计:19+27+33 = 79分结果填空题:要求参赛选手根据题目描述直接填写结果。
求解方式不限。
不要求源代码。
把结果填空的答案存入【准考证+姓名文件夹】下对应题号的“解答.txt”中即可。
代码填空题:要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不超过一条语句(即中间不能出现分号)。
把代码填空的答案(仅填空处的答案,不包括题面已存在的代码)存入【准考证+姓名文件夹】下对应题号的“解答.txt”中即可。
程序设计题目:要求选手设计的程序对于给定的输入能给出正确的输出结果。
选手的程序只有能运行出正确结果的时候才有机会得分。
注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
对每个编程题目,要求选手把所有函数写在一个文件中。
调试好后,存入与【准考证+姓名文件夹】下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。
对于编程题目,要求选手给出的解答完全符合ANSI C++标准,不能使用诸如绘图、Win32API、中断调用、硬件操作或与操作系统相关的API。
代码中允许使用STL类库,但不能使用MFC或ATL等非ANSI c++标准的类库。
例如,不能使用CString类型(属于MFC类库)。
1.结果填空(满分5分)题目在【准考证+姓名文件夹】下对应题号的“题目.rar”中,请先解压该文件。
解压密码以考场公布为准。
把答案存入【准考证+姓名文件夹】下对应题号的“解答.txt”中即可。
2011“国信蓝点杯”全国软件专业人才设计与开发大赛华中科技大学文华学院选拔赛(C 语言程序设计本科组、高职高专组)上机编程试题一、倒序数是将一个阿拉伯数的各位上的数字以逆序的形式写成的数。
该阿拉伯数的第一位变成最后位,最后位变成第一位。
例如数1245 被写成5421。
注意产生的新数字前边所有的数字0 是被略去的。
倒序数的尾部无多余的数字0。
请将阿拉伯数转变为倒序数。
输入输入的第一行仅有一个正整数n,表示有n 组测试数据。
接下来有n 行,每一行是一组测试数据,长度不超过100。
每一行上的字符串表示一个非负整数,它是你需要转换的数。
输出对每一组测试数据在一行上输出倒序数,该倒序数中前导的数字0 被略去了。
输入样例 3 24 43400 305 503 42 434 (25 分)输出样例#include<stdio.h>int main() { int n,t,m = 0; scanf("%d",&t); for(;t--; m = 0) { scanf("%d",&n); while(n) { m = m * 10 + n%10; n /= 10; } printf("%d\n",m); } return 0; } 二、对一个正整数n,求出n!中末尾0 的个数。
输入输入有若干行。
每一行上有一个整数T,是测试数据组数,接着有T 行,每一行包含一个确定的正整数n(n≤1000000000)。
输出对输入行中的每一个数据n,输出一行,其内容是n!中末尾0 的个数。
输入样例3 3 100 1024 0 24 253 (25 分)输出样例#include<stdio.h>int main() { int n,t,cnt = 0; scanf("%d",&t); for(;t--; cnt = 0) { scanf("%d",&n); for(int i=2,temp = 1; i <= n; ++i) { temp *= i; while(!(temp%10)) ++cnt,temp /= 10; temp %= 100; } printf("%d\n",cnt); } return 0; } 三、给定两个字符串a 和b,定义式子a*b 表示两个字符串的连接。
A、staticboolean matches()全国软件专业人才设计与开发大赛java集训试题(附答案)(考试时间:150分钟考试总分:100分专业认证课程:JAVA程序设计)注意事项1、请首先按要求在试卷的标封处填写您的姓名、考号等;2、请仔细阅读各种题目的回答要求,在规定的位置填写您的答案;3、请保持试卷卷面的整洁,不要在标封区填写无关内容。
一、单项选择题(每题1分,共10分)1、下列叙述中,正确的是( )A、Java语言的标识符是区分大小写的B、源文件名与public类名可以不相同C、源文件名其扩展名为.jarD、源文件中public类的数目不限2、在软件开发中,下面任务不属于设计阶段的是()A、数据结构设计B、给出系统模块结构C、定义模块算法D、定义需求并建立系统模型3、Java虚拟机的执行过程有多个特点,下列哪个特点不属于JVM执行特点?()A、多线程B、动态连接C、异常处理D、异步处理4、在关系数据库中,用来表示实体之间联系的是( )A、树结构B、网状结构C、线性表D、二维表5、能够支持javadoc 命令的注释语句是( )A、/**...//B、/*...*/C、//D、/**...*/6、在匹配器(Matcher)类中,用于输入字符串与模式串比较的方法是( )B、boolean matcher.find()C、int matcher.start()D、int matcher.end()7、给出下面程序段:if(x>0){System.out.println("Hello.");}else if(x>-3){System.out.println("Nice to meet you!");}else{System.out.println("How are you?");}若打印字符串“How are you?”,则x的取值范围是( )A、x>0 B、x>-3C、x<=-3 D、x<=0&x>-38、编译并且执行以下代码,会出现什么情况?( )public classQ{publicstatic void main(String argv[]){int anar[]=new int[]{1,2,3};System.out.println(anar[1]);}}A、1B、有错误,数组anar在初始化以前不能正常输出。
2011 模拟c语言本科注意:本套模拟题主要模拟命题形式与考核范围。
真实竞赛题的数量、难度可能与此套模拟题有差异。
说明:本试卷包含两种题型:“代码填空”与“程序设计”。
填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不多于一条语句(即不能出现分号)。
编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。
注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
1.代码填空(满分2分)下列代码,把一个2位整数交换十位与个位的位置。
请填写缺失的代码。
例如:当x=95时,返回59。
int switch_num(int x){int a = x / 10;int b = x % 10;return __10*b+a_______________;}2.代码填空(满分3分)下列代码把一个二进制的串转换为整数。
请填写缺少的语句;char* p = "1010110001100";int n = 0;for(int i=0;i<strlen(p); i++){n = _____________;}printf("%d\n", n);n = __n*2+(p[i]-'0')________;3.代码填空(满分3分)假设a,b,c是3个互不相等的整数。
下列代码取出它们中居中的数值,记录在m中。
其中的swap()函数可以交换两个变量的值。
请完善代码。
if(a>b) swap(&a, &b);if(b>c) swap(&b, &c);______________________; if(a>b) swap(&a, &b);int m = b;4.代码填空(满分5分)计算3个A,2个B可以组成多少种排列的问题(如:AAABB, AABBA)是《组合数学》的研究领域。
全国软件专业人才设计与开发大赛题目样例— c语言姓名:成绩:1.单选样例●int k = x>y? (x>z?x:z) : (y>z?y:z) 语句的目的是:A(A)求x, y, z 最大值(B)求x, y, z 最小值(C)求x, y, z 中间值(D)求x, y, z 平均值●定义:char p[20]; 则,&p, p, &p[0] 的区别是:D(A)&p, &p[0] 不能作为左值变量,而p可以。
(B)它们所表达的数值不同。
(C)p在栈中,而p[0]在堆中(D)没有区别2.多选样例●如何让一个函数返回大量的数据?ACE(A)使用公开的静态空间(B)定义大量的形参(C)让被调函数申请空间并返回该指针,主调函数用后负责释放该空间。
(D)让主调函数申请空间并传入该指针,被调函数用后负责释放空间。
(E)让主调函数传入指向指针的指针。
3.程序填空题样例●如果只提供加减乘除的基本运算能力,你能实现求平方根吗?可以的!先随便猜一个根,用它试除目标数字,如果结果恰好等于所猜的数,则问题解决。
否则用结果与所猜的数字的平均值再去试除….假设待开方的数字为double a;double t = a / 2 ;double t2;for(;;){t2 = a / t;if(fabs(t-t2)<0.001) break;t = _(t+t2)/2________;}4.编程题样例(高职)当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
该校验的过程:1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
2011年全国软件大赛模拟题及参考答案本套模拟题主要模拟命题形式与考核范围。
真实竞赛题的数量、难度可能与此套模拟题有差异。
说明:本试卷包含两种题型:“代码填空”与“程序设计”。
填空题要求参赛选手在弄清给定代码工作原理的基础上填写缺失的部分,使得程序逻辑正确、完整。
所填写的代码不多于一条语句(即不能出现分号)。
编程题要求选手设计的程序对于给定的输入能给出正确的输出结果。
注意:在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
选手的程序必须是通用的,不能只对试卷中给定的数据有效。
1. 代码填空(满分3分)以下程序打印出0~9的数字,请补充缺少的代码。
public class MyTest{public static void f(int begin, int end){___________; if(begin>end) return;System.out.println(begin);f(begin+1, end);}public static void main(String[] args){f(0,9);}}2. 代码填空(满分4分)如果要把两个整型变量a、b的值交换,一般要采用一个中间变量做过渡,但也可以在不借助任何其它变量的情况下完成。
试填写缺失的代码。
a = a ^ b;b = _________; b = a ^ b;a = _________; a = a ^ b;3. 代码填空(满分3分)许多人都曾经玩过“拍七”游戏。
规则是:大家依次从1开始顺序数数,数到含有7或7的倍数的要拍手或其它规定的方式表示越过(比如:7,14,17等都不能数出),下一人继续数下面的数字。
违反规则者受罚。
下面的程序模拟这个过程,拍7的情况输出“*”,请完善之。
for(int i=1; i<100; i++){if(i % 7 == 0)printf("*/n");else if(___________________) i%10 == 7 ||i/10==7printf("*/n");elseprintf("%d/n", i);}4. 代码填空(满分5分)下面的静态方法的目的是求出某个日期是该年度的第几天。