題目:讓用戶輸入一組整數以-1結束輸入,算出這組數的平均值,而且輸出大於平均值的數。算法
程序實現:數組
#ifndef biggerThanAvg_h #define biggerThanAvg_h #include <stdio.h> void biggerThanAvg(void); #endif #include "biggerThanAvg.h" void biggerThanAvg(void) { int x; double sum = 0; double avg = 0; int cnt = 0; int number[100]; printf("請輸入一些整數以-1結束:"); scanf("%d", &x); while (x != -1) { number[cnt] = x; sum += x; cnt++; scanf("%d", &x); } if (cnt > 0) { avg = sum / cnt; printf("%f\n", avg); for (int i = 0; i < cnt; i++) { if (number[i] > avg) { printf("%d\n", number[i]); } } } } #include <stdio.h> #include "biggerThanAvg.h" int main(int argc, char *argv[]) { biggerThanAvg(); return 0; }
測試樣例:函數
請輸入一些整數以-1結束:1 2 3 4 5 6 7 8 9 -1 5.000000 6 7 8 9 -------------------------------- Process exited after 9.368 seconds with return value 0
定義數組測試
數組code
數組的單元索引
有效的下標範圍ip
使用數組程序的對應操做內存
數組初始化ci
數組的大小
數組的賦值
遍歷數組
*數組傳參
二維數組的初始化
int a[][5] ={
{0,1,2,3,4},
{2,3,4,5,6}
}
一、題目內容: 題目內容:
一個多項式能夠表達爲 x 的各次冪與係數乘積的和,好比:
2χ 6 +3χ 5 +12χ 3 +6χ+20
如今,你的程序要讀入兩個多項式,而後輸出這兩個多項式的和,也就是把對應的冪上的系
數相加而後輸出。
程序要處理的冪最大爲 100。
輸入格式:
總共要輸入兩個多項式,每一個多項式的輸入格式以下:
每行輸入兩個數字,第一個表示冪次,第二個表示該冪次的係數,全部的係數都是整數。第
一行必定是最高冪,最後一行必定是 0 次冪。
注意第一行和最後一行之間不必定按照冪次下降順序排列;若是某個冪次的係數爲 0,就不
出如今輸入數據中了;0 次冪的係數爲 0 時仍是會出如今輸入數據中。
輸出格式:
從最高冪開始依次降到 0 冪,如:
2x6+3x5+12x3-6x+20
注意其中的 x 是小寫字母 x,並且全部的符號之間都沒有空格,若是某個冪的係數爲 0 則
不須要有那項。
輸入樣例:
6 2
5 3
3 12
1 6
0 20
6 2
5 3
2 12
1 6
0 20
輸出樣例:
4x6+6x5+12x3+12x2+12x+40
題目分析:
程序實現:
#include <stdio.h> #include "sumOfPolynomial.h"; int main(int argc, char *argv[]) { sumOfPolynomial(); return 0; } #ifndef sumOfPolynomial_h #define sumOfPolynomial_h #include <stdio.h> void sumOfPolynomial(void); #endif #include "sumOfPolynomial.h" void sumOfPolynomial(void) { int arr[100] = {0}; int polynomialIndex = 0; //爲2時終止循環 int power = 0; //冪次 int coefficient = 0; //係數 int maxPower = 0; //最高冪 int i; printf("請輸入兩個多項式,冪次和係數以空格分開,冪次從高到低最後一項是0次冪:\n"); //輸入累加求和 do { scanf("%d %d", &power, &coefficient); if (power == 0) { polynomialIndex++; } if (power > maxPower) { maxPower = power; } arr[power] += coefficient; } while (polynomialIndex < 2); //輸出結果 for (i = maxPower; i > -1; i--) { if (arr[i] > 0) { if (i == 0) { printf("%d", arr[i]); } else { if (i == 1) { printf("%dx", arr[i]); } else { printf("%dx%d", arr[i], i); } } } //不是最後一項且下一項的係數大於0才拼接加號 if (i > 0 && arr[i - 1] > 0) { printf("+"); } } printf("\n"); }
測試樣例:
請輸入兩個多項式,冪次和係數以空格分開,冪次從高到低最後一項是0次冪: 6 2 5 3 3 12 1 6 0 20 6 2 5 3 3 12 1 6 2 3 0 20 4x6+6x5+24x3+3x2+12x+40 -------------------------------- Process exited after 40.41 seconds with return value 0 請輸入兩個多項式,冪次和係數以空格分開,冪次從高到低最後一項是0次冪: 2 6 0 0 3 6 0 0 6x3+6x2 -------------------------------- Process exited after 21.46 seconds with return value 0
二、題目內容:
給定一個 n*n 矩陣 A。矩陣 A 的鞍點是一個位置(i,j),在該位置上的元素是第 i 行上的
最大數,第 j 列上的最小數。一個矩陣 A 也可能沒有鞍點。
你的任務是找出 A 的鞍點。
輸入格式:
輸入的第 1 行是一個正整數 n, (1<=n<=100),而後有 n 行,每一行有 n 個整數,同
一行上兩個整數之間有一個或多個空格。
輸出格式:
對輸入的矩陣,若是找到鞍點,就輸出其下標。下標爲兩個數字,第一個數字是行號,第二
個數字是列號,均從 0 開始計數。
若是找不到,就輸出
NO
題目所給的數據保證了不會出現多個鞍點。
輸入樣例:
4
1 7 4 1
4 8 3 6
1 6 1 2
0 7 8 9
輸出樣例:
2 1
題目分析:
程序實現:
#include <stdio.h> #include "getSaddlePointOfMatrix.h" int main(int argc, char *argv[]) { getSaddlePointOfMatrix(); return 0; } #ifndef getSaddlePointOfMatrix_h #define getSaddlePointOfMatrix_h #include <stdio.h> #include <limits.h> void getSaddlePointOfMatrix(void); int getMaxNumberColIndexByRow(int arr[4][4], int rowIndex, int colCount); int getMinNumberByCol(int arr[4][4], int colIndex, int rowCount); #endif #include "getSaddlePointOfMatrix.h" //獲取一行中最大值的列座標 int getMaxNumberColIndexByRow(int arr[4][4], int rowIndex, int colCount) { int maxNumber = INT_MIN;//int最小值 int maxColIndex = 0; int i; for (i = 0; i < colCount; i++) { if (arr[rowIndex][i] > maxNumber) { maxNumber = arr[rowIndex][i]; maxColIndex = i; } } return maxColIndex; } //獲取一列中最小的值 int getMinNumberByCol(int arr[4][4], int colIndex, int rowCount) { int minNumber = INT_MAX;//int最大值 int i; for (i = 0; i < rowCount; i++) { if (arr[i][colIndex] < minNumber) { minNumber = arr[i][colIndex]; } } return minNumber; } void getSaddlePointOfMatrix(void) { int i, j; int rowIndex, colIndex; int maxRowNumber = 0; int minColNumber = 0; int n = 4; int isHaveSaddlePoint = 0; int arr[4][4] = { {1, 7, 4, 1}, {4, 8, 3, 6}, {1, 6, 1, 2}, {0, 7, 8, 9}}; //判斷每一行的最大值是否爲該列的最小值 for (i = 0; i < n; i++) { colIndex = getMaxNumberColIndexByRow(arr, i, n); maxRowNumber = arr[i][colIndex]; minColNumber = getMinNumberByCol(arr, colIndex, n); if (maxRowNumber == minColNumber) { isHaveSaddlePoint = 1; rowIndex = i; break; } } if (isHaveSaddlePoint) { printf("%d %d\n", rowIndex, colIndex); } else { printf("NO\n"); } }
tips:這裏爲了方便測試將數組寫死在程序了,你能夠試着把這個改成用戶輸入。
** 思考**
測試樣例:
2 1 -------------------------------- Process exited after 0.1303 seconds with return value 0