用递归法将一个整数转换成字符串。例如,输入12345,应输出字符串"54321"。n的位数不确定,可以是任意的整数。
#include<stdio.h>
void fun(int n,char *s)
{
int r;
if(n<10)
*s=n+'0';
else
{
r=n%10;
*s=r+'0';
*s++;
fun(n/10,s);
}
}
main()
{
int n,i;
static char a[80];
scanf("%d",&n);
fun(n,a);
puts(a);
}
#include<stdio.h>
void fun(char *p)
{
if(*p=='\0')
return;
fun(p+1);
printf("%c",*p);
}
int main()
{
char s[100];
scanf("%s",s);
char *q=s;
fun(q);
printf("\n");
}
编写函数delete(char *s,char c),其功能是在字符串s删除指定的字符c
#include<stdio.h>
int deletes(char *s,char c)
{
char *q=s;
for(;*s!='\0';s++)
if(*s!=c)*q++=*s;
*q=*s;
}
int main()
{
char a[100],c;
printf("Input a string:\n");
gets(a);
printf("Delete char:");
scanf("%c",&c);
deletes(a,c);
puts(a);
}
7.编写函数hwc(char *s),函数的功能是判断字符串s是否为回文串,若是返回1,否则返回0。
#include<stdio.h>
#include<stdlib.h>
#define N 80
int fun(char *str)
{
int i,n=0,fg=1;
char *p=str;
while(*p)
{
n++;
p++;
}
for(i=0;i<n/2;i++)
if(str[i]==str[n-i-1]);
else
{
fg=0;
break;
}
return fg;
}
int main()
{
char s[N];
printf("Enter a string:");
gets(s);
printf("\n");
puts(s);
if(fun(s))
printf("YES!\n");
else
printf("NO\n");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void IsSymmetrical(char *str)
{
char *begin, *end;
int flag, len = strlen(str);
for (begin=str, end=str+len-1, flag=1; begin<=end; begin++, end--)
{
if (*begin != *end)
{
flag = 0;
break;
}
}
if (flag)
printf("Yes!\n");
else
printf("No!\n");
}
int main(void)
{
char str[100];
printf("Input a string:");
while (gets(str))
{
IsSymmetrical(str);
}
return 0;
}
4.编写函数,功能是计算n个学生的成绩中,高于平均成绩的人数,并作为函数值。用主函数来调用它,统计50个学生成绩中,高于平均成绩的有多少人?
#include<stdio.h>
int main()
{
int fun(int *p,int n);
int a[50],i,sum=0,ave;
for(i=0;i<50;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
ave=sum/50;
printf("%d\n",fun(a,ave));
}
int fun(int *p,int n)
{
int i,m=0;
for(i=0;i<50;i++)
if(p[i]>n)
m++;
return m;
}
5.编写函数,是将给定的一个二维数组(如4×4)转置,即行列互换。
#include <stdio.h>
void zhihuan(int (*p)[4]);
int main()
{
int b[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
for(int i=0;i<4;i++)
{
for(int j=0;j<4;j++)
printf("%d\t",b[i][j]);
printf("\n");
}
printf("行列置换后的数组是:\n");
zhihuan(b);
for(i=0;i<4;i++)
{
for(int j=0;j<4;j++)
printf("%d\t",b[i][j]);
printf("\n");
}
return 0;
}
void zhihuan(int (*p)[4])
{
int i,j;
int t[4][4];
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
t[i][j] = p[i][j];
}
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
p[i][j]=t[j][i];
}
}