---恢復內容開始---
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排名
---恢復內容結束---