124题干.docx
《124题干.docx》由会员分享,可在线阅读,更多相关《124题干.docx(35页珍藏版)》请在冰豆网上搜索。
![124题干.docx](https://file1.bdocx.com/fileroot1/2023-4/17/00044066-a720-4205-907a-cd7213542b09/00044066-a720-4205-907a-cd7213542b091.gif)
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;isum+=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;isum+=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");