问题:以n为输入。然后取n个数作为输入并打印这n个数的总和。但这次输出格式如下。 例如:
输入:
4
1 5 3 -4
输出1 + 5 + 3 – 4 = 5
我正确得到了输出值,但我不知道如何显示实际的求和序列,特别是在一行中....
我的代码:
main ()
{
int n,m,cnt=0,sum=0;
printf("Input: ");
scanf("%d", &n);
while(cnt<n)
{
scanf("%d\b", &m);
sum=sum+m;
cnt=cnt+1;
if(m>0 && m!=n)
{
printf("\b+",m);
}
else if (m<0)
{
printf("%d",m);
}
}
printf("=%d\n\n",sum);
}
答案 0 :(得分:1)
这是我提出的一个示例解决方案:
#include <stdio.h>
int main() {
int n = 0,
count = 0,
sum = 0;
int first = 1;
printf("How many numbers do you wish to sum? " );
scanf("%d", &n);
while (count < n) {
int m;
scanf("%d\b", &m);
if (!first) {
if (m < 0) {
printf("- %d ", -m);
} else {
printf("+ %d ", m);
}
} else {
first = !first;
printf("%d ", m);
}
sum += m;
count++;
}
printf("= %d\n\n", sum);
return 0;
}
这是一个示例执行:
$ gcc stackoverflow.c -o stackoverflow
$ ./stackoverflow
How many numbers do you wish to sum? 5
1 -2 -3 4 10 -40
1 - 2 - 3 + 4 + 10 = 10
答案 1 :(得分:0)
如果要在输入之后打印求和序列,则可以通过使用动态分配的长度为int[]
的数组n
来解决问题,其中读取输入。在读取输入之后,可以完成实际求和并且可以打印加数,因为它们已经存储在数组中。动态分配可以使用malloc
函数完成;在总和之后你还必须使用free
函数。
答案 2 :(得分:0)
抓住:!)
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
unsigned int n = 0;
printf( "Enter number of items (0-exit): " );
scanf( "%u", &n );
if ( n != 0 )
{
int items[n];
printf( "Enter %u numbers: ", n );
unsigned int i = 0;
while ( i < n && scanf( "%d", &items[i] ) == 1 ) ++i;
int sum = 0;
_Bool first = 1;
n = i;
for ( i = 0; i < n; i++ )
{
sum += items[i];
if ( !first || items[i] < 0 )
{
printf( "%c ", items[i] < 0 ? '-' : '+' );
}
if ( first ) first = 0;
printf( "%u ", ( unsigned int )abs( items[i] ) );
}
printf( "= %d\n", sum );
}
return 0;
}
输出可能看起来像
Enter number of items (0-exit): 4
Enter 4 numbers: 1 5 3 -4
1 + 5 + 3 - 4 = 5
答案 3 :(得分:0)
#include <stdio.h>
int main()
{
int num;
int answer=0;
do
{
printf("\nEnter the number(s) to be added: (enter 0 to quit) ");
scanf("%d", &num);
answer=answer + num;
}
while (num!=0);
printf("Answer is %d", answer);
return 0;
}
上述方法的优点是您不需要阵列,也不必申报号码。您要添加的值。有点像使用计算器添加,只需按下&#34; =&#34;完成后按钮。