我正在嘗試用 C 創建一個程式。我正在嘗試在陣列中查找“特殊數字”。特殊數是指大于其右邊數之和的數。
我有這個陣列
int input_array[] = {16,17,4,3,5,2};
這個陣列中的特殊數字是 17, 5, 2... 因為 17 > 4 3 5 2; ...
我有功能int special_numbers()。這個函式應該找到這個特殊的數字并將它們存盤到被呼叫的陣列中result_array()并回傳它。
我已經嘗試了很長時間,但找不到解決方案。
我的代碼:
#include <stdio.h>
#include <math.h>
int special_numbers();
int main(){
int input_array[] = {16,17,4,3,5,2};
int result_array[6];
int count = special_numbers(input_array, 6, result_array);
for(int i = 0; i < count; i ){
printf("%d ", result_array[i]);
}
printf("%d", special_numbers(input_array, 6));
printf("\n");
return 0;
}
int special_numbers(const int input_array[], const int array_size, int result_array[]){
int result = 0;
for (int i = 0; i < array_size; i ){
if(input_array[i] > input_array[i 1]){
}
}
return result;
}
uj5u.com熱心網友回復:
有更有效的方法,但最簡單的方法是使用嵌套回圈來獲取 之后所有元素的總和i。
int special_numbers(const int input_array[], const int array_size, int result_array[]){
int result = 0;
for (int i = 0; i < array_size; i ){
int sum = 0;
for (int j = i 1; j < array_size; j ) {
sum = input_array[j];
}
if (array[i] > sum) {
result_array[result ] = array[i];
}
}
return result;
}
uj5u.com熱心網友回復:
您正在呼叫該函式兩次
int count = special_numbers(input_array, 6, result_array);
//...
printf("%d", special_numbers(input_array, 6));
其中第二個呼叫是多余的,因為您已經擁有變數 count 并且無效,因為您忘記指定第三個引數。
此外,將幻數用作6.
在該函式中,您需要計算當前元素之后的元素總和。最好將存盤總和的變數宣告為具有long long int避免溢位的型別。
該函式可以通過以下方式定義,如下面的演示程式所示。
#include <stdio.h>
size_t special_numbers( const int input_array[], size_t array_size, int result_array[] )
{
size_t result = 0;
long long int sum = 0;
for ( size_t i = array_size; i != 0; --i )
{
if ( i == array_size || sum < input_array[i - 1] ) result;
sum = input_array[i-1];
}
sum = 0;
for ( size_t i = array_size, j = result; i != 0; --i )
{
if ( i == array_size || sum < input_array[i - 1] )
{
result_array[--j] = input_array[i-1];
}
sum = input_array[i-1];
}
return result;
}
int main( void )
{
int input_array[] = { 16, 17, 4, 3, 5, 2 };
int result_array[sizeof( input_array ) / sizeof( *input_array )];
const size_t N = sizeof( input_array ) / sizeof( *input_array );
size_t count = special_numbers( input_array, N, result_array );
printf( "%zu: ", count );
for ( size_t i = 0; i < count; i )
{
printf( "%d ", result_array[i] );
}
putchar( '\n' );
return 0;
}
程式輸出是
3: 17 5 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/341601.html
下一篇:長C整數的Fortran互操作性
