1. 编写交换两个变量值的函数,并调用该函数交换主函数中两个变量的值(不能使用全局变量传递数据)。
voidswap(int *p1,int *p2)
{int t;
t=*p1;
*p1=*p2;
*p2=t;
}
main()
{int a,b;
scanf("%d%d",&a,&b);
swap(&a,&b);
printf("a=%d,b=%d\n",a,b);
}
2. 编写交换两个变量值的函数,并调用该函数对三个数按升序排序(不能使用全局变量传递数据)。
voidswap(float *p,float *q)
{float t;
t=*p;
*p=*q;
*q=t;
}
main()
{float a,b,c;
scanf("%f%f%f",&a,&b,&c);
if(a>b) swap(&a,&b);
if(a>c) swap(&a,&c); /*不能写作else if(a>c)*/
if(b>c) swap(&b,&c); /*不能写作else if(b>c)*/
printf("%f,%f,%f\n",a,b,c);
}
3. 编写求两个数中最大数的函数,并调用该函数求出主函数中两个数中的最大数(不能使用全局变量或return语句传递数据)。
void max(int x,int y,int *p)
{int m;
if(x>y)
m=x;
else
m=y;
*p=m;
}
main()
{int a,b,r;
scanf("%d%d",&a,&b);
max(a,b,&r);
printf("r=%d\n",r);
}
4. 编写求三个数中最大数的函数,并调用该函数求出主函数中三个数中的最大数(不能使用全局变量或return语句传递数据)。
void max(int x,int y,int z,int*p)
{int m;
if(x>y)
m=x;
else
m=y;
if(z>m)
m=z;
*p=m;
}
main()
{int a,b,c,r;
scanf("%d%d%d",&a,&b,&c);
max(a,b,c,&r);
printf("r=%d\n",r);
}
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)
{float s=0,r;
int i;
for(i=0;i<n;i++)
{s=s+*(p+i);}
r=s/n;
return(r);
}
main()
{float a[100],pj;
int i;
for(i=0;i<n;i++)
{scanf("%f",a+i);}
pj=ave(a,100);
printf("pj=%f\n",pj);
}
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)
{while(*a!='\0')
{*b=*a; /*未复制'\0'*/
a++;b++;
}
*b='\0';
}
main()
{char a[80],b[80];
gets(a);
scopy(b,a);
puts(b);
}
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)
{while(*a!='\0')
a++;
while(*b!='\0')
{*a=*b; /*未复制'\0'*/
a++;b++;
}
*a='\0';
}
main()
{char a[80],b[80];
gets(a);
gets(b);
scat(a,b);
puts(a);
}
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)
{char t,*q;
int n;
n=strlen(p);
q=p+n-1;
while(p<q)
{t=*p;*p=*q;*q=t; /*交换对应元素的值*/
p++;q--;
}
}
main()
{char a[80];
gets(a);
srev(a)
puts(a);
}
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");
}
联系客服