解题思路:
因为我用的是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 ;
}
}
}