1、程序题程序设计/*-【程序设计】-功能:编写函数fun(str,i,n),从字符串str中删除第i个 字符开始的连续n个字符(注意:str0代表字符串 的第一个字符)。-*/#include stdio.h#include string.hmain() char str81; int i,n; void fun(char str,int i,int n); void TestFunc(); printf(请输入字符串str的值:n); scanf(%s,str); printf(你输入的字符串str是:%sn,str); printf(请输入删除位置i和待删字符个数n的值:n); scanf(
2、%d%d,&i,&n); while (i+n-1strlen(str) printf(删除位置i和待删字符个数n的值错!请重新输入i和n的值n); scanf(%d%d,&i,&n); fun(str,i,n); printf(删除后的字符串str是:%sn,str); TestFunc();void fun(char str,int i,int n) /*Begin*/while(stri+n-1) stri-1=stri+n-1; i+; stri-1=0;/* 或int j=i-1,k=i+n-1; while(strj+=strk+)!=0);*/ /* End */void Tes
3、tFunc() FILE *IN,*OUT; char i200; /*char o200;*/ IN=fopen(in.dat,r); if(IN=NULL) printf(Read File Error); OUT=fopen(out.dat,w); if(OUT=NULL) printf(Write File Error); fscanf(IN,%s,i); fun(i,2,8); fprintf(OUT,%sn,i); fclose(IN); fclose(OUT);/*-【程序设计】-功能:请编一个函数void fun(int ttMN,int ppN), tt指向一个M行N列的二维
4、数组,求出二维数组每列 中最小元素,并依次放入pp所指一维数组中。二维 数组中的数已在主函数中赋予。-*/#include conio.h#include stdio.h#define M 3#define N 4void fun(int ttMN,int ppN) /*Begin*/int i,j; for(j=0;jN;j+) ppj=tt0j; for(i=1;iM;i+) if(ttijppj) ppj=ttij; /* End */main() int tMN=22,45,56,30,19,33,45,38,20,22,66,40; void NONO(); int pN,i,j,k
5、; printf(The original data is:n); for(i=0;iM;i+) for(j=0;jN;j+) printf(%6d,tij); printf(n); fun(t,p); printf(nThe result is:n); for(k=0;kN;k+) printf(%4d,pk); printf(n); NONO();/*-【程序设计】1685-功能:能计算从1开始到n的自然数的和,n由键盘输入, 并在main()函数中输出。-*/#include stdio.h int fun(int n) /*Begin*/ int sum=0,i;for(i=1;i=n
6、;i+) sum=sum+i;return(sum); /* End */main() int m; void TestFunc(); printf(Enter m: ); scanf(%d, &m); printf(nThe result is %dn, fun(m); TestFunc(); /*-【程序设计】1599-功能:调用函数fun判断一个三位数是否水仙花数。 在main函数中从键盘输入一个三位数,并输 出判断结果。请编写fun函数。说明:所谓水仙花数是指一3位数,其各位数字立方和 等于该数本身。例如:153是一个水仙花数,因为153=1+125+27。-*/#include st
7、dio.hint fun(int n) /*Begin*/ int bw,sw,gw;bw=n/100;sw=(n-bw*100)/10;gw=n%10; if(n=bw*bw*bw+sw*sw*sw+gw*gw*gw) return 1; else return 0; /* End */main() int n,flag; scanf(%d,&n); flag=fun(n); if(flag) printf(%d 是水仙花数n,n); else printf(%d 不是水仙花数n,n); TestFunc();/*-【程序设计】-功能:编写函数sum(int m,int n),求出mn之间(
8、包括m和n,mn)能同时 被3和5整除的数的和,并将这些数的和作为返回值。-*/#include stdio.hint sum(int m,int n) /*Begin*/ int i, s=0; for(i=m;i=n;i+) if(i%3=0 & i%5=0)s+=i; return s; /* End */main() void TestFunc(); int m=15,n=300; printf(sum=%dn,sum(m,n); TestFunc();/*-【程序设计】-功能:求5行5列矩阵的主、副对角线上元素之和。注意, 两条对角线相交的元素只加一次。例如:主函数中给出的矩阵的两条
9、对角线的和为45。-*/#include stdio.h#define M 5int fun(int aMM) /*Begin*/ int i, s=0; for(i=0;iM;i+) s+=aii+aiM-i-1; s-=a(M-1)/2(M-1)/2; return s; /* End */main() int aMM=1,3,5,7,9,2,4,6,8,10,2,3,4,5,6,4,5,6,7,8,1,3,4,5,6; int y; y=fun(a); printf(s=%dn,y); TestFunc();/*-【程序设计】-功能:根据整型形参m,计算如下公式的值: y=1/5+1/6
10、1/71/81/9+1/10.1/(m+5)例如:若m=9,则应输出:1.168229-*/#include stdio.hdouble fun(int m) /*Begin*/ int i; double y=0; for(i=0;i=m;i+) y+=1./(i+5); return y; /* End */main() int n; void TestFunc(); printf(Enter n: ); scanf(%d, &n); printf(nThe result is %1fn, fun(n); TestFunc(); /*-【程序设计】-功能:求一批数中最大值和最小值的积。-*
11、/#define N 30#include stdlib.h#include stdio.hint max_min(int a,int n) /*Begin*/ int i, max, min; max=min=a0; for(i=1;imax) max=ai; if(aimin) min=ai; return max*min; /* End */main() int aN,i,k; void TestFunc(); for(i=0;iN;i+) ai=rand()%51+10; for(i=0;iN;i+) printf(%5d,ai); if(i+1)%5=0) printf(n); k=
12、max_min(a,N); printf(the result is:%dn,k); /TestFunc();/*-【程序设计】-功能:把20个随机数存入一个数组,然后输出该数组中的 最小值。其中确定最小值的下标的操作在fun函数中 实现,请给出该函数的定义。-*/#include stdio.h#include stdlib.h#define VSIZE 20 int vectorVSIZE ; int fun(int list,int size) /*Begin*/int i,min=0; for(i=1; i listi) min=i; return min; /* End */ mai
13、n() int i; void NONO(); for (i=0;i0) return(k*fun(k-1);else if(k=0)return 1L; /* End */main() int m; void TestFunc(); printf(Enter m: ); scanf(%d, &m); printf(nThe result is %ldn, fun(m); TestFunc(); /*-【程序设计】-功能:用do-while语句求1100的累计和。-*/#include stdio.hlong int fun(int n) /*Begin*/ int i =1, sum =0;
14、 do sum = sum + i; i+; while ( i = n ); return sum; /* End */main () int i=100; void TestFunc(); printf(1100的累加和为:%ldn,fun(i); TestFunc();/*-【程序设计】-功能:编写程序,实现矩阵(3行3列)的转置(即行列互换) 例如:输入下面的矩阵: 100 200 300 400 500 600 700 800 900 程序输出: 100 400 700 200 500 800 300 600 900 -*/#include stdio.hvoid fun(int a
15、rray33) /*Begin*/ int i,j,t; for(i=0; i 3; i+) for(j=0; j i; j+) t=arrayij; arrayij=arrayji; arrayji=t; /*【或】 int i, j, t; for (i=0; i 3; i+) for (j=i+1; j 3; j+) t=arrayij; arrayij=arrayji; arrayji = t;*/ /* End */ main() int i,j; void NONO(); int array33=100,200,300, 400,500,600, 700,800,900; for
16、(i=0; i 3; i+) for (j=0; j 3; j+) printf(%7d,arrayij); printf(n); fun(array); printf(Converted array:n); for (i=0; i 3; i+) for (j=0; j =a & stri 0) s = s/100; t = s%10*sl + t; sl = sl * 10; /* End */return t; main() long s, t,m; void TestFunc(); printf(nPlease enter s:); scanf(%ld, &s); m=fun(s,t);
17、 printf(The result is: %ldn, m); TestFunc();/*-【程序设计】-功能:求出二维数组外围元素之和,作为函数值返回。二 维数组的值在主函数中赋予。-*/#define M 4#define N 5#include stdio.hint fun(int aMN)/*Begin*/int s=0; int i,j; for(i=0;iM;i+) s=s+ai0+aiN-1; for(j=1;jN-1;j+) s=s+a0j+aM-1j; return s;/* End */main() int aMN=1,3,5,7,9,2,4,6,8,10,2,3,4,5
18、,6,4,5,6,7,8; void TestFunc(); int y; y=fun(a); printf(s=%dn,y); TestFunc();/*-【程序设计】-功能:找出一个大于给定整数且紧随这个整数的素数,并 作为函数值返回。-*/#include stdio.h#includeconio.hint fun(int n) /*Begin*/int i,k;for(i=n+1;i+)for(k=2;ki;k+)if(i%k=0)break;if(k=i)return(i); /* End */main() int m; printf(Enter m: ); scanf(%d, &m
19、); printf(nThe result is %dn, fun(m); TestFunc(); /*-【程序设计】-功能:计算并输出给定整数n的所有因子之和(不包括1与自身)。注意:n的值不大于1000。例如:n的值为855时,应输出704。-*/#include stdio.hint fun(int n) /*Begin*/ int s=0,i; for(i=2;in;i+) if(n%i=0)s=s+i; return s; /* End */main() printf(s=%dn,fun(855); TestFunc();/*-【程序设计】-功能:删去一维数组中所有重复的数,只保留不
20、同的数。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如:一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。注意:请勿改动主函数main和其它函数中的任何内容。-*/#include stdio.h#define N 80int fun(int a,int n) /*Begin*/int i,j=1,k=a0; for(i=1;in;i+) if(k!=ai) aj+=ai; k=ai; return j; /* End */main() void T
21、estFunc(); int aN=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10,i,n=20; printf(The original data:n); for(i=0;in;i+) printf(%3d,ai); n=fun(a,n); printf(nnThe data after deleted:n); for(i=0;in;i+) printf(%3d,ai); printf(nn); TestFunc();/*-【程序设计】-功能:用函数求N个10,60上的整数中能被5整除的最大 的数,如存在则返回这个最大值,如果不存在则 返回0。-*/#
22、include stdio.h#include stdlib.h#define N 30int find(int arr,int n) int m=0; /*Begin*/ int i; for(i=0;im) m=arri; if(m=0) return 0; /* End */ return(m);main() int aN,i,k; void TestFunc(); for(i=0;iN;i+) ai=rand()%50+10; for(i=0;iN;i+) printf(%5d,ai); if(i+1)%5=0) printf(n); k=find(a,N); if(k=0) prin
23、tf(NO FOUNDn); else printf(the max is:%dn,k); TestFunc();/*-【程序设计】-a1=1,a2=1/(1+a1),a3=1/(1+a2),an=1/(1+a(n-1)功能:根据整型参数n,计算如图公式的值。-*/#include stdio.h#include conio.hdouble fun(int n) /*Begin*/ int i; double a=0; for (i=1;i=n;i+) a=1./(1+a); return a; /* End */main() int m; void TestFunc(); printf(Enter m: ); scanf(%d, &m); printf(nThe result is %fn, fun(m); TestFunc(); /*-【程序设计】-功能:输入n个数,并求出小于平均值的数的个数。-*/#include stdio.hint average_num(int a,int n) /*Begin*/int i,sum=0,k=0; double average; for(i=0;in