程序填空专练(一)答案
- 格式:doc
- 大小:107.50 KB
- 文档页数:10
【试卷一】Python一级考试练习题word程序填空阅读填空程序试题一、程序填空1.有如下程序段:sum=0for i in range(1,20,3) :sum+=iprint(“sum=”,sum)(1)循环变量i的初值为:_________,终值为:_________,步长为:__________。
(2)该程序执行后,输出的结果为:____________________。
2.程序补充:(1)有5万元资金存入银行,选择“1年定期.自动转存”的存款方式,由于银行利率是不断变化的,这5年利率分别是3.25%.3%.3%.2%.1.75%,5年后会有多少收益呢?调用round ()函数,保留结果两位小数。
money =_______________________________rate=_________________________________for_______________________________________________________________________print(“5年以后存款总额:”,money,“元”)(2)某投资者购买了10万元一年期收益率3.7%的银行保证收益型理财产品。
每年理财赎回后,他会提取2万元用作生活所需,余下资金仍购买此种理财。
在收益率不变的情况下,多少年后本金被全部取出?money= ________________________________year= __________________________________while __________________________________________________________________________________________________print(year,“年后资金被全部取出”)3.编写程序,用*打印一个如下所示的等腰直角三角形,将测试结果截图。
NCT-Python编程一级-模拟卷1(含答案精品练习一、选择题1.下列选项中,不能作为python程序变量名的是()A.abc B.abc123 C.123abc D.abc__1232.以下Python程序运行后的输出结果为()A.0 B.45 C.46 D.3628803.在Python代码中表示“x属于区间[a,b)”的正确表达式是()。
A.a≤x and x<b B.n<= x or x<b C.x>=a and x<b D.x>=a and x>b 4.12 Python语言语句块的标记是( )A.分号B.逗号C.缩进D./5.下列哪个语句在Python中是非法的?()A.x = y = z = 1 B.x = (y = z + 1)C.x, y = y, x D.x += y6.下列选项中,合法的Python变量名是()A.print B.speed C. D.a#27.如下Python程序段for i in range(1,4):for j in range(0,3):print ("Python")语句print ("Python")的执行次数是()A.3 B.4 C.6 D.98.已知字符串s1="python",s2="Python",则表达式中s1>s2的值为()A.“python”B.“Python”C.True D.False 9.Python中,保留字写法正确的是()A.PRINT()B.Print()C.print()D.Int()10.已知字符串变量x的值是“H”,字符“A”的ASCII值是65,则python表达式chr(ord(x)+2)的值是()A.‘I’B.‘J’C.73 D.7411.下列可以被计算机直接执行的程序是()A.机器语言程序B.高级语言程序C.汇编语言程序D.Python源程序12.在Python中以下语句正确的是()。
1.以下程序输入n,输出n个数的所有排列。
#include <stdio.h>#include <stdlib.h>void printlist( int a[], int n ){ /* 本函数输出数组a中的所有元素 */int i;for ( i=0; i<n; i++ )printf( "%d\t", (4) );printf("\n");}void swap( int *p, int *q ){ /* 本函数交换指针p和q所指向变量的值 */int t;t=*p; *p=*q; *q=t;}main(){ /* 输入n,并输出1至n各数值的所有排列 */int n, *a, m, k, i, j;scanf( "%d", &n ); /* 输入变量n *//* 申请n个int变量的内存空间*/a = malloc( n*sizeof(int) ); /* 假设内存申请成功 *//* 初始化第一个排列的值,按升序顺序 */for ( i=0; i<n; i++ )a[i] = i+1;/* 输出第一个排列 */printlist( a, n );/* 以下while语句无限循环直到输出所有排列 */while ( 1 ){/* 从右边找到第一个升序的数值下标给m *//* 从a[m]至a[m+1]为升序,a[m+1]以后为降序 *//* 在下一个排列中,a[m]应选择一个更大的数 */m = n-2;while ( (m>=0) && (a[m]>a[m+1]) )m--;/* 如果所有元素为降序,则所有排列已输出,退出循环 */if ( m<0 ) (5) ;/* 从右边找到第一个正好超过a[m]的数,其下标为k *//* 则a[k]是a[m]以后各元素中正好超过a[m]的一个值 */k = n-1;while ( a[m] > a[k] )k--;/* 下一个排列时, a[m]应改为a[k],故交换a[m]与a[k] *//* 交换后,从a[m+1]以后的数值仍为降序 */swap( (6) );/* 将从a[m+1]开始的其它元素按升序重新排列 *//* 由于a[m+1]至a[n-1]为降序,故逆排a[m+1]以后各元素即可 */for ( i=m+1,j=n-1; i<j; i++,j-- )swap( a+i, a+j );/* 下一个排列的生成完毕,输出该排列 */printlist( a, n );}/* 释放开始时申请的内存空间 */free( a );}/* 输入 3 时,输出以下6个排列:1 2 31 3 22 1 32 3 13 1 23 2 1*/2.以下程序将4至100的所有偶数分解为两个素数之和。
试卷编号:66所属语言:C语言试卷方案:平时练习-填空试卷总分:240分共有题型:1种━━━━━━━━━━━━━━━━一、填空共240题(共计240分)━━━━━━━━━━━━━━━━第1题(1.0分)题号:301已知 i=5,写出语句 a=i++; 执行后整型变量a的值是【1】.答案:=======(答案1)=======5第2题(1.0分)题号:476结构化程序中,有三种结构:顺序结构,【1】,循环结构.答案:====(答案1)= ====条件选择结构======或=====选择结构======或======分支结构第3题(1.0分)题号:473C程序中有且仅有一个【1】函数.答案:=======(答案1)=======主=========或=========main第4题(1.0分)题号:475程序流程图只有一个起点和【1】个终点.答案:====(答案1) ====1==或=====一=========或=========1个=========或===一个第5题(1.0分)题号:477一个用C语言编写的程序在运行时,如果没有发生任何异常情况,则只有在执行了【1】函数的最后一条语句或该函数中的return语句后,程序才会终止运行.答案:=======(答案1)=======主=========或=========main第6题(1.0分)题号:474C语言程序由【1】组成.答案:=======(答案1)=======函数第7题(1.0分)题号:300执行下列语句后,z 的值是【1】.int x=4,y=25,z=5; z=y/x*z;答案:=======(答案1)=======30第8题(1.0分)题号:298C语言表达式!(3<6)||(4<9)的值是【1】.答案:=======(答案1)=======1第9题(1.0分)题号:299设a,b,t 为整型变量,初值为a=7,b=9,执行完语句t=(a>b)?a:b后,t 的值是【1】.答案:=======(答案1)=======9第10题(1.0分)题号:485执行"printf("%d,%d",i,j,k,m);"后将在屏幕上输出【1】个整数.答案:=======(答案1)=======2第11题(1.0分)题号:480C语言中一个单精度浮点型数据占【1】个字节.答案:=======(答案1)=======4第12题(1.0分)题号:479已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch='a'+'8'-'3'的值为【1】.答案:=======(答案1)=======f第13题(1.0分)题号:490已知有声明float d=1;double f=1;long g;和语句printf(" ",g=10+'i'+(int)d*f);,为了正确地以十进制形式输出printf参数表中第二个参数(表达式)的值,则在第一个参数中的下划线位置处应填写的格式转换说明符是【1】.答案:=======(答案1)=======%ld第14题(1.0分)题号:483在C语言的源程序中若出现常量"1L",则该常量的类型是【1】.答案:=======(答案1)=======长整型=========或=========long int第15题(1.0分)题号:481C语言中为整型数据(int)分配【1】个字节的存储空间.答案:=======(答案1)=======2第16题(1.0分)题号:491在TC中,语句序列int k=-1;printf("%u",k);的输出结果为【1】.答案:=======(答案1)=======65535第17题(1.0分)题号:482在Turbo C2.0系统中,若将实型常数1.5存储在内存中,它占用【1】个字节.答案:=======(答案1)=======8第18题(1.0分)题号:486C语言中,逻辑值"真"用【1】表示.答案:=======(答案1)=======1第19题(1.0分)题号:478整型变量x的值为23,语句"printf(″%o\\n″,x);"的输出结果为【1】.答案:=======(答案1)=======27\n第20题(1.0分)题号:484在C语言中,字符型数据在内存中以【1】码形式存放.答案:======(答案1)=======ASCII=========或=========美国标准信息交换第21题(1.0分)题号:489从变量的作用域角度分有全局变量和【1】.答案:=======(答案1)=======局部变量=========或=========局部第22题(1.0分)题号:488变量从存储的时间来分可分为【1】和动态变量.答案:=======(答案1)=======静态变量第23题(1.0分)题号:487只有在程序运行时才为【1】存储类型和register存储类型变量分配内存.答案:=======(答案1)======auto=========或=========自动第24题(1.0分)题号:492现有语句#define a 5+3,则表达式2*a的结果为【1】.答案:=======(答案1)=======13第25题(1.0分)题号:516s=3,s++,s; 这个语句执行完后,s的值为【1】.答案:=======(答案1)=======4第26题(1.0分)题号:525设有下面的程序段int x= 0,y=0;t=x&&++y; 执行语句后y的值为【1】.答案:=======(答案1)=======0第27题(1.0分)题号:512设int a=5,b=2;float c=32.8;,表达式b*(int)c%a的值为【1】.答案:======(答案1)=======4第28题(1.0分)题号:524设x,y,z均为int 型变量,请写出描述"x或y中有一个小于z"的表达式【1】.答案:=======(答案1)=======x<z||y<z第29题(1.0分)题号:514若已知a=10,b=20,则!a<b的值为【1】.答案:=======(答案1)=======1第30题(1.0分)题号:518表达式 a=3,a++,--a的值为【1】.答案:=======(答案1)=======3第31题(1.0分)题号:500C语言中逻辑值'真'用【1】表示.答案:=======(答案1)=======1第32题(1.0分)题号:494若x为int型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式【1】.答案:=======(答案1)=======x==0第33题(1.0分)题号:526表达式 !10! = 1的值是【1】.答案:=======(答案1)=======1第34题(1.0分)题号:520若a为int型变量,则下面表达式的值为【1】.(a=4*5,a*2),a+6答案:=======(答案1)=======26第35题(1.0分)题号:499关系、算术、赋值三种运算符的运算优先顺序由高到低为【1】、【2】、【3】.答案:=======(答案1)=======算术=======(答案2)=======关系=======(答案3)======= 赋值第36题(1.0分)题号:498已知char w; int x; float y; double z;则表达式:w*x+z-y所求得的数据类型为【1】.答案:=======(答案1)=======double第37题(1.0分)题号:510已知:a=1,b=2,表达式a>b?a:b+1的值是【1】.答案:=======(答案1)======= ` 3第38题(1.0分)题号:493判断变量a、b的值均不为0的C表达式为【1】.答案:=======(答案1)=======a*b!=0=========或=========a*b第39题(1.0分)题号:507以下十个运算符+ ! << != , ?: && = || %中优先级别最高和最低的分别是【1】和【2】.答案:=======(答案1)=======!=======(答案2)=======,第40题(1.0分)题号:511表达式3>2>1的值是【1】.答案:=======(答案1)=======0第41题(1.0分)题号:508C语言中的表达式只能由三种字符组成,他们是字母、数字和【1】.答案:=======(答案1)=======下划线=========或=========_第42题(1.0分)题号:517int a=2,b=3; 表达式 a>b?a++,++b的值为【1】.答案:=======(答案1)=======4第43题(1.0分)题号:519执行语句序列"char x=3,y=6,z;z=x^y<<2;"后,z的二进制值为【1】.答案:=======(答案1)=======00011011第44题(1.0分)题号:496设有程序段 int x= 4,y=4;t=++x||++y; 执行语句后y的值为【1】.答案:=======(答案1)=======4第45题(1.0分)题号:506若有定义:int b=7;float a=2.5,c=4.7; 则表达式a+(int)(b/3*(int)(a+c)/2)%4的值为【1】.答案:=======(答案1)=======5.5第46题(1.0分)题号:509计算a、b中最小值的条件表达式为【1】.答案:=======(答案1)=======a<b?a:b第47题(1.0分)题号:515设a和b均为int整型变量,且a=5,b=7,则以下表达式的值为【1】.1.0+a/b答案:=======(答案1)=======1.0=========或=========1第48题(1.0分)题号:522若x为int型变量,执行以下语句后x值是【1】.x=3;x+=x-=x+x;答案:=======(答案1)=======-6第49题(1.0分)题号:513条件"20<x<30或x<-100"的C语言表达式是【1】.答案:====(答案1)= ===((x>20)&&(x<30))||(x<-100) =====或====x>20&&x<30||x<-100 第50题(1.0分)题号:502若a是int型变量,则执行表达式"a=25/3%3"后,a的值为【1】.答案:=======(答案1)=======2第51题(1.0分)题号:505设a、b、c为整型数,且a=3,b=5,c=2,则执行完以下语句:a*=16+(b++)-(++c);后,a的值是【1】.答案:=======(答案1)=======54第52题(1.0分)题号:495设x,y,z均为int 型变量,请写出描述"x,y和z中有两个为负数"的表达式【1】.答案:=======(答案1)=======((x<0)&&(y<0))||((x<0)&&(z<0))||((y<0)&&(z<0))第53题(1.0分)题号:503若有定义:int a=2,b=3; floatx=3.5,y=2.5;则表达式(float)(a+b)/2+(int)x%(int)y的值为【1】.答案:=======(答案1)=======3.5第54题(1.0分)题号:521当a=1,b=1,c=1时,表达式a<b<c的值是【1】.答案:=======(答案1)=======1第55题(1.0分)题号:504若a=1,b=4,c=3,则表达式a&&b+c||b-c的值为【1】.答案:=======(答案1)=======1第56题(1.0分)题号:501执行语句"a=5+(c=6);"后,变量a、c的值依次为【1】、【2】。
【试卷一】Python一级考试练习题精品程序填空阅读填空程序试题一、程序填空1.程序设计:唐三藏又被妖怪抓走了,这次孙悟空还是没打得过妖怪,于是来求观音菩萨。
观音菩萨告诉孙悟空,在天庭里身高正好为1000米的那位神仙可以降伏此妖。
于是悟空立刻来到天上,在玉皇大帝的神仙册上看到了按身高从矮到高排列有10000个神仙。
由于时间紧迫,悟空想用最短的时间找到这位神仙,这样才可以尽快解救唐僧。
代码如下:List=list(map(int,input(“请按身高递增顺序依次输入10000个神仙的身高”).sp lit()))left=1right=10000while ①mid=②if List[mid]==1000:③elif List[mid]<1000:④else:⑤print(“能帮孙悟空的神仙在第{0}位上”.format(mid+l))(1)程序代码中①处正确的代码是(_______)。
A.left<right B.left<=right C.left!=right D.left>right(2)程序代码中②处正确的代码是(_______)。
A.(left+right)/2 B.(left+right)\2C.(left+right)//2 D.(left+right)\\2(3)程序代码中③处正确的代码是(_______)。
A.pass B.print(mid)z C.break D.continue(4)程序代码中④处正确的代码是(_______)。
-A.left=mid B.right=mid C.left=mid+1 D.right=mid-1(5)程序代码中⑤处正确的代码是(_______)。
A.left=mid B.right=mid C.left=mid+1 D.right=mid-12.将下列程序代码补充完整:某同学参加了学校体检,体检的医生告诉他体重超重,需要加强运动。
该同学了解到运动时,心率如能控制在一定范围内,对增强心血管系统和呼吸系统的功能都有很好的效果;超出范围,对身体反而会有损伤。
六、程序填空1./*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:计算矩阵a的下三角(包含主对角线)元素之积,矩阵的行、列数和元素值均由键盘输入。
-------------------------------------------------------*/#define M10#include"stdio.h"int main(){int i,j,n,a[M][M];long s=1;scanf("%d",&n);/***********FILL***********/for(_________)for(j=0;j<n;j++)scanf("%d",&a[i][j]);for(i=0;i<n;i++)/***********FILL***********/for(j=0;_______;j++)/***********FILL***********/s=_________;printf("%ld\n",s);return0;}【空1】【学生答案】for(_________)【参考答案】i=0;i<n;i++i=0;i<n;i=i+1============================================================【空2】【学生答案】for(j=0;_______;j++)【参考答案】j<=ii>=j(i+j)>(n-1)&&j<n(j+i)>(n-1)&&j<n============================================================【空3】【学生答案】s=_________;【参考答案】s*a[i][j]a[i][j]*s============================================================/*-------------------------------------------------------【程序填空】---------------------------------------------------------题目:本程序的功能是从10个数中找出其中的最大值,完善程序。
【程序填空】功能:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
len=length(str...);I.nt length ........(p)N.++..;P.++..;【程序改错】功能:将一个字符串中的大写字母转换成小写字母。
bool (char)......fun(char *c)fun= c;(return *c)..........puts(*p);(putchar(*p)).............【程序设计】功能:编写函数实现两个数据的交换,在主函数中输入任意三个数据,调用函数对这三个数据从大到小排序。
------------------------------------------------*/ #include<stdio.h>void wwjt();void swap(int *a,int *b){/**********Program**********//********** End **********/ }main(){int x,y,z;scanf("%d%d%d",&x,&y,&z);if(x<y)swap(&x,&y);if(x<z)swap(&x,&z);if(y<z)swap(&y,&z);printf("%3d%3d%3d",x,y,z);wwjt();}void wwjt(){FILE *IN,*OUT;int m,n;int i[2];IN=fopen("in.dat","r");if(IN==NULL){printf("Read FILE Error"); }OUT=fopen("out.dat","w"); if(OUT==NULL){printf("Write FILE Error"); }for(n=0;n<3;n++){for(m=0;m<2;m++){fscanf(IN,"%d",&i[m]);}swap(&i[0],&i[1]);fprintf(OUT,"%d\n",i[0]);fprintf(OUT,"%d\n",i[1]);}fclose(IN);fclose(OUT);}/*-------------------------------------------------------【程序填空】功能:输入3个数a,b,c,按从小到大的顺序输出。
资料【试卷一】Python一级考试练习题程序填空阅读填空程序试题一、程序填空1.有如下程序段:sum=0for i in range(1,20,3) :sum+=iprint(“sum=”,sum)(1)循环变量i的初值为:_________,终值为:_________,步长为:__________。
(2)该程序执行后,输出的结果为:____________________。
2.程序编写求1+22+32+……+1002的结果____________________________________________________________________________________________________________________________input(“运行完毕,请按回车键退出...”)3.完善程序。
以下是计算S=1+6+11+…+101的程序代码。
请你在处填写正确的语句。
s=0k=1while(k<=101)__s=0k=1while(k<101):k=k+5s=s+kprint(s+1)4.调试程序。
请阅读以下程序并写出运行结果。
#ex16.pyi=0sum=0while i<10:if i%3==0:sum+=iprint(i)i=i+1print('sum',sum)_________5.编写程序,找到并输出100以内的素数。
6.以下是计算s = 1+6+11+...+ 101的程序代码,请补全程序。
s=0for i in range(1,102, ):s=print( s)请补充完成上述程序①_________ ②_________7.分析完善程序某市出租车收费标准如下:(1)3公里内(含3公里),收费8元(2)超过3公里但未超过6公里部分,按1.5元/公里收费(3)超过6公里部分,按2.25元/公里收费。
根据以上标准,输入出租车行驶的公里数,请计算顾客需付费多少元?[算法分析]假设总费用为p,则可以分段计算p=8 ‘(s≤3)p=1.5*(s-3)+8 ‘(3<s≤6)p=2.25*(s-6)+1.5*3+8 ‘(s>6)[参考代码]a=float(input(“s=”))if s <= 3 :p= 8ifp=1.5*(s-3)+8if s > 6 :p=2.25*(s-6)+1.5*3+8print( p)根据上述回答如下问题:(1)本题采用的算法是________(填:解析法/枚举法/排序法/递归法)。
程序填空 这部分题目得分率很低。没关系,尽量做吧。实在不会把一些简单的填好就行了。有些题目即使不懂也能填出来:)比如:i:=i+1;i:=0; 注意经常问自己程序中有没有做下面的事: 1)初始化(i:=0; j:=0; for i:=1 to n do a[i]:=0之类的) 2)一些明显的动作: a.结果没有储存在需要的地方。 b.累加器没有做加法 c.输出 3)关键动作。 例如交换排序程序的“交换”操作等很明显需要完成的操作。 分析方法和写运行结果类似,注意分析变量和程序结构,理解变量和模块的作用是解题的关键。 不熟练是不妨用自然语言描述一下。 一般的解题步骤: 1. 仔细阅读程序的目的和算法、数据结构的描述! 千万不要一激动一紧张,题目都没看透彻!!! 2. 把程序中的变量和题目中数据结构描述结合起来,记住关键变量的作用! 有时就能填出一些简单的空!!!不信?!!! 3. 结合问题的算法描述和要求及步骤,把程序划分成几段,每段完成指定的功能! 千万不要忘记:这是完善程序,不是让你自己编!!!一定要不断地结合题意和程序。 4. 逐步解决每段! 注意不要因为个别空而影响你对整个程序的把握,不知道的,先空在那儿,把知道的填好,最后再收拾那些难点!!! 注意一定要提醒自己:程序中有没有做那些最基本的事。 5. 做完后,不要忘了把程序从前往后读两遍,看看是否完成了题目的任务;还要检查一些细节性的问题,如“>”还是“>=”,是n-i,还是n-i+1? 下面举例给予说明。
1.基础题(算法、数据结构很清楚、很朴素,送分!) [程序的说明] 本程序对随机产生的100个0到50之间的随机数用一个数组存放后进行排序,然后再将其中重复出现的数进行删除,只保留一个,使得剩下的数中任何两个都不相同且连续存储在原数组中。 const maxn=100; type arraytype=array [1..maxn] of integer; var i,j,temp,current,tail:integer; a:arraytype; begin randomize; for i:=1 to maxn do a[i]:=random(51); for i:=1 to __ ① do for j:= _ ② _ to maxn do if a[i] begin temp:=a[i];a[i]:=a[j];a[j]:=temp end; for i:=2 to maxn do if __ ③ __ then a[i]:=-a[i]; tail:=0;current:=1; while _____ ④ _____ do begin while a[current]<0 do current:=current+1; tail:=tail+1; a[tail]:= __⑤__ ; current:=current+1 end; if ___⑥__ then begin tail:=tail+1; a[tail]:=0 end; for i:=1 to tail do write(a[i]:5); writeln end. [解答] 程序的思想已经不能再清楚了,因为要排序(很明显是冒泡排序),所以: ①maxn-1 ②i+1 那么如何删除呢?先分析一下变量的含义,current和tail分别表示队列的头尾指针。再看删的过程:好象是先做标记(置为负!),然后从队首current开始找第1个没被做标记(>0)的数,把它放到当前队尾tail的下一个位置。所以: ③a[i]=abs(a[i-1]) ④(current<=maxn) and (a[current]<>0) ⑤a[current] ⑥(a[tail]<>0) and (a[current]=0)
2.关键变量+特定的思想方法+灵感(1995年初中组2) 找出小于33的6个正整数,用这些整数进行加法运算,使得包括原来的整数在内能组成尽可能多的不同整数。 例如:用2,3,5这三个数能可组成下面的数: 2, 3, 5, 2 + 3 = 5(但5已经存在) 2 + 5 = 7, 3 + 5 = 8, 2 + 3 + 5 = 10 所以用2,3,5能组成6个不同的数。 程序要求:输出所选的这6个数,以及能组成不同整数的个数。 算法提要:选择的这6个数,用来组成数时应该尽可能不重复,引入数组A保存找出的这6个整数。 主要程序段: A[1] := 1; t := 0; For i := 2 to 6 do begin _________①________; for j := 1 to i - 1 do s := ______②_______; a[i] := _______③_______; end; For i:=1 to 6 do Begin t:= ______④______ ; WRITE(a[i], ' '); End; Writeln('能组成不同整数的个数:', t)
解答:首先,根据蓝色的程序段,我们应该判断出③应该和s相关,而②是为了计算s,所以本题的关键是变量s的含义。 不要着急,我们研究一下题目的例子和算法提要,发现:选择的6个数(a[i])应该尽可能不重复;且a[i]>a[i-1]而a[i]还要尽可能小;假设现在已求出了a[1]„a[i-1],那么为了满足“能组成尽可能多的不同整数”,则a[i]应该取a[1]+a[2]+„+a[i-1]+1,这样必然要设一个累加器,再看看程序:)还真是!!!所以得到:①初始化s:=0; ②累加s+a[j]; ③赋值,注意多加1:s+1; 那么④怎么填呢?它表示能组成的不同整数的个数,那为什么要扫描一遍数组呢?感觉也应该是累加!其实我们应该充分发挥上面已填好的程序段,发现:6个数为:1 2 4 8 16 32(哦,难怪说小于33!让我更加坚信上面做的是对的!),很明显是二进制数的问题吗?本质上就是一个求一个6位的二进制数最多能表示多少状态?答案为:20+21+22+23+24+25=1+2+4+8+16+32。不要激动,看题目④填什么?累加:t+a[i]。
3.复杂的问题描述+简单的程序+细心地处理细节问题(1995年高中组3) 设有一个实数,以字符串形式存放于数组x中,用x:array[1..N]of char表示。其中x[1]若为'-',表示负数;若为'+'、'.'或' ',则表示正数。若为数字,也认为是正数。 例如 x=(' ','2','0',' ','3','.','5','%') 则表示203.5 x=('-','1','.',' ','2','0','%') 则表示-1.2 约定:在字符串x中,除x[1]外,其后可以包含有若干个'.'与' ',但仅以第一次出现的为准,空格不起任何作用,并以字符'%'作为结束标志。 程序要求:将输入的字符串还原成实数输出(小数点后无用的0应除去),还原的结果以下列形式存放(不需要输出)。 F:数符。正数放0,负数放1。 A:array[1..N] of integer; 存放数字,不放小数点。 K:表示A中有效数字的个数。 J:表示小数点后的位数。 例如:数203.24,还原后结果的存放是: F=0 A=(2, 0, 3, 2, 4) K=5 J=2 又如:数-33.0740,还原后结果的存放是: F=1 A=(3, 3, 0, 7, 4) K=5 J=3 算法提要:x : array[1..10] of char;可放长度定为10;首先读入字符串,然后处理数的符号,在还原的过程中,需要判定整数部分与小数部分,同时去除多余的空格和小数点,并约定输入是正确的,不用作出错检查。 只要程序段: For I := 1 to 10 do a[I] := 0; For I := 1 to 10 do read(x[I]); J := 0; f := 0; k := 0; b := 0; If x[1] = '-' then begin ____________①____________; ____________②____________; End Else if x[1] := ' ' then I := 2 Else I := 1; While ________③_________ do I := I + 1; While __________④___________ do BEGIN If (x[I]>= '0') and (x[I]<= '9') Then begin k:=k+1; ________⑤_______; If b=1 then ______⑥_______; end Else if (x[I]='.') and (b=0) then b := 1; I:=I+1 END; If j>0 then while a[k]=0 do begin __________⑦_________ __________⑧_________ End; 解答:显然,蓝色的程序段是用来处理实数的符号的,所以根据约定①应该是设置负数标记,即f:=1;根据else后面的句子,发现i为循环扫描的指针,所以②应该是确定下一位置,即i:=2; ③很明显是过滤掉空格!所以填:(x[i]=’ ’)and(i<10); ④也很明显,一个大循环,判断字符串是否扫描结束,即:x[i]<>’%’ 再看看b变量的含义:根据else子句,发现b=1表示整数部分结束!所以⑤是把一个数字字符转换成数字填到数组a中(a[k]:=ord(x[i])-48);⑥填j:=j+1;(j表示小数点后的位数); ⑦⑧很明显,是处理有小数、并且有多余的0的情况,所以为:j:=j-1;k:=k-1; 小结:注意程序前前后后看,发现变量的作用和含义!!!
4.典型算法+数据结构(1996年高中组1/初中组3) 四色问题: 设有下列形状的图形:(N=8),其编号