撰寫一個C程式,可以顯示四個城市最近五天的溫度,并顯示每個城市的最高和最低溫度之差
樣本輸入
20 27 28 22
12 22 12 20
22 24 25 33
33 30 30 29
樣本輸出
8
8
11
4
我一直在使用 C 尋找二維陣列特定行中大元素和小元素之間的差異。我能夠找到大元素和小元素,但我在搜索特定行以找到之間的差異之間有點迷失大元素和小元素。下面我展示了我的一段代碼 -
#include<stdio.h>
int main()
{
int array1[10][10];
int num, row, column;
printf("How many rows and columns are needed: ");
scanf("%d %d", &row, &column);
printf("\nHow many cities temperature you want to enter: ");
scanf("%d", &num);
printf("\nEnter %d cities temperature: ", num);
for(int i=0; i<row; i )
{
for(int j=0; j<column; j )
{
scanf("%d", &array1[i][j]);
}
printf("\n");
}
int largeA = array1[0][0];
int smallA = array1[0][0];
int diff = 0;
for(int i=0; i<row; i )
{
int diff = 0;
for(int j=1; j<column; j )
{
if(array1[i][j] > largeA)
{
largeA = array1[i][j];
}
if(array1[i][j] < smallA)
{
smallA = array1[i][j];
}
}
diff = largeA - smallA;
printf("%d\n", diff);
}
return 0;
}
uj5u.com熱心網友回復:
在回圈中每次設定最小值和最大值for(i)。
使用unsigned數學來避免int溢位。
// Not needed
// int largeA = array1[0][0];
// int smallA = array1[0][0];
// int diff = 0;
for(int i=0; i<row; i )
{
//int diff = 0;
int largeA = array1[i][0]; // add
int smallA = array1[i][0]; // add
for(int j=1; j<column; j )
{
if(array1[i][j] > largeA)
{
largeA = array1[i][j];
}
if(array1[i][j] < smallA)
{
smallA = array1[i][j];
}
}
// diff = largeA - smallA;
unsigned diff = 0u largeA - smallA;
// printf("%d\n", diff);
printf("%u\n", diff);
}
uj5u.com熱心網友回復:
- 使用函式。它使代碼更具可讀性,不要編程
main - 使用正確的索引型別 (size_t)
- 在測驗代碼時避免用戶輸入會容易得多。它將節省您在輸入表值上花費的大量時間。
#include <stdio.h>
int getDiff(const size_t cols, const int *arr)
{
int max = 0, min = 0;
if(arr)
{
max = arr[0]; min = arr[0];
for(size_t col = 1; col < cols; col )
{
if(min > arr[col]) min = arr[col];
else if(max < arr[col]) max = arr[col];
}
}
return max - min;
}
int main(void)
{
int temps[][4] = {
{20, 27, 28, 22,},
{12, 22, 12, 20,},
{22, 24, 25, 33,},
{33, 30, 30, 29,},
};
for(size_t row = 0; row < 4; row )
{
printf("Diff row %zu = %d\n", row, getDiff(4, temps[row]));
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/393262.html
