---恢复内容开始---
7-2 求最大值及其下标(20 分)
本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。
输入格式:
输入在第一行中给出一个正整数n(1<n≤10)。第二行输入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(1≤m,n≤6)。随后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排名
---恢复内容结束---