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


相关文章
|
存储 Java 索引
Python Sets详解!
在 Python 编程中,集合是一种无序、可迭代且可变的数据类型,不包含重复元素,用 `{}` 表示。集合基于哈希表,能高效检查元素是否存在,时间复杂度为 O(1)。集合支持多种操作,如并集、交集和差集。使用 `set()` 方法可进行类型转换,`frozenset()` 创建不可变的冻结集合。集合适用于去重及数学集合运算,但不能通过索引访问元素,且仅支持不可变类型的实例。
320 5
|
存储 小程序 编译器
c语言内功修炼--深度剖析数据的存储
c语言内功修炼--深度剖析数据的存储
|
存储 数据管理 数据处理
处理STM32 DMA方式下的HAL_UART_ERROR_ORE错误
通过正确配置UART和DMA、实现有效的错误处理回调函数以及优化数据处理和缓冲区管理,可以有效处理STM32中DMA方式下的 `HAL_UART_ERROR_ORE`错误。这些方法确保了数据的高效传输和处理,避免了因数据溢出导致的通信中断和数据丢失。希望这些解决方案能够帮助您在实际应用中更好地应对和解决此类问题。
1671 0
|
搜索推荐 Java 数据处理
【C/PTA】函数专项练习(三)
【C/PTA】函数专项练习(三)
441 0
|
Python
python字符串的拼接和拆分,看这一篇就够了
python字符串的拼接和拆分,看这一篇就够了
383 0
|
机器学习/深度学习 算法 Python
python与朴素贝叶斯算法(附示例和代码)
朴素贝叶斯算法以其高效性和优良的分类性能,成为文本处理领域一项受欢迎的方法。提供的代码示例证明了其在Python语言中的易用性和实用性。尽管算法假设了特征之间的独立性,但在实际应用中,它仍然能够提供强大的分类能力。通过调整参数和优化模型,你可以进一步提升朴素贝叶斯分类器的性能。
480 0
|
机器学习/深度学习 存储
sdut pta 链表3(优化)-----7-3 sdut-C语言实验-链表的结点插入
sdut pta 链表3(优化)-----7-3 sdut-C语言实验-链表的结点插入
156 0
|
数据处理 Python
Python中字符串、列表、字典常用的拼接方法有哪些?
Python中字符串、列表、字典常用的拼接方法有哪些?
240 1
|
C++
【PTA】L1-011 A-B (C++)
【PTA】L1-011 A-B (C++)
282 0
【PTA】L1-011 A-B (C++)