C语言函数习题及答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.编写一个函数fun实现求一个字符串中的英文字母的个数
#include "stdio.h" int fun(char s[]) {int i,n=0; for(i=0;s[i]!='\0';i++) if(s[i]>='A' && s[i]<='Z'|| s[i]>='a' && s[i]<='z')n++; return n; } main() {int n; char s[100]; scanf("%s",s); n=fun(s); printf("\nThe result is :%d\n",n); }
2.编写一个函数fun,实现将一个字符串反序存放。例如:在 主函数中输入字符串“abcdefg”,在调用fun函数后,则应输出 “gfedcba”。 #include <stdio.h>
#include <string.h> #define N 81 char fun(char s[],int n) {int i; char c; for(i=0;i<=(n-1)/2;i++) {c=s[i]; s[i]=s[n-1-i]; s[n-1-i]=c;} } main() { char s [N]; int l; printf("input a string:");gets(s); l=strlen(s); fun(s,l); printf("The new string is :");puts(s); }
7.编写函数,求一组数中最大值出现的位置(如果最大值出现多次, 求出第一次出现的下标即可)。 #include<stdio.h> int 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 max_value position is:%d\n",t); }
10.编写函数fun,该函数的功能是求出小于等于x的所有素数放在数 组y中,素数的个数由函数返回。仅在fun函数体内编写代码即可。
#include "stdio.h" int fun(int x,int y[]) {int i,j,k,m=0; for(j=2;j<=x;j++) { k=1; for(i=2;i<=j-1;i++) if(j%i==0) k=0; if(k)y[m++]=j; } return m; } main() {int x,i,n; int a[1000]; printf("请输入一个整数:"); scanf("%d",&x); n=fun(x,a); for(i=0;i<n;i++) printf("%4d",a[i]); printf("\n");}
3.编写一个函数fun实现字符串连接功能(不允许使用strcat函数)。 #include "stdio.h" #include "string.h" void fun(char s[],char t[]) {int i,j; j=strlen(s); for(i=0;t[i]!='\0';i++) s[j++]=t[i]; s[j]='\0'; } main() {char s[100],t[100]; gets(s);gets(t); fun(s,t); printf("\nThe result is :%s\n",s); }
8.编写函数,对一组数按从小到大的顺序排序(分别用选择法、 顺序法和冒泡法实现)。 #include "stdio.h" void sort(int a[],int n) { int i,j, t; for (i=0;i<n-1;i++) for (j=0;j<n-1-i;j++) if (a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } void main( ) { int array[10],i; for (i=0;i<10;i++) scanf ("%d",&array[i]); sort(array,10); for (i=0;i<10;i++) printf ("%5d",array[i]); printf ("\n");}
11.请编写函数fun,交换一个数组中最大值和最小值的位置,其他元素的位置 不变。要求在主函数中输入(或随机生成)一组数,然后在调用fun函数后,输 出处理后的数据。 #include "stdio.h" #include "time.h" #include "stdlib.h" fun(int y[],int n) {int i,kmax=0,kmin=0,t; for(i=1;i<n;i++) if(y[i]>y[kmax]) kmax=i; else if(y[i]<y[kmin])kmin=i; {t=y[kmax];y[kmax]=y[kmin];y[kmin]=t;} } main( ) { int i, a[10]; srand(time(0)); for(i=0; i<10; i++) a[i]=rand( )%(11)+5; for(i=0; i<10; i++) printf("%5d",a[i]); printf("\n"); fun(a,10); for(i=0; i<10; i++) printf("%5d",a[i]); printf("\n");}
5.编写函数fun,将一个字符串中下标从m的开始的全部字符复制 到另一个字符数组中。在main函数中输入字符串和m的值,并wk.baidu.com 出运行结果。仅在fun函数体内编写代码即可。
#include "stdio.h" void fun(char str1[],char str2[],int m) {int i,j=0; for(i=m;str1[i]!='\0';i++) str2[j++]=str1[i]; str2[j]='\0'; } main() {int i,m; char str1[80],str2[80]; gets(str1);scanf("%d",&m); puts(str1); fun(str1,str2,m); puts(str2); }
6.编写函数fun(str,i,n),从字符串str中删除第i个字符开始的连续n个字符(注
意:str[0]代表字符串的第一个字符)。仅在fun函数体内编写代码即可。
#include "stdio.h" void fun(char str[],int i,int n) { int j; for(j=i+n;str[j]!='\0';j++) str[i++]=str[j]; str[i]='\0'; } main() { char str[80]; int i,n; printf("请输入字符串str的值:\n"); scanf("%s",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.编写函数fun,其功能是将字符串s中下标为奇数的字符删除, 字符串中剩余字符形成的新字符串放在字符数组t中。仅在fun函 数体内编写代码即可。 #include "stdio.h" void fun(char s[],char t[]) {int i,j=0; for(i=0;s[i]!='\0';i++) if(i%2!=0)t[j++]=s[i]; t[j]='\0'; } main() { char s[100],t[100]; printf("\nPlease enter string s:"); scanf("%s",s); fun(s,t); printf("\nThe result is :%s\n",t); }
12.编写函数fun,函数的功能是:求出二维数组周边元素之和,作为函数值返 回。程序的运行结果为75。仅在fun函数的program和end注释行中间编写代码即 #define M 4 可。 #define N 5 #include "stdio.h" int fun(int a[M][N]) { int s=0; int i,j; for(i=0;i<M;i++) for(j=0;j<N;j++) if(i==0)s=s+a[i][j]; else if(i==M-1)s=s+a[i][j]; else if(j==0)s=s+a[i][j]; else if(j==N-1)s=s+a[i][j]; return s; } main() { int a[M][N]={{1,3,5,7,9},{2,4,6,8,10},{2,3,4,5,6},{4,5,6,7,8}}; int y; y=fun(a); printf("s=%d\n",y);}
9.请编写函数fun,实现的功能是:求出能整除x且是偶数的各整数, 并按从小到大的顺序依次存放在y所指定的数组中,这些除数的个数 通过函数返回。仅在fun函数体内编写代码即可。图12-1是输入40后 的运行结果图。 #include "stdio.h" int fun(int x,int y[]) {int i,j=0; for(i=2;i<x;i++) if(x%i==0&&i%2==0)y[j++]=i; return j; } main() {int x,a[100],n,i; printf("请输入一个整数:"); scanf("%d",&x); n=fun(x,a); for(i=0;i<n;i++) printf("%4d",a[i]); printf("\n");}
#include "stdio.h" int fun(char s[]) {int i,n=0; for(i=0;s[i]!='\0';i++) if(s[i]>='A' && s[i]<='Z'|| s[i]>='a' && s[i]<='z')n++; return n; } main() {int n; char s[100]; scanf("%s",s); n=fun(s); printf("\nThe result is :%d\n",n); }
2.编写一个函数fun,实现将一个字符串反序存放。例如:在 主函数中输入字符串“abcdefg”,在调用fun函数后,则应输出 “gfedcba”。 #include <stdio.h>
#include <string.h> #define N 81 char fun(char s[],int n) {int i; char c; for(i=0;i<=(n-1)/2;i++) {c=s[i]; s[i]=s[n-1-i]; s[n-1-i]=c;} } main() { char s [N]; int l; printf("input a string:");gets(s); l=strlen(s); fun(s,l); printf("The new string is :");puts(s); }
7.编写函数,求一组数中最大值出现的位置(如果最大值出现多次, 求出第一次出现的下标即可)。 #include<stdio.h> int 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 max_value position is:%d\n",t); }
10.编写函数fun,该函数的功能是求出小于等于x的所有素数放在数 组y中,素数的个数由函数返回。仅在fun函数体内编写代码即可。
#include "stdio.h" int fun(int x,int y[]) {int i,j,k,m=0; for(j=2;j<=x;j++) { k=1; for(i=2;i<=j-1;i++) if(j%i==0) k=0; if(k)y[m++]=j; } return m; } main() {int x,i,n; int a[1000]; printf("请输入一个整数:"); scanf("%d",&x); n=fun(x,a); for(i=0;i<n;i++) printf("%4d",a[i]); printf("\n");}
3.编写一个函数fun实现字符串连接功能(不允许使用strcat函数)。 #include "stdio.h" #include "string.h" void fun(char s[],char t[]) {int i,j; j=strlen(s); for(i=0;t[i]!='\0';i++) s[j++]=t[i]; s[j]='\0'; } main() {char s[100],t[100]; gets(s);gets(t); fun(s,t); printf("\nThe result is :%s\n",s); }
8.编写函数,对一组数按从小到大的顺序排序(分别用选择法、 顺序法和冒泡法实现)。 #include "stdio.h" void sort(int a[],int n) { int i,j, t; for (i=0;i<n-1;i++) for (j=0;j<n-1-i;j++) if (a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } } void main( ) { int array[10],i; for (i=0;i<10;i++) scanf ("%d",&array[i]); sort(array,10); for (i=0;i<10;i++) printf ("%5d",array[i]); printf ("\n");}
11.请编写函数fun,交换一个数组中最大值和最小值的位置,其他元素的位置 不变。要求在主函数中输入(或随机生成)一组数,然后在调用fun函数后,输 出处理后的数据。 #include "stdio.h" #include "time.h" #include "stdlib.h" fun(int y[],int n) {int i,kmax=0,kmin=0,t; for(i=1;i<n;i++) if(y[i]>y[kmax]) kmax=i; else if(y[i]<y[kmin])kmin=i; {t=y[kmax];y[kmax]=y[kmin];y[kmin]=t;} } main( ) { int i, a[10]; srand(time(0)); for(i=0; i<10; i++) a[i]=rand( )%(11)+5; for(i=0; i<10; i++) printf("%5d",a[i]); printf("\n"); fun(a,10); for(i=0; i<10; i++) printf("%5d",a[i]); printf("\n");}
5.编写函数fun,将一个字符串中下标从m的开始的全部字符复制 到另一个字符数组中。在main函数中输入字符串和m的值,并wk.baidu.com 出运行结果。仅在fun函数体内编写代码即可。
#include "stdio.h" void fun(char str1[],char str2[],int m) {int i,j=0; for(i=m;str1[i]!='\0';i++) str2[j++]=str1[i]; str2[j]='\0'; } main() {int i,m; char str1[80],str2[80]; gets(str1);scanf("%d",&m); puts(str1); fun(str1,str2,m); puts(str2); }
6.编写函数fun(str,i,n),从字符串str中删除第i个字符开始的连续n个字符(注
意:str[0]代表字符串的第一个字符)。仅在fun函数体内编写代码即可。
#include "stdio.h" void fun(char str[],int i,int n) { int j; for(j=i+n;str[j]!='\0';j++) str[i++]=str[j]; str[i]='\0'; } main() { char str[80]; int i,n; printf("请输入字符串str的值:\n"); scanf("%s",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.编写函数fun,其功能是将字符串s中下标为奇数的字符删除, 字符串中剩余字符形成的新字符串放在字符数组t中。仅在fun函 数体内编写代码即可。 #include "stdio.h" void fun(char s[],char t[]) {int i,j=0; for(i=0;s[i]!='\0';i++) if(i%2!=0)t[j++]=s[i]; t[j]='\0'; } main() { char s[100],t[100]; printf("\nPlease enter string s:"); scanf("%s",s); fun(s,t); printf("\nThe result is :%s\n",t); }
12.编写函数fun,函数的功能是:求出二维数组周边元素之和,作为函数值返 回。程序的运行结果为75。仅在fun函数的program和end注释行中间编写代码即 #define M 4 可。 #define N 5 #include "stdio.h" int fun(int a[M][N]) { int s=0; int i,j; for(i=0;i<M;i++) for(j=0;j<N;j++) if(i==0)s=s+a[i][j]; else if(i==M-1)s=s+a[i][j]; else if(j==0)s=s+a[i][j]; else if(j==N-1)s=s+a[i][j]; return s; } main() { int a[M][N]={{1,3,5,7,9},{2,4,6,8,10},{2,3,4,5,6},{4,5,6,7,8}}; int y; y=fun(a); printf("s=%d\n",y);}
9.请编写函数fun,实现的功能是:求出能整除x且是偶数的各整数, 并按从小到大的顺序依次存放在y所指定的数组中,这些除数的个数 通过函数返回。仅在fun函数体内编写代码即可。图12-1是输入40后 的运行结果图。 #include "stdio.h" int fun(int x,int y[]) {int i,j=0; for(i=2;i<x;i++) if(x%i==0&&i%2==0)y[j++]=i; return j; } main() {int x,a[100],n,i; printf("请输入一个整数:"); scanf("%d",&x); n=fun(x,a); for(i=0;i<n;i++) printf("%4d",a[i]); printf("\n");}