A+B TEST( 输入多行数字 第一个整数表示 有几个数字元素, 然后对除了第一个整数外的数求和)

98 阅读1分钟

解题思路: 因为我用的是getchar获取信息 ,所以比scanf麻烦点( 我目前比较菜 ) 然后不通过定义数组来保存要相加的值而是 用第一个数 获得相加次数进行判断 , 这题重点是要知道 有几个值相加 ,也就是每行的第一个整数 , 我通过定义一个 statc 的状态来判断是否已经拿到了这个值 , 这个值是几 就表示要做n-1次相加运算 加上 对values赋值 也就是 n 表示要相加n次 。
#include <stdio.h> #define FUNCTIONS( X ) ( ( X ) - ( 48 ) ) #define HIGH 0 #define FAIL 1 int main( void ) { char input ; int top , statc , its , values ; statc = HIGH ; its = HIGH ; values = HIGH ; while( ( input = getchar() ) !=EOF ) { if( input >= '0' && input <= '9' ) { if( statc == HIGH ) { top = FUNCTIONS( input ) ; statc = FAIL ; continue ; }else if( statc == FAIL && its <= top ) { values = FUNCTIONS( input ) + values ; its++ ; } }else if( input == '\n' ) { printf( "%d\n" , values ) ; statc = HIGH ; its = HIGH ; values = HIGH ; top = HIGH ; }

}

}