C语言程序设计练习题1及答案

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

C语言程序设计练习题1及答案

C语言练习题(一)一选择题1以下不正确的C语言标识符是(D)。A.ABCB.abcC.a_bcD.ab.c2以下正确的c语言标识符是()。A.%xB.a+bC.a123D.test!3一个c程序的执行是从().A.main()函数开始,直到main()函数结束B.第一个函数开始,直到最后一个函数结束C.第一个语句开始,直到最后一个语句结束D.main()函数开始,直到最后一个函数结束4一个C语言程序是由()。A)一个主程序和若干子程序组成B)函数组成C)若干过程组成D)若干子程序组成5C语言程序的基本单位是()。A.过程B.函数c子程序D.标识符6编辑程序的功能是()。A.建立并修改程序B.将c源程序编译成目标程序C.调试程序D.命令计算机执行指定的操作7以下结果为整数的表达式(设有inti;charc;floatf;)().A.i+fB.i*cC.c+fD.i+c+f8以下不正确的语句(设有intp,q)是()。A.P*=3;B.p/=q;C.p+=3;D.p&&=q;9以下使i的运算结果为4的表达式是()。A.inti=0,j=0;(i=3,(j++)+i);B.inti=1,j=0;j=i=((i=3)*2);C.inti=0,j=1;(j==1)?(i=1);(i=3);D.inti=1,j=1;i+=j+=2;10设n=10,i=4、则赋值运算n%=i+1执行后,n的值是().A.0B.3C.2D.111逗号表达式(a=3*5,a*4),a+15的值为(),a的值为()。①A.15B.60C.30D.不确定②A.60B.30C.15D.9012如果a=1,b=2,c=3,d=4,则条件表达式a<b?a:c<d?c:d的值为().A.1B.2C.3D.4n13若有代数式3ae/bc,则正确的C语言表达式是(C)A)a/b/c*e*3B)3*a*e/b/cC)3*a*e/b*cD)a*e/c/b*314在C语言中,要求运算数必须是整形的运算符是(D).A)/B)++C)!=D)%15若以下变量均是整形,且num=sum=7;则计算表达式sum=num++,sum++,++num后sum的值为(A).A)7B)8C)9D)1016在C语言中,int、char和short三种类型数据在内存中所占用的字节数(D)。A)由用户自己定义B)均为2个字节C)是任意的D)有所用的机器的机器字长决定17设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为(C)。A)intB)floatC)doubleD)不确定18设intn=3;则++n的结果是(C),n的结果是(C)A)2B)3C)4D)519语句(1,2,3,4)的结果是(D)。A)1B)2C)3D)420有如下程序,若要求a1、a2、c1、c2的值分别为10、20、A、B,正确的数据输入是(D).main(){inta1,a2;charc1,c2;scanf("%d%d",&a1,&a2);scanf("%c%c",&c1,&c2):}A)1020ABB)1020ABC)1020ABCD)1020AB21已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据是,正确的数据输入方式是(A)。(注:︼表示空格,表示回车)inta1,a2;charc1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);A)10A︼20BB)10︼A︼20︼BC)10A20BD)10A20︼B22阅读以下程序,当输入数据的形式为:25,13,10,正确的输出结果为(D)。nmain(){intx,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%dn”,x+y+z);}A)x+y+z=48B)x+y+z=35C)x+z=35D)不确定值23设X,Y均为float变量,则以下不合法的赋值语句是(B)A)++x;B)y=(x%2)/10;C)x*=y+8;D)x=y=10;24以下程序的执行结果是(A)。#includemain(){intsum,pad;sum=pad=5;pad=sum++;pad++;++pad;printf("%dn",pad);}A)7B)6C)5D)425有以下定义:int a;long b;double x,y;则以下选项中正确的表达式是(B)A)a%(int)(x-y)  B)a=x!=y;  C)(a*y)%b  D)y=x+y=x  26以下选项中能表示合法常量的是(D)  A)整数:1,200  B)实数:1.5E2.0  C)字符斜杠:‘’ D)字符串:"07"27表达式a+=a-=a=9的值是(D)  A)9  B)-9  C)18  D)0  28有以下程序(B)  #include  main()  {inta=1,b=2;  while(a<6){b+=a;a+=2;b%=10;}  printf(”%d,%d\n”,a,b); }  n程序运行后的输出结果是  A)5,11  B)7,1  C)7,11  D)6,1  29有以下程序(B)  #include<stdio.h>  main()  {inty=10;  while(y--);  printf(”y=%d\n”,y);  }  程序执行后的输出结果是  A)y=0  B)y=-1  C)y=1  D)while构成无限循环  30有以下程序(C)  #include<stdio.h>  main()  {chars[」=”rstuv";  printf(”%c\n”,*s+2);  }  程序运行后的输出结果是  A)tuv  B)字符t的ASCII码值  C)t  D)出错31有以下程序(B)  #include<stdio.h>  #include<string.h>  main()  {charx[]=”STRING”;  x[0」=0;x[1]=’\0’;x[2」=’0’;  printf(”%d %dn”,sizeof(x),strlen(x));  }  程序运行后的输出结果是  A)6 1  B)7 0  C)6 3  D)7 1  32有以下程序(D)  #include<stdio.h>  int  f(int x);  main()  {int n=1,m;  m=f(f(f(n)));printf(”%d\n”,m);  }  int f(int x)  {return x*2;}  程序运行后的输出结果是  A)1  B)2  C)4  D)8  33以下程序段完全正确的是(C)  A)int*p; scanf("%d",&p);  B)int*p; scanf(“%d”,p);  C)intk,*p=&k; scanf("%d",p);  D)intk,*p:; *p=&k;  scanf(“%d”,p);34下列定义数组的语句中,正确的是(B)  A)int N=10;  intx[N];         B)#defineN10  int x[N];                 C)int x[0..10];       D)intx[];  35若要定义一个具有5个元素的整型数组,以下错误的定义语句是(D)  A)int a[5]=﹛0﹜;  B)int b[]={0,0,0,0,0};  nC)int c[2+3];  D)int i=5,d[i];    36有以下程序  #include<stdio.h>  void f(int*p);  main()  {int a[5]={1,2,3,4,5},*r=a;  f(r);printf(”%dn”;*r);  }  voidf(int*p)  {p=p+3;printf(”%d,”,*p);}  程序运行后的输出结果是(D) A)1,4  B)4,4  C)3,1  D)4,137有以下程序(函数fun只对下标为偶数的元素进行操作  #include<stdio.h>  voidfun(int*a;intn)  {inti、j、k、t;  for(i=0;i<n-1;i+=2)  {k=i;  for(j=i;ja〔k])k=j;  t=a〔i];a〔i]=a[k];a〔k]=t;  } }  main()  {intaa「10」={1,2,3,4,5,6,7},i;  fun(aa,7);  for(i=0;i<7;i++)printf(”%d,”,aa[i]));  printf(”\n”);  }  程序运行后的输出结果是(A)  A)7,2,5,4,3,6,1  B)1,6,3,4,5,2,7  C)7,6,5,4,3,2,1  D)1,7,3,5,6;2,1    38下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST"要求的是(A) A)if(strcmp(s2,s1)==0)ST;  B)if(sl==s2)ST;  C)if(strcpy(sl,s2)==1)ST; D)if(sl-s2==0)ST;  39以下不能将s所指字符串正确复制到t所指存储空间的是(C)  A)while(*t=*s){t++;s++;}  B)for(i=0;t[i]=s[i];i++);  C)do{*t++=*s++;}while(*s);  D)for(i=0,j=0;t[i++]=s[j++];);40有以下程序(strcat函数用以连接两个字符串)  #include<stdio.h>  #include<string.h>  main()  {chara[20]=”ABCD\0EFG\0”,b[]=”IJK”;  strcat(a,b);nprintf(”%sn”,a);  }  程序运行后的输出结果是(B)  A)ABCDEOFGOIJK  B)ABCDIJK  C)IJK  D)EFGIJK41有以下程序  #include<stdio.h>  void fun(intx)  {if(x/2>1)fun(x/2);  printf(”%d”,x);  }  main()  {fun(7);printf(”n”);}  程序运行后的输出结果是(D)  A)137  B)731  C)73  D)37  42有以下程序  #include<stdio.h>  intfun()  {staticintx=1;  x+=1;returnx;  }  main()  {inti;s=1;  for(i=1;i<=5;i++)s+=fun();  printf(”%d\n”,s);  }  程序运行后的输出结果是(B)  A)11  B)21  C)6  D)12043有以下程序  #inctude<stdio.h>  #include<stdlib.h>  main()  {int*a,*b,*c;  a=b=c=(int*)malloc(sizeof(int));  *a=1;*b=2,*c=3;  a=b;  printf(“%d,%d,%d\n”,*a,*b,*c);  }  程序运行后的输出结果是(A)  A)3,3,3   B)2,2,3   C)1,2,3   D)1,1,3  44有以下程序  #include<stdio.h>  main()  {ints,t,A=10;doubleB=6;  s=sizeof(A);t=sizeof(B);  printf(“%d,%d\n”,s,t);  } 在VC6平台上编译运行,程序运行后的输出结果是(C)  A)2,4     B)4,4     C)4,8     D)10,6    45若有以下语句  typedefstructS  {intg;charh;}T; n 以下叙述中正确的是(B)  A)可用S定义结构体变量  B)可用T定义结构体变量  C)S是struct类型的变量  D)T是structS类型的变量二、写出下列每个程序运行后的输出结果1.#includevoidmain(){inti,s=0;for(i=1;;i++){if(s>50)break;if(i%2==0)s+=i;}printf("i,s=%d,%dn",i,s);}2.#includevoidmain(){charch='*';inti,n=5;while(1){for(i=0;ivoidmain(){intx=24,y=88;inti=2,p=1;do{while(x%i==0&&y%i==0){p*=i;x/=i;y/=i;}i++;}while(x>=i&&y>=i);printf("%dn",p*x*y);}4.#includevoidmain(){inta[9]={36,25,48,24,55,40,18,66,20};inti,b1,b2;na[0]<=a[1]?(b1=a[0],b2=a[1]):(b1=a[1],b2=a[0]);for(i=2;i<9;i++)if(a[i]voidmain(){inta=10,b=20;printf("%d%dn",a,b);{intb=a+25;a*=4;printf("%d%dn",a,b);}printf("%d%dn",a,b);}6.#includevoidSelectSort(inta[],intn){inti,j,k,x;for(i=1;ivoidLE(int*a,int*b){intx=*a;*a=*b;*b=x;}voidmain(){nintx=15,y=26;printf("%d%dn",x,y);LE(&x,&y);printf("%d%dn",x,y);}8.#include#includestructWorker{charname[15];//姓名intage;//年龄floatpay;//工资};intEqual(structWorker*r1,structWorker*r2){if(strcmp(r1->name,r2->name)==0)return1;elsereturn0;}voidmain(){structWorkera[4]={{"abc",25,420},{"defa",58,638},{"ghin",49,560},{"jklt",36,375}};structWorkerx={"defa"};inti;for(i=0;i<4;i++)if(Equal(a+i,&x))break;if(i>=4)printf("没有查找所需要的记录!n");elseprintf("%s%d%6.2fn",a[i].name,a[i].age,a[i].pay);}9.#includevoidmain(){inta=0,b=2,c=3;switch(a){case0:switch(b==2){case1:putchar('&');break;case2:putchar('%');break;}case1:switch(c){case1:putchar('$');case2:putchar('*');break;default:putchar('#');}}n}10.#includevoidmain(){intm=1,n=2,t=3;++m;t+=++n;{intn=10,t;t=n*2;m+=t;printf("%d,%d,%dn",m,n,t);}printf("%d,%d,%dn",m,n,t);}答案:1.i,s=15,562.***************3.2644.18205.1020403540206.1520283236477.15262615n8.defa58638.009. .2210202236三、写出下列每个函数的功能1.intSE(intn){//n为大于等于1的整数intx,s=0;printf("输入%d个整数:",n);scanf("%d",&x);if(n==1)returnx;s=x;while(--n){scanf("%d",&x);s+=x;}returns;}2.#includevoidWA(inta[],intn){inti,k,j,x;for(i=0;ia[k])k=j;x=a[i];a[i]=a[k];a[k]=x;}}3.#includeint*LJ(inta[],intn){inti,k=0;for(i=1;ia[k])k=i;return&a[k];}4.intOutput(structIntNode*f){intsum=0;if(!f)return-9999;//用返回特定值-9999表示空表while(f){sum+=f->data;nf=f->next;}returnsum;}假定structIntNode的类型定义为:structIntNode{intdata;//结点值域structIntNode*next;//结点指针域};答案:1.求出从键盘上输入的n个整数之和并返回。2.采用选择排序的方法对数组a中的n个整数按照从大到小的次序重新排列。3.求出数组a中n个元素的最大值元素,返回该元素的地址4.对于以表头指针为f的链表,求出并返回所有结点中data域的值之和。四程序填空1.下面程序的功能是:将一个数插入到一个有序数组(从小到大)中,使插入以后的数组仍然有序。采用的算法是:确定要插入数的位置,然后将比这个数大的数后移一个位置,在空出的位置上将该数插入。#includevoidmain(){inta[11]={1,3,6,7,9,12,14,18,19,20},x;inti,p;printf("Inputadata:n");scanf("%d",&x);for(i=0,p=10;i<10;i++)if(xintcount(char*p)n{intword=0,max=0;while(*p!='.'){while((*p<='z')&&(*p>='a')||(*p<='Z')&&(*p>='A')){①;p++;}if(②)max=word;③;p++;}returnmax;}voidmain(){charstr[80];gets(str);printf("max=%dn",count(str));}3.下面程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。主函数中输出和值。#include#defineM2#defineN4voidSumColumMin(inta[M][N],int*sum){inti,j,k,s=0;for(i=0;ia[j][i])k=j;s+=①;}②=s;}voidmain(){intx[M][N]={3,2,5,1,4,1,8,3},s;SumColumMin(③);printf("%dn",s);n}4.以下程序采用直接选择法对数组a中的10个数进行降序排列,然后按每行5个数的格式输出。#includevoidmain(){inti,j,k,t,a[10]={1,4,3,5,7,9,2,0,6,8};for(j=0;j<9;j++){k=j;for(i=j+1;i<10;i++){if(*(a+i)>①)k=i;}t=a[j];*(a+j)=②;*(a+k)=t;}for(i=0;i<10;i++)printf((i%5)?"%d":③,*(a+i));printf("n");}5.以下程序的功能是计算下列级数之和s=1+x+x2/2!+x3/3!+…+xn/n!doublesum(intx,intn){inti;doublea,b,s;a=1.0;b=1.0;s=1.0;for(i=1;ivoidmain(){voidinvert(int*s,intnum);inta[10]={1,2,3,4,5,6,7,8,9,10},i,n=10;for(i=0;i<10;i++)printf("%4d",a[i]);printf("n");invert(a,n-1);for(i=0;i<10;i++)printf("%4d",a[i]);printf("n");}voidinvert(int*s,intnum){int*t,k;t=s+num;while(①){k=*s;*s=*t;*t=k;②;③;}}7.下面程序的功能是在数组中同时查找最大元素下标和最小元素下标,分别存放在main函数的变量max和min中,请填空。#includevoidfun(int*a,intn,int*max,int*min){inti;*max=*min=0;for(i=1;i*(a+*max))①;elseif(*(a+i)<*(a+min))②;return;}voidmain(){inta[10]={3,15,2,26,9,28,7,1,4,12};intmax,min;③;printf("max=%d,min=%dn",max,min);}程序输出为:max=5,min=7n8.下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中。即字符串c为:abcdefghijklmnpq#include#includevoidmain(){chara[]="acegikm";charb[]="bdfhjlnpq";charc[80],*p;inti=0,j=0,k=0;while(a[i]!=''&&b[j]!=''){if(a[i]voidmain(){charb[17]="0123456789ABCDEF";intc[64],d,i=0,base=16;longn;scanf("%ld",&n);do{c[i]=①;i++;n=n/base;}while(n!=0);for(i--;i>=0;--i){d=②;printf("%c",③);}printf("n");}10.以下程序能统计并输出1至100之间所有能被3整除但不能被7整除的所有正整数。#include#defineM100voidfun(intm,int*p,int*t)n{inti,num=0;for(i=1;i<=m;i++)if(①)②;*t=num;}voidmain(){inta[M],n,k;③;for(k=0;ka[n/2],则将a[n/2]到a[n]的数继续折半进行查找。#includemain(){inta[10]={12,32,45,62,71,76,80,85,90,95};intnum,bott,top,mid;printf("Inputanumber:n");scanf("%d",&num);bott=0;top=9;while(bott<=top){mid=①;if(num==a[mid]){printf("%disthe%dnumbern",num,mid+1);break;}elseif(numintTotalSum(int[],int);voidmain(){inta[5]={2,3,6,8,10};intTotal;Total=①;count<<"Aumofarray:"②<voidmain(){intnum[4][4];inti,j,flag=0;printf("Inputarraynum:n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%d",①);nfor(i=0;i<4;i++)for(j=0;j<4;j++)if(②){flag=1;break;}if(③)printf("Non");elseprintf("Yesn");}答案:1、①p=i②i>=p③a[p]=x2、①word++②maxtop12、①TotalSum(a,5)②Total③sum+=array[i]13、①s+n-1②*p1!=''③p2--14、①&num[i][j]②num[i][j]!=num[j][i]③flag==1五编程题1输入三个整数x,y,z,请把这三个数由小到大输出。2给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。3.一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,+位与千位相同。4.判断101-200之间有多少个素数,并输出所有素数。判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 5.从数字1开始到200之间,求能被3整除的数,然后求这些数的累加和,直到和的值不大于100为止。输出这些数及累加和。6.古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21.... 7.编程计算1!+2!+3!+···+n! 8.输入两个正整数m和n,求其最大公约数和最小公倍数。9.编写一个函数fun(),首先从键盘上输入一个4行4列的一个实数矩阵到一个二维数组a[4][4]中,接着求出主对角线上元素之和,最后返回求和结果。10.编写一个主函数,计算1+3+32+...+310的值并输出,假定分别用i,p,s作为循环变量、累乘变量和累加变量的标识符。11.编写一个主函数,已知6≤a≤40,15≤b≤30,求出满足不定方程2an+5b=120的全部整数组解。如(13,20)就是其中的一组解。12.编程在一个已知的字符串中查找最长单词,假定字符串中只含字母和空格,空格用来分隔不同单词。13.输入一个五位以内的正整数,(1)判断它是一个几位数;(2)请按序输出其各位数字;(3)逆序输出其各位数字。如输入:56439,输出:5位数          5,6,4,3,99,3,4,6,514.编写子函数:(1)用冒泡法将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。主函数:①输入任意10个正整数给数组;②调用SUB1对数组进行排序;③从键盘输入一个正整数,调用SUB2将其插入该数组。15.编写函数:(1)用选择法将数组排成降序的函数----SUB1;(2)用折半查找法查找某数是否在给定的数组当中的函数----SUB2。主函数:输入任意10个正整数给数组,调用SUB1对数组进行排序,从键盘输入一个正整数,调用SUB2在数组中进行查找,找到后输出“OK”,没有找到则输出“NOFOUND!”。16、编写一个函数实现对两个字符串的比较。不用使用C语言提供的标准函数strcmp。要求在主函数中输入两个字符串,并输出比较的结果(相等的结果为0,不等时结果为第一个不相等字符的ASCII差值)。1.main(){int x,y,z,t;scanf("%d%d%d",&x,&y,&z);if (x>y){t=x;x=y;y=t;} /*交换x,y的值*/if(x>z){t=z;z=x;x=t;}/*交换x,z的值*/if(y>z){t=y;y=z;z=t;}/*交换z,y的值*/printf("small to big: %d %d %dn",x,y,z);}2.main( ){long a,b,c,d,e,x;scanf("%ld",&x);a=x/10000;/*分解出万位*/b=x%10000/1000;/*分解出千位*/c=x%1000/100;/*分解出百位*/d=x%100/10;/*分解出+位*/e=x%10;/*分解出个位*/if (a!=0) printf("there are 5, %ld %ld %ld %ld %ldn",e,d,c,b,a);else if (b!=0) printf("there are 4, %ld %ld %ld %ldn",e,d,c,b);  else if (c!=0) printf(" there are 3,%ld %ld %ldn",e,d,c);    nelse if (d!=0) printf("there are 2, %ld %ldn",e,d);      else if (e!=0) printf(" there are 1,%ldn",e);}3main( ){long ge,shi,qian,wan,x;scanf("%ld",&x);wan=x/10000;qian=x%10000/1000;shi=x%100/10;ge=x%10;if (ge==wan&&shi==qian)/*个位等于万位并且+位等于千位*/ printf("this number is a huiwenn");else printf("this number is not a huiwenn");}4#include "math.h"main(){ int m,i,k,h=0,leap=1; printf("n"); for(m=101;m<=200;m++)  { k=sqrt(m+1);   for(i=2;i<=k;i++)     if(m%i==0)      {leap=0;break;}   if(leap) {printf("%d",m);h++;        if(h%10==0)        printf("n");        }   leap=1;  } printf("nthe total is %d",h);}5.main(){inti,sum=0;for(i=1;i<=200;i++){if(i%3!=0)continue;sum=sum+i;printf(i=%d”,i);}printf(“sum=%d”,sum);}6.main()n{long f1,f2;int i;f1=f2=1;for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2);   if(i%2==0) printf("n");/*控制输出,每行四个*/   f1=f1+f2; /*前两个月加起来赋值给第三个月*/   f2=f1+f2; /*前两个月加起来赋值给第三个月*/ }}7.#includemain(){longs=0,t=1;inti,n;printf("Enterintegern:");scanf("%d",&n);for(i=1;i<=n;i++){t*=i;s+=t;}printf("s=%ldn",s);}8.main(){ int a,b,num1,num2,temp; printf("please input two numbers:n"); scanf("%d,%d",&num1,&num2); if(num1 { temp=num1;  num1=num2;   num2=temp; }a=num1;b=num2;for(;b!=0;)/*利用辗除法,直到b为0为止*/ {  temp=a%b;  a=b;  b=temp; }printf("gongyueshu:%dn",a);printf("gongbeishu:%dn",num1*num2/a);9.doublefun(){doublea[4][4];doubles=0;ninti,j;printf("输入一个4*4的数值矩阵:n");for(i=0;i<4;i++)for(j=0;j<4;j++)scanf("%lf",&a[i][j]);for(i=0;i<4;i++)s+=a[i][i];returns;}10.#includevoidmain(){inti;//用i作为循环变量intp=1;//用p作为累乘变量ints=1;//用s作为累加循环变量for(i=1;i<=10;i++){p*=3;s+=p;}printf("%dn",s);}11.#includevoidmain(){inta,b;for(a=6;a<=40;a++)for(b=15;b<=30;b++)if(2*a+5*b==120)printf("(%d,%d)n",a,b);}12#include#includevoidmain(){charstring[80],*p;inti=0,max=0;clrscr();printf("pleaseinputastring:n");gets(string);//printf("n%sn",string);p=string;while(*p!=''){if(*p==''){if(max<=i)nmax=i;i=0;}elsei++;p++;}if(max<=i)max=i;printf("nmax_lengthofthestringis:%dn",max);getche();}13#include#includevoidmain(){inti,k,a[12]={0};//a[0]fornousevoidsub1(intb[]),sub2(intb[],intk);clrscr();printf("Pleaseinput10numbers:");for(i=1;i<=10;i++)scanf("%d",&a[i]);getchar();sub1(a);for(i=1;i<=10;i++)printf("na[%d]=%dn",i,a[i]);printf("nnpleaseinputanumbertobeinsertedintothearray:");scanf("%d",&k);sub2(a,k);for(i=1;i<=11;i++)printf("na[%d]=%dn",i,a[i]);puts("nAnykeytoexit!");getch();}voidsub1(b)intb[];{inti,j,t;for(i=1;i<10;i++)//thefirstoneisalwaysthesmallestfor(j=i;j<=10;j++)if(b[i]>b[j])n{t=b[i];b[i]=b[j];b[j]=t;}}voidsub2(intb[],intk){inti;for(i=10;i>=1;i--){if(k#includevoidmain(){inti,key,a[11]={0},sub1(),sub2();printf("pleaseinput10number:");for(i=1;i<=10;i++)scanf("%d",&a[i]);getchar();sub1(a);for(i=0;i<=10;i++)printf("a[%d]=%d,",i,a[i]);printf("npleaseinputakeynumber:");scanf("%d",&key);sub2(a,key,1,10);getch();}intsub1(intb[]){intt,i,j,post;for(i=1;i<10;i++)n{post=i;for(j=i+1;j<=10;j++)if(b[post]>b[j])post=j;if(post!=i){t=b[i];b[i]=b[post];b[post]=t;}}return0;}intsub2(intc[],intk,intn0,intn1){inti=n0,j=n1,m;m=(i+j)/2;while(i<=j){if(kc[m])i=m+1;if(k==c[m])break;m=(i+j)/2;}if(k==c[m])printf("OK!n");elseprintf("NOFOUND!n");return0;}15#include#includevoidmain(){inti,j,k,a[6]={0},b[6]={0},c[11]={0},sub1();clrscr();printf("npleaseinput5intnumberstoarray1:");for(i=1;i<=5;i++)//a[0]fornousenscanf("%d",&a[i]);getchar();sub1(a,5);printf("npleaseinput5intnumberstoarray2:");for(i=1;i<=5;i++)//b[0]fornousescanf("%d",&b[i]);getchar();sub1(b,5);printf("nthesortedarrayais:nn");for(i=1;i<=5;i++)printf("a[%d]=%d",i,a[i]);printf("n");printf("nthesortedarraybis:nn");for(i=1;i<=5;i++)printf("b[%d]=%d",i,b[i]);k=i=j=1;while(i<=5&&j<=5)if(a[i]b[j])post=j;if(post!=i)j{jt=b[i];b[i]=b[post];b[post]=t;}}return0;}16strcmp(p1,p2)char*p1,*p2;{inti;i=0;while(*(p1+i)==*(p2+i))if(*(p1+i++)=='')return(0);return(*(p1+i)-*(p2+i));}main(){intm;charstr1[20],str2[20],*p1,*p2;printf("Inputtwostrings(1stringateachline):n");scanf("%s",str1);scanf("%s",str2);p1=&str1[0];p2=&str2[0];m=strcmp(p1,p2);printf("Theresultofcomparison:%dn",m);}
查看更多

相关文章

您可能关注的文档