填空题【说明】 下面的程序功能的功能是以行为单位对字符串按下面的条件进行排序。排序条件为:从字符串中间一分为二,右边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上 例如:位置:0 1 2 3 4 5 6 7 源字符串:h g f e a b c d 则处理后字符串:d c b a h g f e 函数ReadDat()实现从文件in.dat中读取数据(每行字符串长度均小于80),函数WriteDat()把结果dat输出到文件out.dat中。 #include<stdio.h> #include<siring.h> #include<conio.h> char dat[20] [80]; void jsSort() int i,j,k,strl; char ch; for(i=0;i<20;i++) strl=strlen(date[i]); for(j= (1) ;j<strl;j++) /*对后半部分的字符串进行排序*/ for(k=j+1;k<strl;k++) if( (2) ) ch=dat[i] [j]; dot[i] [j]=dat[i] [k]; dat[i] [k]=ch; for(j=0; (3) j++) /*前后两部分进行交换*/ ch = date [i] [j]; dote [i] [j] = date [i] [(strl+1)/2+j]; dat [i] [(strl+1)/2+j]=ch; void main() reodDat(); isSort(); writeDot(); readDat () FILE * in; int i=0; char * p; (4) ; while(i<20 if(p) *p=0; i++; fclose (in); writeDat() FILE * out; int i; clrscr (); out = fopen("out. dat" ,"W"); for(i=0;i<20;i++) printf("%s/n",dar[i]); printf ( (5) ); fclose (out);
填空题[说明] 若S和T是用结点大小为1的单链表存储的两个串,试设计一个算法找出S中第一个不在T中出现的字符。查找过程是这样的,取S中的一个字符(结点),然后和T中所有的字符一一比较,直到比完仍没有相同的字符时,查找过程结束,否则再取S中下一个字符,重新进行上述过程。[函数] typedef struct node char data; struct node *next; LinkStrNode; //结点类型typedef LinkStrNode *LinkString; //LinkString 为链串类型 LifikString S; //S 是链串的头指针 char SearchNoin ( LinkString S, LinkString T ) //查找不在T中出现的字符 LinkStrNode *p, *q; (1) ; q=T; while ( (2) ) //取S中结点字符 while( (3) )//进行字符比较 q=q->next; if(q==NULL) return (4) ;//找到并返回字符值 q=T;//指针恢复串T的开始结点 ( (5) ); printf("there's no such character."); return NULL:
填空题阅读以下说明和流程图,填补流程图中的空缺(1)~(9),将解答填入对应栏内。[说明]假设数组A中的各元素A(1),A(2),…,A(M)已经按从小到大排序(M≥1);数组B中的各元素B(1),B(2),…,B(N)也已经按从小到大排序(N≥1)。执行下面的流程图后,可以将数组A与数组B中所有的元素全都存入数组C中,且按从小到大排序(注意:序列中相同的数全部保留并不计排列顺序)。例如,设数组A中有元素:2,5,6,7,9;数组B中有元素:2,3,4,7;则数组C中将有元素:2,2,3,4,5,6,7,7,9。[流程图]
填空题阅读以下函数说明和C语言函数,将应填入(n)处的字句写在对应栏内。[说明1]L为一个带头结点的循环链表。函数LinkListdeletenode(LinkListL,intc)的功能是删除L中数据域data的值大于C的所有结点,并由这些结点组建成一个新的带头结点的循环链表,其头指针作为函数的返回值。[C函数1]LinkListdeletenode(LinkListL,intc)LinkListLc,P,pre;pre=L;p=(1);Lc=(LinkList)malloc(sizeof(Listnode));Lc->next=Lc;while(P!=L)if(p->data>C)(2);(3);Lc->next=p;p=pre->next;elsepre=p;p=pre->next;returnLc;[说明2]递归函数dec_to_k_2(intn,intk)的功能是将十进制正整数n转换成进制数,并打印。[C函数2]dectok2(intn,intk)if(n!=O)dectok2((4),k);printf("%d",(5));
填空题阅读下列说明、图和Java代码,将应填入{{U}}(n){{/U}}处的字句写在答题纸的对应栏内。[说明]已知对某载客车辆(Car)进行类建模,如图6-1所示,其中类Engine表示发动机引擎,类Wheel表示车轮,类Body表示车身,类Driver表示司机,类Passenger表示乘客。[Java代码]classBody{//此处代码省略};//车身类classPassenger{//此处代码省略};//乘客类classWheel{//此处代码省略};//车轮类classDriver{//司机类publicStringname;//表示第几路公交车司机publicDriver(StringdriverName){name=driverName;)//构造函数};classEngine{//引擎类publicStringengineNo;//引擎编号publicEngine(StringengineNo){this.engineNo=engineNo;)//构造函数};publicclassCar{//汽车类staticfinalint{{U}}(1){{/U}}=7;//定义最多载客数staticfinalintMAXWHEELS=5;//定义最多轮胎数protectedEngineengine;protectedDriverdriver;protectedBodybody=newBody();protectedWheel[]wheels;protectedPassenger[]passengers;publicCar(Driverdriver){//构造函数{{U}}(2){{/U}}.driver=driver;engine=newEngine("TX6536型号引擎");wheels=newWheel[MAXWHEELS];passengers=newPassenger[MAX_PASSENGERS];for(intindex=0;index<MAX_WHEELS;index++){wheels[index]=newWheel();}for(intindex=0;index<MAX_PASSENGERS;index++){passengers[index]=null;}}intgetPassengerNumber(){//获取车上乘客数量//此处代码省略return0;}voidgetOnPassenger(PassengeraPassenger){//乘客上车//此处代码省略}voidrun(){//开车if({{U}}(3){{/U}}){System.out.println("司机尚未上车!");return;}//此处代码省略}publicstaticvoidmain(Stringargs[]){Driverdriver=newDriver("第五路公交车司机");Carcar=newCar({{U}}(4){{/U}});for(intindex=0;index<MAX_PASSENGERS;index++)car.getOnPassenger({{U}}(5){{/U}}Passenger());car.run();}}
填空题阅读以下说明和C语言函数,将应填入{{U}}(n){{/U}}处的字句写在答题纸的对应栏内。[说明]一棵非空二叉树中“最左下”结点定义为:若树根的左子树为空,则树根为“最左下”结点:否则,从树根的左子树根出发,沿结点的左孩子分支向下查找,直到某个结点不存在左孩子时为止,该结点即为此二叉树的“最左下”结点。例如,下图所示的以A为根的二叉树的“最左下”结点为D,以C为根的子二叉树中的“最左下”结点为C。二叉树的结点类型定义如下:typedefstructBSTNode{intdata;structBSTNode*1ch,*rch;/*结点的左、右孩子指针*/}*BSTree;函数BSTreeFind_Del(BSTreeroot)的功能是:若root指向一棵二叉树的根结点,则找出该结点的右子树上的“最左下”结点*p,并从树下删除以*p为根的子树,函数返回被册除子树的根结点指针:若该树根的右子树上不存在“最左下”结点,则返回空指针。[函数]BSTreeFind_Del(BSTreeroot){BSTreep,pre;if(!root)returnNULL;/*root指向的二叉树为空树*/{{U}}(1){{/U}};/*令p指向根结点的右子树*/if(!p)returnNULL;{{U}}(2){{/U}};/*设置pre的初值*/while(p->1ch){pre=p;p={{U}}(3){{/U}};}if({{U}}(4){{/U}}==root)/*root的右子树根为"最左下"结点*/pre->rch=NULL;else{{U}}(5){{/U}}=NULL;/*删除以"最左下"结点为根的子树*/returnp;}
填空题[函数2.1说明]
将一个正整数分解质因数。例如:输入90,打印出90=2×3×3×5。
[函数2.1]
fun 1 ( int n )
{
int i;
for ( i=2;i<=n; i++)
{
while (({{U}} (1) {{/U}})
{
if (n %i==0 )
{ printf ( "%d*",i );
{{U}} (2) {{/U}}
}
else
break;
}
}
printf ( "%d",n ) ;}
[函数2.2说明]
下面程序的功能是:海滩上有一堆桃子,5只猴子来分。第1只猴子把这堆桃子平均分为5份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第2只猴子把剩下的桃子又平均分成5份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第3、第4、第5只猴子都是这样做的,问海滩上原来最少有多少个桃子?
[函数2.2]
main ( )
{int i, m, j, k, count;
for ( i=4;i<10000;i+=4 )
{ count=0;
{{U}} (3) {{/U}};
for ( k=0;k<5;k++ )
{
{{U}} (4) {{/U}};
i=j;
if ( j%4==0 )
{{U}} (5) {{/U}};
else
break;
}
i=m;
if ( count==4 )
{printf ( "%d/n", count) ;
break;}
}
}
填空题[说明] 将一正整数序列K1,K2,...,K9重新排列成一个新的序列,新序列中,比K1小的数都在K1的前面(左面),比K1大的数都在K1的后面(右面)。 在程序中已给出了10个序列,每个序列有9个正整数,并存入数组a[10][9]中,分别求出这10个新序列。 [函数] #include<stdio.h> #include<conio. h> void jsValue(int a[10] [9]) int i, j ,k.n, temp; int b[9]; for (i=0 ; i<10 ; i++) temp=a [1] [0 ] ; for(j=8;j>=0;j--) if(temp<a[il [j]) (1) =a[i][j]; if(temp==a[i] [j]) (2) =a[i][j];; if(temp==a[i] [j]) (3) =temp; for (j=0; j<9; j++) a[j][j]=b[j] void main () int a [10][9]= 6, 8,9,1,2, 5,4,7,3, 3,5,8,9,1,2,6,4,7, 8,2,1,9,3,5,4,6,7), 3,5,1,2,9,8,6,7,4, 4,7,8,9,1,2,5,3,6, 4,7,3,5,1,2,6,8,9, 9,1,3,5,8,6,2,4,7, 2,6,1,9,8,3,5,7,4, 5,3,7,9,1,8,2,6,4, 7,1,3,2,5,8,9,4,6 ; int i,j; (4) ; for(i=0; i<10; i++) for(j=0; j<9; j++) printf("%d",a[i] [j] ); if( (5) ) printf(","); printf ("/n"); getch () ;
填空题【说明】 程序8用于计算某公司每个职工应缴纳的个人所得税额和全体职工缴纳的个人所得税总额,职工的当月收入(工资或薪金)通过键盘输入,每次输入一个职工的工号和工资(或薪金)。由于该公司的工资或薪金是不定时发放的,所以输入过程中每个职工的收入会出现多次输入,整个输入以工号小于等于0结束。 假设个人所得税法规定:个人收入所得,按月计税,以每月收入总额减除免税金额800元后的余额作为该月的月应纳税所得额。适用税率如表2所示。 {{B}}表 2{{/B}}
级数
月应纳税所得额
适用税率(%)
123456789
不超过500元的部分501元~2000元的部分2001元~5000元的部分5001元~2000元的部分2001元~4000元的部分4001元~6000元的部分6001元~8000元的部分8001元~100000元的部分超过100000元的部分
51015202530354045 上表表明,个人收入所得税是按照超额累进的税率来征收的。 设一个人的月应纳税所得额为K(元),用下面的公式计算其应缴纳的个人所得税额S (元); 若0<K≤500,则S=K×5%; 若500<K≤2000,则S=500×5%+(K-500)×10%; 若2000<K≤5000,则S=500×5%+1500×10%+(K-2000)×15%; 若5000<K≤20000,则S=500×5%+1500×10%+3000×15%+(K-5000)×20%; ... 例如,某人某月收入总额为4100元,减去800元后,应纳税所得额为3300元,其应缴纳的个人所得税额为500*5%+1500*10%+1300*15%=370元。 【程序】 #include<stdio.h> #define MaxNum 50 #define BASE 800 /*免税金额基数*/ int paylevel[]={0,500,2000,5000,20000,40000,60000,80000,100000,1000001}; int taxPrate[]={5,10,15,20,25,30,35,40,45}; /*税率表*/ typedef struct{ int ld; /*职工的工号*/ long Salary; /*职工的工资*/ } Info; /*查找工号为ld的职工在数组employee中的下标,返回值为0表示没有*/ int find (int ld ,Info employee[], int m) { int j; employee[0]. Id=Id; for(j=m;{{U}} (1) {{/U}};j--); return j; } void main(void) { Info employee[MaxNum+1]; long Wage; double sum=0, K,S; int i,j,N=0,Code; scanf("%d %Id", while(Code>0){ i=find (Code, empolyee, N ); if(i>0)employee [i]. Salary+=Wage; else{{{U}} (2) {{/U}}; employee[N]. Id=Code;employee[N]. Salary =Wage; } scanf("%d %Id", } for(i=1;i<=N;i++) { K={{U}} (3) {{/U}}; /*计算月应纳税所得额*/ S=0; /*月应纳税额赋初值*/ if(K>0) { for(j=1;j<=9;j++) if{{U}} (4) {{/U}} /*月应纳税所得额超过第j级*/ S=S+(paylevel[j]-paylevel[j-1])*taxPrate[j-1]/100; else{S =S+{{U}} (5) {{/U}}* taxPrate[j-1]/100; break; } } printf("职工%d应缴纳的个人所得税额:%10.21f/n",employee[i].Id,S); sum+=S; } printf("全体职工个人所得税总额:%10.21f/n",sum); }
填空题[说明] 完成以下中序线索化二叉树的算法。 [函数] Typedef int datatype; Typedef struct node Int ltag, rtag; Datatype data; *lchild,* rchild; bithptr; bithptr pre; void inthread ( p ); if inthread ( p->lchild ); if ( p->lchild==unll ) (1) ; if ( P->RCHILD=NULL) p->rtag=1; if (2) if (3) pre->rchild=p; if ( p->1tag==1 ) (4) ; INTHREAD ( P->RCHILD ); (5) ;
填空题[说明]设计一个评选优秀教师和学生的程序,其类结构如下图所示。当输入一系列教师或学生的记录后,将优秀学生及教师的姓名列出来。[C++程序]#include<iostream.h>#include<stdio.h>enumbooleanFalse,True;classbaseProtected:charname[8];public:voidgetname()cout<<"姓名:";cin>>name;voidprintname()cout<<"姓名:"<<name<<endUvirtualbooleanisgood()=0;classstudent:(1)intnum;public:voicigetnum()cout<<"考绩:";cin>>num;booleanisgood()return(2);;classteacher:(3)intnum;public:voidgetnum()cout<<"每年发表论文数:";cin>>num;booleanisgood()return(4);voidmain()base*p[50];student*pstud;teacher*ptech;charch;intcount=0;docunt<<"输入教师(t)或学生(S):";cin>>ch;if(ch=='s')pstud=newstudent;pstud->getname();pstud->getnum();p[count++]=pstud;elseif(ch=='t')ptech=newteacher;ptech->getname();ptech->getnum();p[count++]=ptech;elsecout<<"输入错误"<<endl;cout<<"继续输入吗(Y/n)";cin>>ch;while(ch=='Y');for(inti=0;i<count;i++)if((5))//若为优秀,则输出之p[i]->printname();
填空题[说明] 函数move(int *a,int n)用于整理数组a[]的前n个元素,使其中小于零的元素移到数组的前端,大于零的元素移到数组的后端,等于零的元素留在数组中间。 令a[0]~a[low-1]小于零(初始为空); a[low]~a[i-1]等于零(初始为空); a[i]~a[high]还未考察,当前考察元素为a[i]。a[high+1]~a[n-1]大于零(初始为空)。 [函数] move (int *a,int n) int i,low, high,t; low=i=0; high=n-1; while( (1) ) if(a[i]<0) t=a[i];a[i]=a[low];a[low]=t; (2) ; i++; else if( (3) ) t=a[i]; a[i] =a[high]; a[high]=t; (4) ; else (5) ;
填空题【说明4.1】 假设两个队列共享一个循环向量空间(如图1-2所示),其类型Queue2定义如下: typedef struct DateType data [MaxSize]; int front[2],rear[2]; Queue2; 对于i=0或1,front[i]和rear[i]分别为第i个队列的头指针和尾指针。函数.EnQueue (Queue2*Q,int i,DaleType x)的功能是实现第i个队列的入队操作。 【函数4.1】 int EnQueue(Queue2 * Q, int i, DateType x) /*若第i个队列不满,则元素x入队列,并返回1;否则,返回0*/ if(i<0‖i>1) return 0; if(Q->rear[i]==Q->front[ (1) ] return 0; Q->data[ (2) ]=x; Q->rear[i]=[ (3) ]; return 1; 【说明4.2】 函数BTreeEqual(BinTreeNode*T1,BinTtneNode*T2)的功能是递归法判断两棵二叉树是否相等,若相等则返回1,否则返回0。函数中参数T1和T2分别为指向这两棵二叉树根结点的指针。当两棵树的结构完全相同,并且对应结点的值也相同时,才被认为相等。 已知二叉树中的结点类型BinTreeNode定义为: struct BinTreeNode char data; BinTreeNode * left, * right; ; 其中dau为结点值域,leR和risht分别为指向左、右子女结点的指针域, 【函数4.2】 int BTreeEqual(BinTreeNode * T1, BinTreeNode * T2) if(Ti == NULL /*若一棵为空一棵不为空,则不等*/ else if( (5) ) return 1; /*若根结点值相等并且左、右子树*/ /*也相等,则两棵树相等,否则不等*/ else return 0;
填空题【说明】
下面程序的功能是:在含有10个元素的数组中查找最大数,及最大数所在位置(即下标值),最大数可能不止一个。
例如:若输入
2 8 5 7 8 4 8 3 2 8
则应输出
The max:8
Total:4 //最大数出现次数
The positions:1 4 6 9
【函数】
#include<stdio.h>
#define M 10
int fun(int* a,int * n,int pos[ ])
{
int i, k max = - 32767;
{{U}} (1) {{/U}}
for(i=0;i<M;i++)
if({{U}} (2) {{/U}})max=a[i];
for(i=0;i<M;i++)
if({{U}} (3) {{/U}})pos[k++]=i;
*n=k;
return max;
}
main()
{
int a[M],pos[M],i=0j,n;
printf("Enter 10umber:")
for(i=0,i<M;i++)scanf("%d",{{U}} (4) {{/U}});
j=fun({{U}} (5) {{/U}});
printf("The max:%d/n",j);
printf("Total: %d", n);
printf("The position:")
for (i=0; i<n;i++) printf ("%4d", pos[i]);
printf("/n");
}
填空题【说明】本应用程序是一个小写数字转换成大写格式的转换器,其运行窗口如图5所示。窗口中有两个标签(lblNumber和lblChinese)、两个文本框(txtNnmber和txtChinese)和一个命令按钮(cmdChange)。当单击按钮cmdChange时,将文本框txtNumber中数字转换成中文大写,并显示在文本框txtChinese中。例如,在文本框txtNumber输入0076845,单击cmdChange按钮,将在文本框txtChinese中显示“柒万陆仟捌佰肆拾伍”。程序中调用的函数CChinse(StrdigitAsString)的功能是先删除字符串的所有前导0,再调用函数Change(StrdigitAsString),将数字字符串Strdigit转换成中文大写格式。为了防止用户在文本框txtNumber输入非数字形式的字符,程序将以空字符代替所输入的非数字有形字符。【程序】PrivateFunctionTransfer(StrdigitAsString)AsString′完成小写向大写的转换,这段代码省略EndFunctionPrivateFunctionCChinese(StrdigitAsString)AsStringDimintLen,intCounterAsIntegerintLen=Len(Strdigit)IfintLen>0Thenintcounter=0Do'过滤数字串Strdigit的前导0intcounter=intcounter+1LoopUntilMid(Strdigit,{{U}}(1){{/U}})intLen={{U}}(2){{/U}}Strdigit={{U}}(3){{/U}}(Strdigit,intLen)CChinese=Transfer(Strdigit)EndIfEndFunctionPrivateSubcmdChange_Click()txtChinese.Text=CChinese({{U}}(4){{/U}})'调用Cchinese函数EndSubPrivateSubtxtNumber_KeyPress(KeyAsciiAsInteger)SelectCaseKeyAscii'根据输入字符的ASCII码的值进行判断CaseKeyAscii<32'保留输入的控制字符Case48To57'保留输入的数字字符CaseElse'其他情况以空字符代替{{U}}(5){{/U}}=0EndSelectEndSub
填空题阅读以下函数说明和C语言函数,将应填入 (n) 处的字句写在对应栏内。 [说明] 已知一棵二叉树用二叉链表存储,t指向根结点,p指向树中任一结点。下列算法为输出从t到P之间路径上的结点。 [C程序] #define Maxsize 1000 typedef struct node TelemType data; struct node*1child,*rchild; BiNode,*BiTree; void Path(BiTree t,BiNode*P) BiTree*stack[Maxsize],*stackl[Maxsize],*q; int tag[Maxsize],top=0,topl; q=t; /*通过先序遍历发现P*/ do(while(q!=NULL stack[top]=q; tag[top]=0; (2) ; if(top>0) if(stack[top]==P) break; /*找到P,栈底到栈顶为t到P*/ if(tag[top]==1)top--; elseq=stack[top]; q=q->rchild; tag[top]=1; (3) ; top--; topl=0; while(top>0) q=stack[top]; /*反向打印准备*/ topl++; (4) ; top--; while( (5) ) /*打印栈的内容*/ q=stackl[topl]; printf(q->data); topl--;
填空题[说明] 下面程序输出一个矩形面积,以及矩形区域上的假想的作物产量。 [Java程序] public class Mainjava public static void main(String[] args) Lot_size small = new Lot_size() ; Lot_size medium = new Lot_size(); small.set (5,5,5,25) ; medium.set (10,10,10, 50) ; System.out.println("For a small lot of area " +small.get_area () +"/n"); System.out.println("the actual crops are $" +small.get_data2 () +" /n") ; System.out.println("and ideal crops are $" +small.get_data () +"/n") ; System.out.println("For a medium lot of area" +medium.get_area () +"/n"); system.out.println ("the actual crops are $ " +medium.get_data2 () +"/n "); System.out.println ("and ideal crops are $" +medium.get_data () +"/n"); class Crop_assessment private int actual_crop; private int ideal_crop; public void set(int in_actual,int in_ideal) actual_crop = in_actual; ideal_crop = in_ideal; public int get_actual_crop () return (1) ; public int get_ideal_crop() return (2) ; class Lot_size private int length; private int width; private Crop_assessment crop = (3) ; public void set(int 1,int w,int a,int i) length =1; width = w; crop.set (a,i) ; public int get_area () return lengt h*width; public int get_data() return (4) ; public int get_data2 () return (5) ;
填空题【说明】
从文件IN.DAT中读取一篇英文文章存入到字符串数组XX中;请编写程序,其功能是:以行为单位把字符串中所有小写字母。左边的字符串内容移到该串的右边存放,然后把小写字母。删除,余下的字符串内容移到已处理字符串的左边存放。最后把已处理的字符串仍按行重新存入字符串数组XX中,最后调用函数WRITEDAT(),把结果XX输出到文件 OUT5.DAT中。
例如:原文:You can create an index on any field.
you have the correct record.
结果:n any field.Yu can create an index
rd. yu have the crreet res
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
【函数】
#include "stdio.h"
#include "string.h"
#include "conio.h"
#include "ctype.h"
#include "mem.h"
unsigned char xx[50] [80]
int maxline=0;
int readdat(void);
void writedat(void)
/*将题目要求的字符串中所有小写字母o左边的字符串内容移到谊串的右边存放,即将串中“最后”一个字母o左右两侧的内容互换*/
void StrOR(void)
{
inti;
char*p1,* p2,t[80];
for(i=0;i<maxline;i++)
{ t[0]='/0';
p2=xx[i];
while(*p2) /*找到最后一个别'o'*/
{ if({{U}} (1) {{/U}})p1=p2;
p2++;
}
strcat(t,p1+1);
*p1='/0';
strcat(t,xx[i]);
p1=xx[i];
p2=t;
while(*p2) /*删去字符'o'*/
{ if({{U}} (2) {{/U}}){{U}} (3) {{/U}}=*p2;
p2++;
}
{{U}}(4) {{/U}};
}
}
void main()
{
clrscr();
if(readdat())
{ printf("Can't open the file IN. DAT!/n");
return;
}
StrOR();
writedat();
}
int readdat(void)
{
FILE * fp;
int i=0;
char * p;
if((fp=fopen("in.dat","r" ))==NULL)
return 1;
while(fgets(xx[i],80, fp)!=NULL)
{ p=strchr(xx[i],'/n');
if(p)
*p=0;
i++;
}
maxline:{{U}} (5) {{/U}};
fclose(fp);
return 0;
}
void writedat (void)
{ FILE * fp;
int i;
fp=fopen("in.dat',"w");
for(i=0;i<maxline;i++)
{ printf("%s/n",xx[i]);
fprintf(fp," %s/n",xx[i]);
}
fclose(fp);
}
}
}
填空题[说明]以下是一账号和密码输入的检验程序。对输入的账号和密码规定如下所述。(1)账号为不超过6位的数字,密码为4位字符,在本题中,密码假定为“Pass”。(2)密码输入时在屏幕上不显示输入的字符,而以“*”代替。(3)当输入不正确,如账号为非数字字符或密码不正确时,显示有关信息。(4)当输入正确时,关闭密码窗口,显示记事本窗口。按要求完成有关控件的其他属性的设置,编写确定按钮的单击事件过程。相关界面如下:(可能要用到的单词:MultiLlne,ScrollBars,PasswordChar,MaxLength)密码窗口frmPass控件设置如下表所示。控件控件名(Name)标题(Caption)其他属性帐号标签1blNo账号密码标签1blNo密码帐号文本框txtNo无定义密码文本框txtPas无定义确定按钮comOk确定记事本窗口frmNotepad控件设置如下表所示。控件控件名(Name)标题(Caption)其他属性文本框TxtNotepad无定义清除按钮CmdClear清除返回按钮cmdBack返回在密码窗口的属性窗口,对密码文本框设置属性MuniLine为False。[VisualBasic代码]PrivateSubcmdOK_Click()IftxtPas.Text="Pass"ThenLoadfrmNotePadfrmNotePad.ShowfrmPass.HideElseMsgBox"密码错误!",vbExclamation+vbRetryCancel,"重输入密码"txtPas.Text=""txtPas.SetFocus{{U}}(1){{/U}}EndSubPrivateSubForm_Load()txtPas.PasswordChar="*"xtNo.MaxLength=6EndSubPrivateSubtxtNoLostFocus(DimiAsInteger,sAsString*1Fori=1To{{U}}(2){{/U}}s=Mid(txtNo.Text,i,1)If{{U}}(3){{/U}}Or{{U}}(4){{/U}}ThenMsgBox"账号有非数字符号!",vbExclamation+vbRetryCancel,"1输入账号"{{U}}(5){{/U}}txtNo.SetFocusExitSubEndIfNextiEndSub
填空题[说明] 本程序中的函数void first_jnsert(NODE**p,int v)的功能是在已知链表的首表元之前插入一个指定的表元; 函数NODE *reverse_copy(NODE *p)的功能是按已知链表复制出一个新的链表,但新的链表的表元链接顺序与已知链表的表元链接顺序相反; 函数voidprint_link(NODE*p)用来输出链表中各表元的值; 函数void free_link(NODE*p)用来释放链表全部表元空间。 [函数] #include <stdio.n> #include <malloc.h> typedef struct node int val; struct node *next; NODE; void first_insert (NODE **p,int v) NODE *q= (NODE *) malloc (sizeof (NODE) ; q->val=v; (1) ; *p= (2) ; NODE *reverse_copy (NODE *p) NODE *u; for (u=NULL; p;p=p->next) first_insert( (3) ); return u; void print_link (NODE *p) for (; (4) ) printf ("%d/t" ,p->val) ; printf (" /n") ; void free_link (NODE *p) NODE *u; while (p ! =NULL) u=p->next ; free (p); (5) ; void main () NODE *link1, *link2 ; int i; link1=NULL ; for(i=1;i<=10;i++) first_insert (&link1,i) ; link2=reverse_copy (link1) ; print_link (link1) ; free_link (link1) ; print_link (link2); free_link (link2);
