1 从传入的num个字符中找出最长一个字符串,并通过形参指针max传回该串地址(用**作为结束标识符)
#include
#include
#define MAX 100
void fun(char(*a)[81], int num, char **max)
{
int i = 0;
*max = a[0];
for (i = 0; i < num; i++)
if (strlen(*max) < strlen(a[i]))
*max = a[i];
}
int main()
{
char ss[10][81], *ps;
int n, i = 0;
printf("输入若干各字符串:\n");
gets(ss[i]);
puts(ss[i]);
while (!strcmp(ss[i], "****") == 0)
{
i++;
gets(ss[i]);
puts(ss[i]);
}
n = i;
fun(ss, n, &ps);
printf("\nmax=%s\n", ps);
printf("\n");
}
2 请编写一个函数,用来删除字符串中的所有空格
#include
void fun(char *str)
{
int i = 0;
char *p = str;
while (*p)
{
if (*p !=' ') //删除空格
str[i++] = *p;
p++;
}
str[i] = '\0'; //加上结束符
}
int main()
{
char str[81] = "welcome to Beijing";
fun(str);
printf("%s\n", str);
}
3 判断字符串是否为回文,若是,则返回1,否则返回0。例如字符串LEVEL是回文,而字符串123312就不是回文
#include
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 - 1 - i])
{
fg = 0;
break;
}
}
return fg;
}
int main(){
char str1[256] = "LEVEL";
char str2[256] = "123312";
if (fun(str1))printf("YES\n");
else printf("NO\n");
if (fun(str2))printf("YES\n");
else printf("NO\n");
}
4 编写函数fun,其功能是:根据以下公式计算s并计算结果作为函数返回值返回,n通过形参传入。s=1+1/(1+2)+1/(1+2+3)+1/1+2+3+…n
float fun(int n)
{
int i, s1 = 0;
float s = 0.0;
for (i = 1; i <= n;i++)
{
s1 = s1 + i; //求每一项的分母
s = s + 1.0 / s1; //求多项式的值
}
return s;
}
5 编写函数fun,其功能是:将s所指字符串中ASCII值为奇数的字符删除,剩余字符形成新串放在t所指数组中。
void fun(char *s, char t[])
{
int i, j = 0, n;
n = strlen(s);
for (i = 0; i < n; i++)
{
if (s[i] % 2 == 0)
{
t[j] = s[i];
j++;
}
}
t[j] = '\0';
}
6 删除一维数组中所有相同的数,使之只剩一个,数组中的数已按由小到大的顺序排列,函数返回删除后数组中的数据个数。
#include
int fun(int a[],int n)
{
int i,j=1;
for(i=1;iif(a[j-1]!=a[i]) //若该数与前一个数不相同,则要保留
a[j++]=a[i];
}
return j; //返回不同数的个数
}
void main(){
int arr[19]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10};
int res = 0;
res = fun(arr,19);
printf("%d\n",res);
}
7 规定输入的字符串中只包含字母和号。编写函数fun,其功能是:除了字符串前导和尾部的号外,将串中其它的*号全部删除。形参h已指向字符串中的第一个字母,形参p指向字符串中的最后一个字母。在编写函数时不得使用C语言提供的字符串函数。
#include
void fun(char *a,char *h,char *p)
{
int i=0;
char *q=a;
while(qwhile(qif(*q!='*') {
a[i]=*q;
i++;
}
q++;
}
while(*q)
{
a[i]=*q;i++;q++;
}
a[i]='\0';
printf("%s\n",a);
}
void main(){
char str[256]="****A*BC*DEF*G*******";
fun(str,str+4,str+14);
}
8 编写函数fun,其功能是:计算并输出3-n之间所有素数的平方根之和
当输入100后 输出为sum=148.874270
#include
#include
double fun(int n)
{
int m,k,i;
double s=0.0;
for(m=3;m<=n;m++)
{
k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
s+=sqrt(m);
}
return s;
}
void main(){
int n=100;
printf("%f\n",fun(n));
}
9 请编写函数fun,该函数的功能是:计算并输出
S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+…+(1+2^0.5+3^0.5+…n^0.5)
当输入20后,则输出结果为S=534.188884
答案一:
#include
#include
double fun(int n)
{
int i;
double s=0.0,s1=0.0;
for(i=1;i<=n;i++)
{
s1=s1+pow(i,0.5);
s=s+s1;
}
return s;
}
void main(){
int n=20;
printf("%f\n",fun(n));
}
答案二:
#include
#include
double fun(int n)
{
double sum=1.0;
double temp=1.0;
for(int i=2;i<=n;i++)
{
temp=1.0;
for(int j=2;j<=i;j++)
temp+=pow(j,0.5);
sum+=temp;
}
return sum;
}
void main(){
int n=20;
printf("%f\n",fun(n));
}
10 请编写函数fun(),它的功能是计算:s=(ln(1)+ln(2)+ln(3)+…+ln(m))0.5。在C语言中可调用log(n)函数求ln(n)。例如,若m的值为20,则fun()函数值为6.506583。
#include
#include
double fun(int m)
{
int i;
double s=0.0;
for(i=1; i<=m; i++)
s=s+ log(i); //计算s=ln(1)+ln(2)+ln(3)+…+in(m)
s=sqrt(s); //对s求平方根
return s;
}
void main(){
int n=20;
printf("%f\n",fun(n));
}