时间:2017-1-2来源:本站原创作者:佚名
点击上方“望麓自卑”               5,6,4,3,9

              9,3,4,6,5

#includeconio.h

#includestdio.h

longpower(intn)

{

inti;

longresult=1;

for(i=1;i=n;i++)

result=10*result;

returnresult;

}

voidmain()

{

longnum,n,j;

intcount=1,tmpcount;

clrscr();

printf(Pleaseinputanumber(0-):);

scanf(%ld,num);

n=num;

while((n=n/10)!=0)

count++;

printf(\n%ldisa%ddigits.\n\n,num,count);

tmpcount=count;//temporarytmpcountforlateruseinstatementA

n=num;

while(count--1)

{

j=power(count);

printf(%d,,n/j);

n=n%j;

}

printf(%d\n,n);

n=num;

while(tmpcount--1)//statementA

{

printf(%d,,n%10);

n=n/10;

}

printf(%d\n,n);

getch();

}

3、编写子函数:(1)用冒泡法将一个数组排成升序的函数---SUB1;(2)在升序数组中插入一个数,并且保持该数组仍为升序数组的函数---SUB2。主函数:①输入任意10个正整数给数组;②调用SUB1对数组进行排序;③从键盘输入一个正整数,调用SUB2将其插入该数组。

#includeconio.h

#includestdio.h

voidmain()

{

inti,k,a[12]={0};//a[0]fornouse

voidsub1(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]=%d\n,i,a[i]);

printf(\n\npleaseinputanumbertobeinsertedintothearray:);

scanf(%d,k);

sub2(a,k);

for(i=1;i=11;i++)

printf(\na[%d]=%d\n,i,a[i]);

puts(\nAnykeytoexit!);

getch();

}

voidsub1(b)

intb[];

{

inti,j,t;

for(i=1;i10;i++)//thefirstoneisalwaysthesmallest

for(j=i;j=10;j++)

if(b[i]b[j])

{

t=b[i];

b[i]=b[j];

b[j]=t;

}

}

voidsub2(intb[],intk)

{

inti;

for(i=10;i=1;i--)

{

if(kb[i])

b[i+1]=b[i];

else

{

b[i+1]=k;

break;

}

}

}

4、编写函数:(1)用选择法将数组排成降序的函数----SUB1;(2)用折半查找法查找某数是否在给定的数组当中的函数----SUB2。主函数:输入任意10个正整数给数组,调用SUB1对数组进行排序,从键盘输入一个正整数,调用SUB2在数组中进行查找,找到后输出“OK”,没有找到则输出“NOFOUND!”。

#includeconio.h

#includestdio.h

voidmain()

{

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;i10;i++)

{

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])

j=m-1;

if(kc[m])

i=m+1;

if(k==c[m])

break;

m=(i+j)/2;

}

if(k==c[m])

printf(OK!\n);

else

printf(NOFOUND!\n);

return0;

}

5、编写一个程序,输入两个包含5个元素的数组,先将两个数组升序排列,然后将这两个数组合并成一个升序数组。

#includestdio.h

#includeconio.h

voidmain()

{

inti,j,k,a[6]={0},b[6]={0},c[11]={0},sub1();

clrscr();

printf(\npleaseinput5intnumberstoarray1:);

for(i=1;i=5;i++)//a[0]fornouse

scanf(%d,a[i]);

getchar();

sub1(a,5);

printf(\npleaseinput5intnumberstoarray2:);

for(i=1;i=5;i++)//b[0]fornouse

scanf(%d,b[i]);

getchar();

sub1(b,5);

printf(\nthesortedarrayais:\n\n);

for(i=1;i=5;i++)

printf(a[%d]=%d,i,a[i]);

printf(\n);

printf(\nthesortedarraybis:\n\n);

for(i=1;i=5;i++)

printf(b[%d]=%d,i,b[i]);

k=i=j=1;

while(i=5j=5)

if(a[i]b[j])

c[k++]=a[i++];//c[0]fornouse

else

c[k++]=b[j++];

if(ij)//appendingtherestonesinarraya

for(;i=5;i++)

c[k++]=a[i];

else//appendingtherestonesinarrayb

for(;j=5;j++)

c[k++]=b[j];

printf(\n\n);

printf(\nthemergedarraycis:\n\n);

for(k=1;k=10;k++)

{

if(k==6)

printf(\n);

printf(c[%d]=%d,k,c[k]);

}

while(!kbhit());

}

intsub1(intb[],intn)

{

intt,i,j,post;

for(i=1;in;i++)

{

post=i;

for(j=i+1;j=n;j++)

if(b[post]b[j])

post=j;

if(post!=i)j

{j

t=b[i];

b[i]=b[post];

b[post]=t;

}

}

return0;

}

6、耶稣有13个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:13人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。

/*

//approachone

#defineN13

#includestdio.h

#includeconio.h

structperson

{

intnumber;//itsorderintheoriginalcircle

intnextp;//recorditsnextperson

};

structpersonlink[N+1];//link[0]fornouse

voidmain()

{

inti,count,next;//countfor12persons,and

//nextforthepersonnotoutofcircleyet

clrscr();

for(i=1;i=N;i++)

{

link[i].number=i;//numberingeachperson

if(i==N)

link[i].nextp=1;

else

link[i].nextp=i+1;//numberingeachnextperson

}

printf(\nThesequenceoutofthecircleis:\n);

for(next=1,count=1;countN;count++)//countuntil12persons

{

i=1;

while(i!=3)//icounts1,2,3

{

do//skiptheoneswhosenumbersarezero

next=link[next].nextp;

while(link[next].number==0);//endofdo

i++;

}

printf(%3d,link[next].number);

link[next].number=0;//indicateoutofcirclealready

do//startfromtheoneswhosenumbersarenotzeronexttime

next=link[next].nextp;

while(link[next].number==0);

}

printf(\n\nThebetrayerofthemis:);

for(i=1;i=N;i++)

if(link[i].number)

printf(%3d\n,link[i].number);

getch();

}

*/

//approachtwousingcycliclist

#defineN13

#defineLENsizeof(structperson)

#includestdio.h

#includeconio.h

#includealloc.h

#includestdlib.h

//structperson//permitstructplacedhere//

//{

//intnumber;

//structperson*next;

//};

voidmain()

{

inti,count;

structperson//orpermitstructplacedherealso//

{

intnumber;

structperson*next;

};

structperson*head,*p1,*p2;

clrscr();

head=p2=NULL;

for(i=1;i=N;i++)

{

p1=(structperson*)malloc(LEN);

p1-number=i;

if(head==NULL)

head=p1;

else

p2-next=p1;

p2=p1;

}

p2-next=head;

printf(\nthesequenceoutofthecircleis:\n);

for(count=1;countN;count++)

{

i=1;

while(i!=3)

{

p1=head;

head=head-next;

i++;

}

p2=head;

printf(%3d,p2-number);

p1-next=head=p2-next;

free(p2);

}

printf(\nThebetrayerofthemis:\n%3d,head-number);

getch();

}

明日资料预告:

微观经济学试题汇总(4-7章)

微观经济学简答题

语文模拟试卷2

普通化学复习资料

请密切







































白癜风的最佳治疗方法
北京医院治疗白癜风

转载请注明原文网址:http://www.gzdatangtv.com/jsyy/5446.html

------分隔线----------------------------