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;
}
相关文章
|
安全 数据安全/隐私保护 C++
C/C++基础知识——字符串(二)
C/C++基础知识——字符串
456 0
PTA-二维数组中每行最大值和每行和
该代码段读取一个3x3二维数组的输入,计算每行的最大值和元素和,并按照指定格式输出。给定输入示例为`3 6 5 9 8 2 1 4 5`,输出格式化后的结果为: ``` 3 6 5 6 14 9 8 2 9 19 1 4 5 5 10 ``` 代码首先使用`map(int, input().split())`将输入转换为整数列表,然后通过循环处理每行,计算每行的最大值(`max(s)`)和元素和(`sum(s)`),并使用`f-string`格式化输出,每个数据占4列。
205 1
|
存储 Java C++
手撕双链表
手撕双链表
75 0
|
开发工具
字符串最大跨距
字符串最大跨距
298 0
|
7天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
1天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。
|
6天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
|
6天前
|
云安全 人工智能 自然语言处理
阿里云x硅基流动:AI安全护栏助力构建可信模型生态
阿里云AI安全护栏:大模型的“智能过滤系统”。
|
Linux 虚拟化 iOS开发
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
VMware Workstation Pro 25H2 for Windows & Linux - 领先的免费桌面虚拟化软件
1110 4