接口:
float Fun( int *p, int n,int *max);
其中 p、n、max 都是用户传入的参数。函数求数组中n个元素的平均值、最大值。最大值通过max带回,函数返回平均值 。
float Fun( int *p, int n,int *max)
{
float sum = 0.0,ave = 0.0;
int i = 0;
*max = 0;
for(i = 0;i<n;i++)
{
sum += *(p+i);
if(*(p+i) > *max)
*max = *(p+i);
}
ave = 1.0*sum/n;
return ave;
}
接口:
int search( int n );
统计给定区间内的三位数中有两位数字相同的完全平方数(如144、676)的个数。
其中传入的参数int n
是一个三位数的正整数(最高位数字非0)。函数search
返回[101, n
]区间内所有满足条件的数的个数。
int Jud(int i)
{
int a,b,c;
a = i%10;
i/=10;
b = i%10;
i/=10;
c = i%10;
if((a==b&&b!=c)||(a==c&&b!=c)||(c==b&&c!=a))
return 1;
else
return 0;
}
int J2(int i)
{
int j = 10;
for(;j<40;j++)
{
if(j*j==i)
return 1;
}
return 0;
}
int search( int n )
{
int i = 101;
int count = 0;
for(;i<=n;i++)
{
if(Jud(i)&&J2(i))
count++;
}
return count;
}
接口:
void f( char *p );
函数f对p指向的字符串进行逆序操作。要求函数f中不能定义任何数组,不能调用任何字符串处理函数。
void f( char *p )
{
char t;
int n = 0;
char *tt = p;
while(*tt!='\0')
{
n++;
tt++;
}
for(int i = 0;i<n;i++)
{
char * t1 = p;
for(int j = 0;j<n-i-1;j++)
{
t = *t1;
*t1 = *(t1+1);
*(t1+1) = t;
t1++;
}
}
}
接口:
char *search( char *s, char *t );
函数search
在字符串s中查找子串t,返回子串t在s中的首地址。若未找到,则返回NULL
。
char *search( char *s, char *t )
{
char *pos = s;
char *s1 = s;
char *s2 = t;
if(*t=='\0')
{
return s;
}
while(*pos!='\0')
{
s1= pos;
s2 = t;
while(*s1 == *s2&& *s2 != '\0')
{
s1++;
s2++;
}
if(*s2== '\0')
return pos;
pos++;
}
return NULL;
}
接口:
int max_len( char *s[], int n );
实现一个函数,用于计算有n个元素的指针数组s中最长的字符串的长度。
其中n个字符串存储在s[]
中,函数max_len
应返回其中最长字符串的长度。
int max_len( char *s[], int n )
{
int max = 0;
int i =0 ;
for(i = 0;i<n;i++)
{
if(strlen(s[i])>max)
max = strlen(s[i]);
}
return max;
}
接口:
int Search(int *p, int n, int k,int *Count);
实现一个函数,该函数采用二分查找法从一个已经升序排序的数组中,查找某个数k。如果找到k, 输出k所在的数组下标(0~n-1)及比较次数。若k不存在,输出-1和比较次数。
其中 p
为数组首地址,n
为数组长度,k
为待查找的数, *Count
为比较次数。
函数返回值:如果k在数组中返回其下标值,没找到返回-1。
int Search(int *p, int n, int k,int *Count)
{
int left = 0,right = n-1,mid;
int i = 0;
*Count = 0;
while(left<=right)
{
mid = (left+right)/2;
(*Count)++;
if(*(p+mid)<k)
{
left = mid+1;
}
else if(*(p+mid)>k)
{
right = mid-1;
}
else
{
return mid;
}
}
return -1;
}
#include
#include
int main()
{
int n;
scanf("%d",&n);
char c[1200][90] ={0};
int max = 0,i,x;
int len[1200] = {0};
for(i = 0;i<n;i++)
{
scanf("%s",c[i]);
len[i] = strlen(c[i]);
if(len[i]>max)
{
max = len[i];
x = i;
}
}
printf("The longest is: %s",c[x]);
return 0;
}
#include
int main()
{
char c[4][26] = {0};
char pr[13] = {0};
for(int i = 0;i<4;i++)
{
scanf("%s",c[i]);
}
for(int j = 0;j<4;j++)
{
for(int k = 0;k<3;k++)
{
pr[3*j+k] = c[j][k];
}
}
pr[12] = '\0';
printf("%s",pr);
return 0;
}
#include
#include
int main()
{
char c[20][20] = {0};
char t[18] = {0};
int i=0,j = 0,k = 0;
while(1)
{
scanf("%s",c[i]);
if(c[i][0]=='#')
break;
i++;
}
for(j=0;j<i-1;j++)
for(k=0;k<i-j-1;k++)
if(strlen(c[k])>strlen(c[k+1]))
{
strcpy(t,c[k]);
strcpy(c[k],c[k+1]);
strcpy(c[k+1],t);
}
for(j=0;j<i;j++)
printf("%s ",c[j]);
return 0;
}