目录
1.编写函数fun,功能是:计算n门课程的平均值,计算结果作为函数值返回。 例如,若有5门课程的成绩是:92,76,69,58,88,则函数的值为76.599998。
2. 用函数将一个N阶方阵进行转置,输入输出在主函数中实现。(使用for循环实现)
3.编写函数fun(str,i,n),从字符串str中删除第i个字符开始的连续n个字符。注:str[0]代表字符串的第一个字符)。(使用while循环实现
4.用辗转相除法求两个整数的最大公约数。(使用while循环实现)
5.编写函数fun(n),函数的功能是求n!。主函数的功能是计算: x!+y!+z! 的值。(同类型题:2!+4!+6!+8!+10!或者 3!+5!+7!+9!+11!)
6. 用函数将两个字符串连接起来,不允许使用strcat函数。(使用for循环实现)
7.编写函数fun求一个不多于5位的正整数的位数,该数在主函数中输入,并在主函数中输出结果。
8.从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。请编写fun函数。
9.求一批数中小于平均值的数的个数。(使用for循环实现)(同类型题:求一批正整数中最大的偶数或奇数。或者 求一组数中最小的数或者最大的数)
10.学生的记录由学号和成绩组成。N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
11.函数fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。 可调用len求字符串长度。
12. 函数fun,将M行N列的二维数组中字符数据按列的顺序依次放到一个字符串中
13. 函数sort:冒泡法,对数组中的10个数据,从小到大排序,在主函数中输出
14.将字符串中的小写字母转换为对应的大写字母,其它字符不变。
15.编写函数fun生成一个主对角线元素为1,其他元素都为0的3*3的二维数组
16.编写函数求1~100(闭区间)中奇数的平方和。结果为166650
17. 求一批数中最大值和最小值的差。(和、乘积)
18.给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)
19. 编写函数fun求1的K次方到N的K次方的累加和
20.编写函数fun,函数的功能是:求给定正整数m(包括m)以内的素数之和。例如:当m=20时,函数值为77。
21. 编写函数fun,函数的功能是:求一个给定字符串中的字母的个数。(使用for循环实现)
22.编写函数fun,函数的功能是:计算并输出给定整数n的所有因子之和(不包括1与自身)。规定n的值不大于1000。例如:n的值为855时,应输出704。
23. 用函数求fibonacci数列前28项的和。 已知数列的第一项值为1,第二项值也为1,从第三项开始,每一项均为其前面相邻两项的和。运行结果:832039
24. 编写函数fun,函数的功能是:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。例如:求前20项之和的值为32.660259
1.编写函数fun,功能是:计算n门课程的平均值,计算结果作为函数值返回。 例如,若有5门课程的成绩是:92,76,69,58,88,则函数的值为76.599998。
#include "stdio.h"float fun(int a[],int n){int i,sum=0;float ave;for(i=0;i<n;i++)sum=sum+a[i]; ave=sum/n;return ave;}int main(){int a[]={92,76,69,58,88};printf("y=%f\n",fun(a,5));}
运行结果:
2. 用函数将一个N阶方阵进行转置,输入输出在主函数中实现。(使用for循环实现)
#include "stdio.h"#include #define N 4void inv(int a[][N]){int i,j,k;for(i=0;i<N;i++)for(j=0;j<=i;j++){k=a[i][j];a[i][j]=a[j][i];a[j][i]=k;} }int main(){int a[N][N],i,j; for(i=0;i<N;i++) { for(j=0;j<N;j++){a[i][j]=rand()%10+20;//随机产生0~20的整数 printf("%3d",a[i][j]);} printf("\n");}printf("=============\n");inv(a);for(i=0;i<N;i++){for(j=0;j<N;j++)printf("%3d",a[i][j]); printf("\n");}}
运行结果:
3.编写函数fun(str,i,n),从字符串str中删除第i个字符开始的连续n个字符。注:str[0]代表字符串的第一个字符)。(使用while循环实现
#include "stdio.h"#includevoid fun(char str[],int i,int n){while(str[i+n-1]){str[i-1]=str[i+n-1];i++;}str[i-1]='\0';}int main(){charstr[81];int i,n;printf("请输入字符串str的值:\n");scanf("%s",str);printf("你输入的字符串str是:%s\n",str);printf("请输入删除位置i和待删字符个数n的值:\n");scanf("%d%d",&i,&n);while (i+n-1>strlen(str)){ printf("删除位置i和待删字符个数n的值错!请重新输入i和n的值\n"); scanf("%d%d",&i,&n); }fun(str,i,n);printf("删除后的字符串str是:%s\n",str);}
运行结果:
4.用辗转相除法求两个整数的最大公约数。(使用while循环实现)
#includeint gcd(int n,int m){int r,t;if(n<m) { t=n;n=m;m=t;}r=n%m;while(r!=0){ n=m;m=r;r=n%m;}return(m);}int main(){ int n,m,result; scanf("%d%d",&n,&m); result=gcd(n,m); printf("the gcd is %d\n",result); }
运行结果:
5.编写函数fun(n),函数的功能是求n!。主函数的功能是计算: x!+y!+z! 的值。(同类型题:2!+4!+6!+8!+10!或者 3!+5!+7!+9!+11!)
#include "stdio.h"long fun(int n){int i;long f=1;for(i=1;i<=n;i++)f=i*f;return f;}int main(){int x,y,z; long sum=0.0; printf("Enter x,y,z:"); scanf("%d%d%d",&x,&y,&z); sum=fun(x)+fun(y)+fun(z); printf("Sum=%ld\n",sum);return 0; }
运行结果:
6. 用函数将两个字符串连接起来,不允许使用strcat函数。(使用for循环实现)
#include "stdio.h"void len_cat(char c1[],char c2[]){int i,j;for(i=0;c1[i]!='\0';i++);for(j=0;c2[j]!='\0';j++)c1[i+j]=c2[j];c1[i+j]='\0'; }int main(){char s1[80],s2[40]; gets(s1);gets(s2); len_cat(s1,s2); printf("string is: %s\n",s1);return 0; }
运行结果:
7.编写函数fun求一个不多于5位的正整数的位数,该数在主函数中输入,并在主函数中输出结果。
#include "stdio.h"int fun(int m) {int c=0 ;while(m>0) {m/=10;c++;}return c;}int main(){ long int num;int ws;printf("输入一个不多于5位的整数:");scanf("%ld",&num);ws=fun(num);printf("%ld是一个%d位数\n",num,ws);return 0;}
运行结果:
8.从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。请编写fun函数。
#include "stdio.h"int fun(int x[],int n){int i,min;min=x[0];for(i=1;i<n;i++) if(x[i]<min) min=x[i];return min;}int main(){ int a[10],i,min; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%3d",a[i]); printf("\n"); min=fun(a,10); printf("%d\n",min);return 0;}
运行结果:
9.求一批数中小于平均值的数的个数。(使用for循环实现)(同类型题:求一批正整数中最大的偶数或奇数。或者 求一组数中最小的数或者最大的数)
#includeint average_num(int a[],int n){int i,sum=0,k=0;float average;for(i=0;i<n;i++)sum=sum+a[i];average=sum*1.0/n;for(i=0;i<n;i++)if(average
运行结果:
10.学生的记录由学号和成绩组成。N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
#include #define N 12typedefstruct{charnum[10];ints;} STREC;doublefun( STREC*a, STREC *b, int *n ){int i,j=0;double sum=0.0;double avg;for(i=0;i<N;i++){sum+=a[i].s;}avg=sum/N;for(i=0;i=avg) b[j++]=a[i]; }*n=j;return avg;}int main(){ STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA09",60},{"GA11",79},{"GA12",73},{"GA10",90}};STRECh[N]; int i, n;doubleave;ave=fun( s,h,&n );printf("The %d student data which is higher than %7.3f:\n",n,ave);for(i=0;i<n; i++)printf("%s%d\n",h[i].num,h[i].s);printf("\n");return 0;}
运行结果:
11.函数fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。 可调用len求字符串长度。
#includelong fun(char *s){long r = 0;while (*s != '\0'){r = r * 10 + (*s - '0');s++;}return r;}int main(){printf("%ld\n",fun("2345210"));return 0; }
运行结果:
12. 函数fun,将M行N列的二维数组中字符数据按列的顺序依次放到一个字符串中
#include #define M 3#define N 4char *fun(char s[M][N],char *t){int i,j,k=0;for(i=0;i<N;i++){for(j=0;j<M;j++){t[k++]=s[j][i];}}t[k]='\0';return t;}int main() {char s[M][N]={'W','W','W','W','S','S','S','S','H','H','H','H'};int i,j,d=M*N;char t[d];printf("二维数组内容为:\n");for(i=0;i<M;i++){ for(j=0;j<N;j++){printf("%c ",s[i][j]);}printf("\n");}printf("结果为:%s",fun(s,t));return 0;}
运行结果:
13. 函数sort:冒泡法,对数组中的10个数据,从小到大排序,在主函数中输出
#include "stdio.h"void sort(int a[],int n){int i,j,t;for(i=0;i<n-1;i++)for(j=0;ja[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}}int main(){int a[10]={34,67,90,43,124,87,65,99,132,26};int i;sort(a,10);for(i=0;i<10;i++) printf("%4d",a[i]);printf("\n");return 0;}
运行结果:
14.将字符串中的小写字母转换为对应的大写字母,其它字符不变。
#include "string.h"#include "stdio.h"void change(char str[]){int i;for(i=0;str[i]!='\0';i++)if(str[i]>='a'&& str[i]<='z') str[i]=str[i]-32;}int main(){ char str[40]; gets(str); change(str); puts(str);return 0; }
运行结果:
15.编写函数fun生成一个主对角线元素为1,其他元素都为0的3*3的二维数组
#include "stdio.h"void fun(int arr[][3]){int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)if(i==j)arr[i][j]=1;elsearr[i][j]=0;}int main(){ int a[3][3],i,j;fun(a);for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%d ",a[i][j]); printf("\n"); } }
运行结果:
16.编写函数求1~100(闭区间)中奇数的平方和。结果为166650
#include "stdio.h"float sum(int n){int i;float s=0;for(i=1;i<=n;i+=2) s+=i*i;return s; }int main(){printf("sum=%f\n",sum(100));return 0;}
运行结果:
17. 求一批数中最大值和最小值的差。(和、乘积)
#define N 30#include "stdlib.h"#include "stdio.h"int max_min(int a[],int n){int i,max,min;max=min=a[0];for(i=1;imax) max=a[i];else if(a[i]<min) min=a[i];return (max-min);}main(){ int a[N],i,k;for(i=0;i<N;i++) a[i]=rand()%(51)+10; for(i=0;i<N;i++){printf("%5d",a[i]); if((i+1)%5==0) printf("\n"); } k=max_min(a,N); printf("the result is:%d\n",k);}
运行结果:
18.给定n个数据, 求最小值出现的位置(如果最小值出现多次,求出第一次出现的位置即可)
#includeint station(int s[],int n){int i,k;k=0;for(i=1;i<n;i++)if(s[i]<s[k]) k=i;return(k+1);}main(){ int a[100],n,i,t;scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); t=station(a,n); printf("the min_value position is:%d\n",t); }
运行结果:
19. 编写函数fun求1的K次方到N的K次方的累加和
#define K 4#define N 5#include "stdio.h"longfun(int n,int k){long power,sum=0;int i,j;for(i=1;i<=n;i++){ power=i;for(j=1;j<k;j++)power *= i;sum += power;}return sum;}main(){ long int sum;printf("Sum of %d powers of integers from 1 to %d = ",K,N);sum=fun(N,K);printf("%ld\n",sum);}
运行结果:
20.编写函数fun,函数的功能是:求给定正整数m(包括m)以内的素数之和。例如:当m=20时,函数值为77。
#include "stdio.h"int fun(int m){int i,k,s=0;for(i=2;i<=m;i++){for(k=2;k<i;k++) if(i%k==0)break; if(k==i) s=s+i;} return s;}int main(){int y;y=fun(20);printf("y=%d\n",y);return 0;}
运行结果:
21. 编写函数fun,函数的功能是:求一个给定字符串中的字母的个数。(使用for循环实现)
#include "stdio.h"int fun(char s[]){int i,k=0;for(i=0;s[i]!='\0';i++) if(s[i]>='a'&&s[i]='A'&&s[i]<='Z')k++;return k;}int main(){char str[]="Best wishes for you!";int k;k=fun(str);printf("k=%d\n",k);return 0;}
运行结果:
22.编写函数fun,函数的功能是:计算并输出给定整数n的所有因子之和(不包括1与自身)。规定n的值不大于1000。例如:n的值为855时,应输出704。
#include "stdio.h"int fun(int n){int s=0,i;for(i=2;i<n;i++)if(n%i==0) s=s+i;return s;}int main(){printf("s=%d\n",fun(855));return 0;}
运行结果:
23. 用函数求fibonacci数列前28项的和。 已知数列的第一项值为1,第二项值也为1,从第三项开始,每一项均为其前面相邻两项的和。运行结果:832039
#include "stdio.h"long sum(long f1,long f2){long f,k=f1+f2;int i;for(i=3;i<=28;i++){f=f1+f2;k=k+f;f1=f2;f2=f;}return(k); }int main(){long int f1=1,f2=1; printf("sum=%ld\n",sum(f1,f2)); return 0; }
运行结果:
24. 编写函数fun,函数的功能是:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。例如:求前20项之和的值为32.660259
#include "stdio.h"float fun(int n){int i;float f1=1,f2=1,f3,s=0;for(i=1;i<=n;i++){f3=f1+f2;f1=f2;f2=f3;s=s+f2/f1;}return s;}int main(){float y;y=fun(20);printf("y=%f\n",y);return 0;}
运行结果: