124题干.docx

上传人:b****4 文档编号:12288298 上传时间:2023-04-17 格式:DOCX 页数:35 大小:784.86KB
下载 相关 举报
124题干.docx_第1页
第1页 / 共35页
124题干.docx_第2页
第2页 / 共35页
124题干.docx_第3页
第3页 / 共35页
124题干.docx_第4页
第4页 / 共35页
124题干.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

124题干.docx

《124题干.docx》由会员分享,可在线阅读,更多相关《124题干.docx(35页珍藏版)》请在冰豆网上搜索。

124题干.docx

124题干

第1题字符串查找

源码:

#include

voidfun(char*s,charc)

{inti,j,n;

/**********found**********/

for(i=0;s[i]!

=___1___;i++)

if(s[i]==c)

{

/**********found**********/

n=___2___;

while(s[i+1+n]!

='\0')n++;

for(j=i+n+1;j>i;j--)s[j+1]=s[j];

/**********found**********/

s[j+1]=___3___;

i=i+1;

}

}

main()

{chars[80]="baacda",c;

printf("\nThestring:

%s\n",s);

printf("\nInputacharacter:

");scanf("%c",&c);

fun(s,c);

printf("\nTheresultis:

%s\n",s);

}

答案:

#include

voidfun(char*s,charc)

{inti,j,n;

/**********found**********/

for(i=0;s[i]!

=0;i++)//控制循环到字符串结束标志'\0'

if(s[i]==c)

{

/**********found**********/

n=0;//将n的值初始化为0,以记录起始点

while(s[i+1+n]!

='\0')n++;//记算之后的字符数

for(j=i+n+1;j>i;j--)s[j+1]=s[j];//依次向后移动一位,自后向前

/**********found**********/

s[j+1]=c;//将c插入到指定位置

i=i+1;//避免反复选中第一个符合条件的字符

}

}

main()

{chars[80]="baacda",c;

printf("\nThestring:

%s\n",s);

printf("\nInputacharacter:

");scanf("%c",&c);

fun(s,c);

printf("\nTheresultis:

%s\n",s);

}

 

第2题数组计算

源码:

#include

doublefun(intx[])

{

/************found************/

intsum=0.0;

intc=0,i=0;

while(x[i]!

=0)

{if(x[i]>0){

sum+=x[i];c++;}

i++;

}

/************found************/

sum\=c;

returnsum;

}

main()

{intx[1000];inti=0;

printf("\nPleaseentersomedata(endwith0):

");

do

{scanf("%d",&x[i]);}

while(x[i++]!

=0);

printf("%f\n",fun(x));

}

 

答案:

#include

doublefun(intx[])

{

/************found************/

doublesum=0.0;//sum是应该返回的值,要和函数返回值类型相同

intc=0,i=0;

while(x[i]!

=0)

{if(x[i]>0){

sum+=x[i];c++;}啊

i++;

}

/************found************/

sum/=c;//除号写反了

returnsum;

}

main()

{intx[1000];inti=0;

printf("\nPleaseentersomedata(endwith0):

");

do

{scanf("%d",&x[i]);}

while(x[i++]!

=0);

printf("%f\n",fun(x));

}

 

第3题公式计算

源码:

#include

doublefun(intn)

{

 

main()

{intn;doubles;

printf("\nPleaseenterN:

");scanf("%d",&n);

s=fun(n);

printf("theresultis:

%f\n",s);

}

答案:

#include

doublefun(intn)

{

doubles=0,t;

inti,mu=0;

for(i=1;i<=n;i++){//注意循环中的语句顺序

mu+=i;

t=1.0/mu;

s+=t;

}

returns;

}

main()

{intn;doubles;

printf("\nPleaseenterN:

");scanf("%d",&n);

s=fun(n);

printf("theresultis:

%f\n",s);

}

 

第4题数字处理

源码:

#include

unsignedlongfun(unsignedlongn)

{unsignedlongx=0,s,i;intt;

s=n;

/**********found**********/

i=__1__;

/**********found**********/

while(__2__)

{t=s%10;

if(t%2==0){

/**********found**********/

x=x+t*i;i=__3__;

}

s=s/10;

}

returnx;

}

main()

{unsignedlongn=-1;

while(n>99999999||n<0)

{printf("Pleaseinput(0

");scanf("%ld",&n);}

printf("\nTheresultis:

%ld\n",fun(n));

}

答案:

#include

unsignedlongfun(unsignedlongn)

{unsignedlongx=0,s,i;intt;

s=n;

/**********found**********/

i=1;//i是用来从1-10-100-1000-10000这样来变化的

/**********found**********/

while(s!

=0)//当除到0的时候就停止

{t=s%10;

if(t%2==0){

/**********found**********/

x=x+t*i;i=i*10;//第一次在末尾取出的数乘1即可,以后要不断地乘10增位

}

s=s/10;

}

returnx;

}

main()

{unsignedlongn=-1;

while(n>99999999||n<0)

{printf("Pleaseinput(0

");scanf("%ld",&n);}

printf("\nTheresultis:

%ld\n",fun(n));

}

 

第5题二维数组

源码:

#include

#defineM5

/************found************/

intfun(intn,intxx[][])

{inti,j,sum=0;

printf("\nThe%dx%dmatrix:

\n",M,M);

for(i=0;i

{for(j=0;j

/************found************/

printf("%f",xx[i][j]);

printf("\n");

}

for(i=0;i

sum+=xx[i][i]+xx[i][n-i-1];

return(sum);

}

main()

{intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},

{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

printf("\nThesumofallelementson2diagnalsis%d.",fun(M,aa));

}

答案:

#include

#defineM5

/************found************/

intfun(intn,intxx[][M])//定义二维数组列坐标必须有

{inti,j,sum=0;

printf("\nThe%dx%dmatrix:

\n",M,M);

for(i=0;i

{for(j=0;j

/************found************/

printf("%d",xx[i][j]);//整型二维数组里面存储整型元素,应用%d

printf("\n");

}

for(i=0;i

sum+=xx[i][i]+xx[i][n-i-1];

return(sum);

}

main()

{intaa[M][M]={{1,2,3,4,5},{4,3,2,1,0},

{6,7,8,9,0},{9,8,7,6,5},{3,4,5,6,7}};

printf("\nThesumofallelementson2diagnalsis%d.",fun(M,aa));

}

 

第6题数字处理

源码:

#include

voidfun(inta,intb,long*c)

{

}

main()

{inta,b;longc;

printf("Inputab:

");

scanf("%d%d",&a,&b);

fun(a,b,&c);

printf("Theresultis:

%ld\n",c);

}

答案:

#include

voidfun(inta,intb,long*c)

{

/*此题比较简单,需要注意的是*c作为参数的应用

这个函数没有返回值,那么在主函数中

是如何改变了c的值的呢?

*/

inta_g,a_s,b_g,b_s;

a_g=a%10;a_s=a/10;

b_g=b%10;b_s=b/10;

*c=a_s*1000+a_g*10+b_g*100+b_s;//这里要用*c,不能用c

}

main()

{inta,b;longc;

printf("Inputab:

");

scanf("%d%d",&a,&b);

fun(a,b,&c);

printf("Theresultis:

%ld\n",c);

}

 

第7题链表操作

源码:

#include

#include

#defineN6

typedefstructnode{

intdata;

structnode*next;

}NODE;

voidfun(NODE*h)

{NODE*p,*q;intt;

/**********found**********/

p=__1__;

while(p){

/**********found**********/

q=__2__;

while(q){

/**********found**********/

if(p->data__3__q->data)

{t=p->data;p->data=q->data;q->data=t;}

q=q->next;

}

p=p->next;

}

}

NODE*creatlist(inta[])

{NODE*h,*p,*q;inti;

h=(NODE*)malloc(sizeof(NODE));

h->next=NULL;

for(i=0;i

{q=(NODE*)malloc(sizeof(NODE));

q->data=a[i];

q->next=NULL;

if(h->next==NULL)h->next=p=q;

else{p->next=q;p=q;}

}

returnh;

}

voidoutlist(NODE*h)

{NODE*p;

p=h->next;

if(p==NULL)printf("ThelistisNULL!

\n");

else

{printf("\nHead");

do

{printf("->%d",p->data);p=p->next;}

while(p!

=NULL);

printf("->End\n");

}

}

main()

{NODE*head;

inta[N]={0,10,4,2,8,6};

head=creatlist(a);

printf("\nTheoriginallist:

\n");

outlist(head);

fun(head);

printf("\nThelistaftersorting:

\n");

outlist(head);

}

答案:

#include

#include

#defineN6

typedefstructnode{

intdata;

structnode*next;

}NODE;

voidfun(NODE*h)

{NODE*p,*q;intt;

/**********found**********/

p=h->next;//使p指向第一个节点

while(p){

/**********found**********/

q=p->next;//q指向p的下一个节点

while(q){

/**********found**********/

if(p->data>q->data)//实际上就是一个复杂的选择法排序

//要注意用什么进行比较,又用什么进行交换!

{t=p->data;p->data=q->data;q->data=t;}

q=q->next;

}

p=p->next;

}

}

NODE*creatlist(inta[])

{NODE*h,*p,*q;inti;

h=(NODE*)malloc(sizeof(NODE));

h->next=NULL;

for(i=0;i

{q=(NODE*)malloc(sizeof(NODE));

q->data=a[i];

q->next=NULL;

if(h->next==NULL)h->next=p=q;

else{p->next=q;p=q;}

}

returnh;

}

voidoutlist(NODE*h)

{NODE*p;

p=h->next;

if(p==NULL)printf("ThelistisNULL!

\n");

else

{printf("\nHead");

do

{printf("->%d",p->data);p=p->next;}

while(p!

=NULL);

printf("->End\n");

}

}

main()

{NODE*head;

inta[N]={0,10,4,2,8,6};

head=creatlist(a);

printf("\nTheoriginallist:

\n");

outlist(head);

fun(head);

printf("\nThelistaftersorting:

\n");

outlist(head);

}

第8题链表操作

源码:

#include

#include

typedefstructaa

{intdata;

structaa*next;

}NODE;

intfun(NODE*h)

{intmax=-1;

NODE*p;

/***********found**********/

p=h;

while(p)

{if(p->data>max)

max=p->data;

/***********found**********/

p=h->next;

}

returnmax;

}

outresult(ints,FILE*pf)

{fprintf(pf,"\nThemaxinlink:

%d\n",s);}

NODE*creatlink(intn,intm)

{NODE*h,*p,*s;

inti;

h=p=(NODE*)malloc(sizeof(NODE));h->data=9999;

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

{s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%m;s->next=p->next;

p->next=s;p=p->next;

}

p->next=NULL;

returnh;

}

outlink(NODE*h,FILE*pf)

{NODE*p;

p=h->next;

fprintf(pf,"\nTHELIST:

\n\nHEAD");

while(p)

{fprintf(pf,"->%d",p->data);p=p->next;}

fprintf(pf,"\n");

}

main()

{NODE*head;intm;

head=creatlink(12,100);

outlink(head,stdout);

m=fun(head);

printf("\nTHERESULT:

\n");outresult(m,stdout);

}

答案:

#include

#include

typedefstructaa

{intdata;

structaa*next;

}NODE;

intfun(NODE*h)

{intmax=-1;

NODE*p;

/***********found**********/

p=h->next;//头结点一般没有数据域。

所以要指向其后的第一个节点

while(p)

{if(p->data>max)

max=p->data;

/***********found**********/

p=p->next;//移动p指针到下一个节点,而不是总是第一个节点

}

returnmax;

}

outresult(ints,FILE*pf)

{fprintf(pf,"\nThemaxinlink:

%d\n",s);}

NODE*creatlink(intn,intm)

{NODE*h,*p,*s;

inti;

h=p=(NODE*)malloc(sizeof(NODE));h->data=9999;

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

{s=(NODE*)malloc(sizeof(NODE));

s->data=rand()%m;s->next=p->next;

p->next=s;p=p->next;

}

p->next=NULL;

returnh;

}

outlink(NODE*h,FILE*pf)

{NODE*p;

p=h->next;

fprintf(pf,"\nTHELIST:

\n\nHEAD");

while(p)

{fprintf(pf,"->%d",p->data);p=p->next;}

fprintf(pf,"\n");

}

main()

{NODE*head;intm;

head=creatlink(12,100);

outlink(head,stdout);

m=fun(head);

printf("\nTHERESULT:

\n");outresult(m,stdout);}

第9题二维数组

源码:

#include

voidfun(int(*s)[10],int*b,int*n,intmm,intnn)

{

}

main()

{intw[10][10]={{33,33,33,33},{44,44,44,44},{55,55,55,55}},i,j;

inta[100]={0},n=0;

printf("Thematrix:

\n");

for(i=0;i<3;i++)

{for(j=0;j<4;j++)printf("%3d",w[i][j]);

printf("\n");

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1