1、124题干第1题 字符串查找源码:#include void fun(char *s, char c) int i, j, n;/*found*/ for(i=0; si!=_1_ ; i+) if(si=c) /*found*/ n=_2_ ; while(si+1+n!=0) n+; for(j=i+n+1; ji; j-) sj+1=sj;/*found*/ sj+1=_3_ ; i=i+1; main() char s80=baacda, c; printf(nThe string: %sn,s); printf(nInput a character: ); scanf(%c,&c);
2、 fun(s,c); printf(nThe result is: %sn,s);答案:#include void fun(char *s, char c) int i, j, n;/*found*/ for(i=0; si!=0 ; i+) /控制循环到字符串结束标志0 if(si=c) /*found*/ n=0 ; /将n的值初始化为0,以记录起始点 while(si+1+n!=0) n+; /记算之后的字符数 for(j=i+n+1; ji; j-) sj+1=sj; /依次向后移动一位,自后向前/*found*/ sj+1=c ; /将c插入到指定位置 i=i+1; /避免反复选中第
3、一个符合条件的字符 main() char s80=baacda, c; printf(nThe string: %sn,s); printf(nInput a character: ); scanf(%c,&c); fun(s,c); printf(nThe result is: %sn,s);第2题 数组计算源码: #include double fun ( int x)/*found*/ int sum = 0.0; int c=0, i=0; while (xi != 0) if (xi 0) sum += xi; c+; i+; /*found*/ sum = c; return s
4、um;main( ) int x1000; int i=0; printf( nPlease enter some data (end with 0): ); do scanf(%d, &xi); while (xi+ != 0); printf(%fn, fun ( x );答案:#include double fun ( int x)/*found*/ double sum = 0.0; /sum是应该返回的值,要和函数返回值类型相同 int c=0, i=0; while (xi != 0) if (xi 0) sum += xi; c+; 啊 i+; /*found*/ sum /=
5、c; /除号写反了 return sum;main( ) int x1000; int i=0; printf( nPlease enter some data (end with 0): ); do scanf(%d, &xi); while (xi+ != 0); printf(%fn, fun ( x );第3题 公式计算 源码: #include double fun(int n)main() int n; double s; printf(nPlease enter N:); scanf(%d, &n); s = fun(n); printf(the result is: %fn,
6、s);答案:#include double fun(int n) double s=0,t; int i,mu=0; for(i=1;i=n;i+) /注意循环中的语句顺序 mu+=i; t=1.0/mu; s+=t; return s;main() int n; double s; printf(nPlease enter N:); scanf(%d, &n); s = fun(n); printf(the result is: %fn, s);第4题 数字处理源码: #include unsigned long fun(unsigned long n) unsigned long x=0,
7、 s, i; int t; 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; return x;main() unsigned long n=-1; while(n99999999|n0) printf(Please input(0n100000000): ); scanf(%ld,&n); printf(nThe result is: %ldn,fun(n);答案:#include unsigned long fun(unsigned long n) unsi
8、gned long x=0, s, i; int t; 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; return x;main() unsigned long n=-1; while(n99999999|n0) printf(Please input(0n100000000): ); scanf(%ld,&n);
9、printf(nThe result is: %ldn,fun(n);第5题 二维数组源码: #include #define M 5/*found*/int fun(int n, int xx) int i, j, sum=0; printf( nThe %d x %d matrix:n, M, M ); for( i = 0; i M; i+ ) for( j = 0; j M; j+ )/*found*/ printf( %f , xxij ); printf(n); for( i = 0 ; i n ; i+ ) sum += xxii+xxi n-i-1 ; return( sum
10、);main( ) int aaMM=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 ( nThe sum of all elements on 2 diagnals is %d.,fun( M, aa );答案:#include #define M 5/*found*/int fun(int n, int xxM) /定义二维数组 列坐标必须有 int i, j, sum=0; printf( nThe %d x %d matrix:n, M, M ); for( i = 0; i M; i+ ) for( j = 0;
11、j M; j+ )/*found*/ printf( %d , xxij ); /整型二维数组里面存储整型元素,应用%d printf(n); for( i = 0 ; i n ; i+ ) sum += xxii+xxi n-i-1 ; return( sum );main( ) int aaMM=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 ( nThe sum of all elements on 2 diagnals is %d.,fun( M, aa );第6题 数字处理源码: #include void fun
12、(int a, int b, long *c)main() int a,b; long c; printf(Input a b:); scanf(%d%d, &a, &b); fun(a, b, &c); printf(The result is: %ldn, c);答案:#include void fun(int a, int b, long *c) /*此题比较简单,需要注意的是*c作为参数的应用 这个函数没有返回值,那么在主函数中 是如何改变了c的值的呢?*/ int a_g,a_s,b_g,b_s; a_g=a%10; a_s=a/10; b_g=b%10; b_s=b/10; *c=
13、a_s*1000+a_g*10+b_g*100+b_s; /这里要用*c,不能用cmain() int a,b; long c; printf(Input a b:); scanf(%d%d, &a, &b); fun(a, b, &c); printf(The result is: %ldn, c);第7题 链表操作源码: #include #include #define N 6typedef struct node int data; struct node *next; NODE;void fun(NODE *h) NODE *p, *q; int t;/*found*/ p = _1
14、_ ; 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(int a) NODE *h,*p,*q; int i; h = (NODE *)malloc(sizeof(NODE); h-next = NULL; for(i=0; idata=ai; q-next = NULL; if (h-next = NULL) h-next = p =
15、 q; else p-next = q; p = q; return h;void outlist(NODE *h) NODE *p; p = h-next; if (p=NULL) printf(The list is NULL!n); else printf(nHead ); do printf(-%d, p-data); p=p-next; while(p!=NULL); printf(-Endn); main() NODE *head; int aN= 0, 10, 4, 2, 8, 6 ; head=creatlist(a); printf(nThe original list:n)
16、; outlist(head); fun(head); printf(nThe list after sorting :n); outlist(head);答案:#include #include #define N 6typedef struct node int data; struct node *next; NODE;void fun(NODE *h) NODE *p, *q; int t;/*found*/ p = h-next ; /使p指向第一个节点 while (p) /*found*/ q = p-next ; /q指向p的下一个节点 while (q) /*found*/
17、if (p-data q-data) /实际上就是一个复杂的选择法排序 /要注意用什么进行比较,又用什么进行交换! t = p-data; p-data = q-data; q-data = t; q = q-next; p = p-next; NODE *creatlist(int a) NODE *h,*p,*q; int i; h = (NODE *)malloc(sizeof(NODE); h-next = NULL; for(i=0; idata=ai; q-next = NULL; if (h-next = NULL) h-next = p = q; else p-next = q
18、; p = q; return h;void outlist(NODE *h) NODE *p; p = h-next; if (p=NULL) printf(The list is NULL!n); else printf(nHead ); do printf(-%d, p-data); p=p-next; while(p!=NULL); printf(-Endn); main() NODE *head; int aN= 0, 10, 4, 2, 8, 6 ; head=creatlist(a); printf(nThe original list:n); outlist(head); fu
19、n(head); printf(nThe list after sorting :n); outlist(head);第8题 链表操作源码: #include #include typedef struct aa int data; struct aa *next; NODE;int fun ( NODE *h ) int max=-1; NODE *p;/*found*/ p=h ; while(p) if(p-datamax ) max=p-data;/*found*/ p=h-next ; return max;outresult(int s, FILE *pf) fprintf(pf,
20、nThe max in link : %dn,s);NODE *creatlink(int n, int m) NODE *h, *p, *s; int i; h=p=(NODE *)malloc(sizeof(NODE);h-data=9999; for(i=1; idata=rand()%m; s-next=p-next; p-next=s; p=p-next; p-next=NULL; return h;outlink(NODE *h, FILE *pf) NODE *p; p=h-next; fprintf(pf,nTHE LIST :nn HEAD ); while(p) fprin
21、tf(pf,-%d ,p-data); p=p-next; fprintf(pf,n); main() NODE *head; int m; head=creatlink(12, 100); outlink(head , stdout); m=fun(head); printf(nTHE RESULT :n); outresult(m, stdout);答案:#include #include typedef struct aa int data; struct aa *next; NODE;int fun ( NODE *h ) int max=-1; NODE *p;/*found*/ p
22、=h-next ; /头结点一般没有数据域。所以要指向其后的第一个节点 while(p) if(p-datamax ) max=p-data;/*found*/ p=p-next ; /移动p指针到下一个节点,而不是总是第一个节点 return max;outresult(int s, FILE *pf) fprintf(pf,nThe max in link : %dn,s);NODE *creatlink(int n, int m) NODE *h, *p, *s; int i; h=p=(NODE *)malloc(sizeof(NODE);h-data=9999; for(i=1; i
23、data=rand()%m; s-next=p-next; p-next=s; p=p-next; p-next=NULL; return h;outlink(NODE *h, FILE *pf) NODE *p; p=h-next; fprintf(pf,nTHE LIST :nn HEAD ); while(p) fprintf(pf,-%d ,p-data); p=p-next; fprintf(pf,n); main() NODE *head; int m; head=creatlink(12, 100); outlink(head , stdout); m=fun(head); printf(nTHE RESULT :n); outresult(m, stdout);第9题 二维数组源码: #include void fun(int (*s)10, int *b, int *n, int mm, int nn)main() int w1010 = 33,33,33,33,44,44,44,44,55,55,55,55,i,j ; int a100 = 0, n = 0 ; printf(The matrix:n) ; for(i = 0 ; i 3 ; i+) for(j = 0 ; j 4 ; j+) printf(%3d,wij) ; printf(n) ;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1