PTA:C课程设计(5)

简介: PTA:C课程设计(5)

函数题


5-6-1 求一组数中的平均值及最大值

接口:

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;
}


5-6-2 判断满足条件的三位数

接口:

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;
}


5-6-3 函数实现字符串逆序

接口:

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++;
        }
    }
}


5-6-4 查找子串

接口:

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;
}


5-6-5 计算最长的字符串长度

接口:

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;
}


5-6-6 二分查找

接口:

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;
}


编程题


5-7-1 找最长的字符串


#include<stdio.h>
#include<string.h>
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;
}


5-7-2 藏头诗

注意这里规定一个汉字占三字节

#include<stdio.h>
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;
}


5-7-3 英文单词排序


#include<stdio.h>
#include<string.h>
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;
}
相关文章
|
人工智能 算法 Serverless
算法竞赛入门【码蹄集新手村600题】(MT1301-1350)
算法竞赛入门【码蹄集新手村600题】(MT1301、MT1302、MT1303、MT1304、MT1305......MT1350)
798 2
算法竞赛入门【码蹄集新手村600题】(MT1301-1350)
|
算法
算法竞赛入门【码蹄集新手村600题】(MT1151-1200)
算法竞赛入门【码蹄集新手村600题】(MT1151、MT1152、MT1153、MT1154、MT1155......MT1200)
604 1
算法竞赛入门【码蹄集新手村600题】(MT1151-1200)
|
测试技术 C++
【PTA天梯赛】L1-001 L1-002 L1-003 L-004 L-005 L-006 L-007 L-008 L-009 L1-010 c++
【PTA天梯赛】L1-001 L1-002 L1-003 L-004 L-005 L-006 L-007 L-008 L-009 L1-010 c++
210 1
|
存储
PTA:C课程设计(7)
PTA:C课程设计(7)
121 0
PTA:C课程设计(2)
PTA:C课程设计(2)
89 0
PTA:C课程设计(4)
PTA:C课程设计(4)
61 0
PTA:C课程设计(6)
PTA:C课程设计(6)
120 0
|
存储 人工智能
PTA:C课程设计(3)
PTA:C课程设计(3)
154 0
PTA:C课程设计(1)
PTA:C课程设计(1)
122 0
|
机器学习/深度学习 人工智能 JavaScript