PTA数组实验

Posted Kalim

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PTA数组实验相关的知识,希望对你有一定的参考价值。

---恢复内容开始---

7-2 求最大值及其下标(20 分)

本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。

输入格式:

输入在第一行中给出一个正整数n(1<n10)。第二行输入n个整数,用空格分开。

输出格式:

在一行中输出最大值及最大值的最小下标,中间用一个空格分开。

1.本题PTA提交列表

2.设计思路(包括流程图),主要描述题目算法

   先输入n个数放入数组中,然后先设第一个数为最大的数字,然后再和后面的数字一次次比较

 

最终代码如下

#include<stdio.h>  
#define N 10  
main()  
{  
    int i,j,n,max,ind,count = 0;  
    scanf("%d",&n);  
  
    int q[N];  
    for (i = 0; i < n; i++)  
    {  
        scanf("%d",&q[i]);  
    }  
    max = q[0];  
    for (j = 0; j < n; j++)  
    {  
        if (max < q[j])  
        {  
            max = q[j];  
            ind = j;  
        }  
        else if (max == q[j])  
            count++;  
          
    }  
    if (count > 1)  
    {  
        ind = j-count;  
    }  
    printf("%d %d", max, ind);  
} 

结果发现

有问题

发现提醒说最大n多个并列输出0

所以在程序的最后多使用一个if语句修改后得到的代码如下

#include<stdio.h>  
#define N 10  
main()  
{  
    int i,j,n,max,ind,count = 0;  
    scanf("%d",&n);  
  
    int q[N];  
    for (i = 0; i < n; i++)  
    {  
        scanf("%d",&q[i]);  
    }  
    max = q[0];  
    for (j = 0; j < n; j++)  
    {  
        if (max < q[j])  
        {  
            max = q[j];  
            ind = j;  
        }  
        else if (max == q[j])  
            count++;  
          
    }  
    if (count > 2)  
    {  
        ind = 0;  
    }  
    printf("%d %d", max, ind);  
} 

7-4 查找整数(10 分)

本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。

输入格式:

输入在第一行中给出两个正整数N(≤20)和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。

输出格式:

在一行中输出X的位置,或者“Not Found”。

输入样例1:

5 7
3 5 7 1 9

输出样例1:

2

输入样例2:

5 7
3 5 8 1 9

输出样例2:

Not Found

1.本题PTA提交列表

2.设计思路(包括流程图),主要描述题目算法

本题很简单,只需要设置一个数组,然后用一个循环将n个数放入数组中

之后再用if来寻找数字,如果找到输出数组的位置没有就输出not found

 

最终代码如下

#include <stdio.h>  
int main() 
{  
    int i,n,x;  
    int flag = 0;  
    scanf("%d %d", &n, &x);  
    int a[n];  
    for ( i=0; i<n; i++) {  
        scanf("%d ", &a[i]);  
        if (a[i] == x) {  
            printf("%d", i);  
            flag = 1;  
        }  
    }  
    if (flag == 0) {  
        printf("Not Found");  
    }  
      
    return 0;  
}   

运行如下

7-22 求矩阵各行元素之和(15 分)

本题要求编写程序,求一个给定的m×n矩阵各行元素之和。

输入格式:

输入第一行给出两个正整数m和n(1m,n6)。随后m行,每行给出n个整数,其间

以空格分隔。

输出格式:

每行输出对应矩阵行元素之和。

输入样例:

3 2
6 3
1 -8
3 12

输出样例:

9
-7
15

1.本题PTA提交列表

 2.设计思路(包括流程图),主要描述题目算法

本题主要就是设置一个二维的数组

然后将数据放入进去然后相加

 

最终代码如下

#include <stdio.h>
#define M 10
#define N 10

int main()
{
    int a[M][N];
    int sum[M];
    int m,n,i,j;
    
    scanf("%d %d",&m,&n);
    
    for(i=0;i<m;i++)
    {
        sum[i]=0;
        for(j=0;j<n;j++)
        {
            scanf("%d",&a[i][j]);
            sum[i]+=a[i][j];
        }
    }
    
    for(i=0;i<m;i++)
    {
        printf("%d\\n",sum[i]);
    }

    return 0;
}

运行结果

最终pta排名

 

 

---恢复内容结束---

以上是关于PTA数组实验的主要内容,如果未能解决你的问题,请参考以下文章

PTA实验报告(循环 数组 函数)

PTA实验作业(数组)

PTA数组实验

PTA实验作业(结构体)

网络1712--c语言一二维数组作业总结

数组三题的实验报告