124题干.docx
- 文档编号:12288298
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:35
- 大小:784.86KB
124题干.docx
《124题干.docx》由会员分享,可在线阅读,更多相关《124题干.docx(35页珍藏版)》请在冰豆网上搜索。
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");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 124
![提示](https://static.bdocx.com/images/bang_tan.gif)