PTA:C课程设计(2)

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

2-5-1 字符定位函数(程序填空题)


在主函数中输入一个字符串和一个字符,调用match函数,如果该字符在字符串中,就从该字符首次出现的位置开始输出字符串中的字符。如果未找到,输出“Not Found”。


本题要求:根据main函数的程序实现,完成match函数的定义。

int main(void )
{
    char ch, str[80], *p = NULL;
    scanf("%s", str);
    getchar(); 
    while((ch = getchar())!='\n')  
    {
    if((p = match(str, ch)) != NULL)  
        printf("%s\n", p);
        else 
            printf("Not Found\n");
    }
    return 0;
}
//1)____________________ (1分)
  /* 字符定位函数定义:match函数*/
{
    while (/*2)________ (1分) */)
    if (*s == ch) 
    //3)__________ (1分) 
   else 
       s++; 
     return //4)__________ (1分); 
}


答案:

1)char* match(char* s,char ch)
2)*s!='\0'
3)return s; 
4) NULL


2-5-2 判断回文(程序填空题)


回文是指正读和反读都一样的字符串,如abcba就是一个回文,

从键盘输入一个字符串判断其是否是回文,如果是则输出"Yes!“,

否则输出"No!”,请填空完成相应功能。


输入输出样例如下:

输入样例1:

abccba

输出样例1:

Yes!

输入样例2:

abcde

输出样例2:

No!

#include <stdio.h>
#include <string.h>
#define N 80
int main(void)
{
  char s[N];
  int i,j;
  gets(s); 
  i=0;
  j = /*1)_________ (1分)*/;
 while(/*2)_________ (1分)*/)
  {
   if(/*3)_________ (1分)*/)
   {
    i++;
    j--;
    }
   else
    break;
}
  if(/*4)_________ (1分)*/)
   printf("Yes!\n");
  else
   printf("No!\n");
 return 0;
}
1)strlen(s)-1
2)i<j
3)s[i] == s[j]
4)i>=j


2-6-1 数字金字塔(函数)


函数接口定义:

void pyramid(int n);

其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行数字金字塔。注意每个数字后面跟一个空格。

void pyramid(int n)
{
    for (int i = 1; i <= n; i++)
    {
        for (int k = 0; k < n - i; k++)
            printf(" ");
        for (int j = 1; j <= i; j++)
        {
            printf("%d ", i);
        }
        printf("\n");
    }
}


2-6-2 使用函数求最大公约数(函数)


函数接口定义:

int gcd( int x, int y );

其中x和y是两个正整数,函数gcd应返回这两个数的最大公约数

int gcd( int x, int y )
{
    int ret = 0;
    if(x>=y)
    {
        if(x%y==0)
            return y;
        else
            return gcd(y,x%y);
    }
    else
    {
        if(y%x==0)
            return x;
        else
            return  gcd(x,y%x);
    }
}


2-6-3 使用函数求余弦函数的近似值(函数)


函数接口定义:

double funcos( double e, double x );

本题要求实现一个函数,用麦克劳林展开公式求cos(x)的近似值,精确到最后一项的绝对值小于e(函数的一个参数,不是数学中的那个e)

double funcos( double e, double x )
{
    if(x==0)
        return 1;
    double fu = 1.0,t = 1.0;
    double sum = 1.0;
    int i = 1;
    while(t>=e)
    {
        fu = -1*fu*x*x/(i*(i+1));
        i+=2;
        sum+=fu;
        if(fu<0)
            t = -1*fu;
        else
            t = fu;
    }
    return sum;
}


2-6-4 使用函数输出水仙花数(函数)


函数接口定义:

int narcissistic( int number );
void PrintN( int m, int n );


函数narcissistic判断number是否为水仙花数,是则返回1,否则返回0。


函数PrintN则打印开区间(m, n)内所有的水仙花数,每个数字占一行。题目保证100≤m≤n≤10000

int narcissistic( int number )
{
    int count  = 0;
    int n = number,t = number;
    while(n)
    {
        count++;
        n/=10;
    }
    int sum = 0,w = 0;
    for(int i = 0;i<count;i++)
    {
        w=number%10;
        sum += pow(w,count);
        number/=10;
    }
    if(t==sum)
        return 1;
    return 0;
}
void PrintN( int m, int n )
{
    for(int i = m+1;i<n;i++)
    {
        if(narcissistic(i))
            printf("%d\n",i);
    }
}


2-6-5 使用函数的选择法排序(函数)


函数接口定义:

void sort( int a[], int n );

其中a是待排序的数组,n是数组a中元素的个数。该函数用选择法将数组a中的元素按升序排列,结果仍然在数组a中。

void sort( int a[], int n )
{
    for(int j = 0;j<n-1;j++)
    {
      int min = a[j];
     for(int i = 0;i<n-1-j;i++)
     {
      if(a[i]>a[i+1])
      {
        int t = a[i];
        a[i] = a[i+1];
        a[i+1] = t;
        }
      }
    }
}


2-7-1 求一批整数中出现最多的个位数字


给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。


输入格式:

输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。


输出格式:

在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。

#include<stdio.h>
#include<ctype.h>
int main() 
{
  int n = 0;
  int i, max =0, c, m;
  int arr[10] = {0};
  while (scanf("%d", &n) != EOF) 
  {
  max = 0;
  for (i = 0; i<10; i++) 
  {
    arr[i] = 0;
  }
  for (i = 0; i < n; i++) 
  {
    scanf("%d", &c);
    do {
    m = c % 10;
    c /= 10;
    arr[m]++;
    if (arr[m] > max) 
    {
      max = arr[m];
    }
    } while (c);
  }
  printf("%d:", max);
  for (int j = 0; j<10; j++) 
  {
    if (arr[j] == max) 
    {
    printf(" %d", j);
    }
  }
  printf("\n");
  }
  return 0;
}


2-7-2 找鞍点


一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。


本题要求编写程序,求一个给定的n阶方阵的鞍点。


输入格式:

输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。


输出格式:

输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点

#include<stdio.h>
int main()
{
    int n = 0;
    scanf("%d",&n);
    int arr[6][6];
    for(int i = 0;i<n;i++)
    {
        for(int j = 0;j<n;j++)
            scanf("%d",&arr[i][j]);
    }
    int h = 0,l=0,flag =0;
    int i = 0;
    for(;i<n;i++)
    {
        for(int j = 0;j<n;j++)
        {
            if(arr[i][j]>=arr[i][l])
            {
                l = j;
            }
        }
        flag = 1;
        for(h = 0;h<n;h++)
        {
            if(arr[h][l] <arr[i][l])
            {
                flag  = 0;
                break;
            }
        }
        if(flag ==1)
            break;
    }
    if(flag == 1)
    {
        printf("%d %d",i,l);
    }
    else
        printf("NONE");
    return 0;
}


目录
打赏
0
0
0
0
14
分享
相关文章
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
这篇文章详细介绍了如何使用YOLOv8进行目标检测任务,包括环境搭建、数据准备、模型训练、验证测试以及模型转换等完整流程。
15284 58
目标检测实战(六): 使用YOLOv8完成对图像的目标检测任务(从数据准备到训练测试部署的完整流程)
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
25558 18
深入理解Spring Boot配置绑定及其实战应用
【4月更文挑战第10天】本文详细探讨了Spring Boot中配置绑定的核心概念,并结合实战示例,展示了如何在项目中有效地使用这些技术来管理和绑定配置属性。
166 1
C++程序中对象成员的引用
C++程序中对象成员的引用
124 2
习题6-3 使用函数输出指定范围内的完数 (20分)
习题6-3 使用函数输出指定范围内的完数 (20分)
STM32使用printf重定向到USART(串口)并打印数据到串口助手
STM32使用printf重定向到USART(串口)并打印数据到串口助手
824 1
STM32使用printf重定向到USART(串口)并打印数据到串口助手
Java【算法分享 02】道格拉斯-普克 Douglas-Peucker 抽稀算法分析及15w个坐标点抽稀到3.7w耗时从360s+优化到365ms接近1000倍的速度提升(并行流+多线程+泛型)
Java【算法分享 02】道格拉斯-普克 Douglas-Peucker 抽稀算法分析及15w个坐标点抽稀到3.7w耗时从360s+优化到365ms接近1000倍的速度提升(并行流+多线程+泛型)
367 0
12米与30米TanDEM-X数字高程模型DEM数据的下载申请方法
12米与30米TanDEM-X数字高程模型DEM数据的下载申请方法
153 2
Spring中的Autowired、Qualifier、Resource注解详解
使用Spring系列的框架对这三个注解肯定都不会陌生,这三个注解有一个特性,就是用于属性注入,说白了点就是将Spring容器中的对象取出来,这样我们才可以使用,那么这三者到底是什么关系,又有什么区别呢?
779 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等

登录插画

登录以查看您的控制台资源

管理云资源
状态一览
快捷访问