1. 编写交换两个变量值的函数,并调用该函数交换主函数中两个变量的值(不能使用全局变量传递数据)。 voidswap(int *p1,int *p2) 2. 编写交换两个变量值的函数,并调用该函数对三个数按升序排序(不能使用全局变量传递数据)。 voidswap(float *p,float *q) 3. 编写求两个数中最大数的函数,并调用该函数求出主函数中两个数中的最大数(不能使用全局变量或return语句传递数据)。 void max(int x,int y,int *p) 4. 编写求三个数中最大数的函数,并调用该函数求出主函数中三个数中的最大数(不能使用全局变量或return语句传递数据)。 void max(int x,int y,int z,int*p) 5. 编写求n个数平均值的函数,并调用此函数求从键盘输入的100个数的平均值。 float ave(float a[],int n) {float s=0,p; int i; for(i=0;i<n;i++) {s=s+a[i];} p=s/n; return(p); } main() {float x[100],p; int i; for(i=0;i<100;i++) {scanf("%f",&x[i]);} p=ave(x,100); printf("p=%f\n",p); } 6. 编写求n个数平均值的函数,并调用此函数求从键盘输入的100个数的平均值(要求用指针访问数组元素)。 float ave(float *p,int n) 7. 编写求n个数平均值的函数,并调用此函数找出从键盘输入的100个成绩中所有低于平均分的成绩。 float ave(float a[],int n) {float s=0,p; int i; for(i=0;i<n;i++) {s=s+a[i];} p=s/n; return(p); } main() {float a[100],p; int i; for(i=0;i<100;i++) {scanf("%f",&a[i]);} p=ave(a,100); for(i=0;i<100;i++) {if(a[i]<p) printf("%f,",a[i]); } } 8. 编写求字符串长度的函数,并调用此函数求一个字符串的长度。 int slen(char a[]) {int n=0; while(a[n]!='\0') n++; return(n); } main() {char a[80]; int n; gets(a); n=slen(a); printf("n=%d\n",n); } 9. 编写字符串复制的函数,并调用此函数复制一个字符串。 void scopy(char b[],char a[]) {int i; for(i=0;a[i]!='\0';i++) b[i]=a[i]; /*未复制'\0'*/ b[i]='\0'; } main() {char a[80],b[80]; gets(a); scopy(b,a); puts(b); } 10. 编写字符串复制的函数(要求用指针实现),并调用此函数复制一个字符串。 void scopy(char *b,char *a) 11. 编写连接两个字符串的函数,并调用此函数连接两个字符串。 void scat(char a[],char b[]) {int i,n1,n2; n1=strlen(a); n2=strlen(b); for(i=0;i<=n2;i++) a[n1+i]=b[i]; /*已复制'\0'*/ } main() {char a[200],b[100]; gets(a); gets(b); scat(a,b); puts(a); } 12. 编写连接两个字符串的函数(要求用指针实现),并调用此函数连接两个字符串。 void scat(char *a,char *b) 13. 编写比较两个字符串大小的函数,并调用此函数比较两个字符串的大小。 int scomp(char a[],char b[]) {int i,r; i=0; while(a[i]!='\0'&&b[i]!='\0') /*若遇到'\0',则停止比较*/ {if(a[i]==b[i]) i++; /*若对应字符相等,则继续比较下一个*/ else break; /*若对应字符不相等,则停止比较*/ } r=a[i]-b[i]; /*对应字符ASCII码之差,即比较结果*/ return(r); } main() {char a[80],b[80]; int d; gets(a); gets(b); d=scomp(a,b); printf("d=%d\n",d); } 14. 编写将字符数组中的字符串前后倒置的函数,并调用此函数将一个字符串前后倒置。 void srev(char a[]) {char t; int n,i,j; n=strlen(a); i=0;j=n-1; while(i<j) {t=a[i];a[i]=a[j];a[j]=t; /*交换对应元素的值*/ i++;j--; } } main() {char a[80]; gets(a); srev(a) puts(a); } 15. 编写将一个字符串前后倒置的函数(要求用指针实现),并调用此函数将一个字符串前后倒置。 void srev(char *p) 16. 编写判断回文的函数,并调用此函数判定一个字符串是否是回文。 int isR(char a[]) {int i,j n; n=strlen(a); i=0; j=n-1; while(i<j) {if(a[i]==a[j]) {i++;j--;} /*若对应字符相等,则继续比较*/ else break; /*否则中止比较*/ } if(i>=j) return(1); /*若所有对应字符都相等,则是回文*/ else return(0); } main() {char s[100]; gets(s); if(isR(s)!=0) printf("yes.\n"); else printf("no.\n"); } 17. 编写判断汉字回文的函数,并调用此函数判定一个汉字字符串是否是回文。 int isR(char a[]) {int i,j n; n=strlen(a); i=0; j=n-2; while(i<j) {if(a[i]==a[j]&&a[i+1]==a[j+1]) {i+=2;j-=2;} else break; } if(i>=j) return(1); else return(0); } main() {char s[100]; gets(s); if(isR(s)!=0) printf("yes.\n"); else printf("no.\n"); } |
|