-4

同じ行に複数の値を出力してから、次の行に移動して同じ値を出力し、次の行に移動したいなどです。例:-

3 5 10
2 7 15

C言語で。

#include <stdio.h>

int main()
{
   int a,b,n,i,j,l;

   printf("Enter total digit in a line:");

   scanf("%d",&n);

   printf("Enter number of lines:");

   scanf("%d",&l);

   for(i=1;i<=l;i++)
   {
      for(j=1;j<=n;j++)
      {
         printf("enter values for line :");
         scanf("%d",&n);
      }
   }
}
4

2 に答える 2

2

行ごとに、入力を eg で文字列として読み取り、ループ内でfgetsegstrtokを使用して各数値を抽出し、 を使用strtolして数値を整数値に変換して加算します。


上記のソリューションには 4 つの部分が含まれているため、分割して 1 つずつ実行してみましょう。

  1. 各行について、 で入力を読み取りますfgets

    これは非常に簡単です。外側のループを使用して、ユーザーにそこに数字を入力するように依頼するだけでなく、そこでも入力を読み取るだけです。

    for (i = 1; i <= l; i++)
    {
        printf("Enter numbers for line number %d: ", i);
    
        char input[128];
        fgets(input, sizeof(input), stdin);
    }
    
  2. ループで使用strtokして、入力から各数値を抽出します。

    for (i = 1; i <= l; i++)
    {
        /* The code to read the input... */
    
        char *pointer = strtok(input, " ");
        while (pointer != NULL)
        {
            /* `pointer` is now pointing to the next space-delimited number */
    
            /* Find the next space-delimited number */
            pointer = strtok(NULL, " ");
        }
    }
    
  3. strtol数値を整数値に変換するために使用します。

    {
        /* `pointer` is now pointing to the next space-delimited number */
        /* Convert string to number */
        long value = strtol(pointer, NULL, 10);
    
        /* Find the next space-delimited number... */
    }
    
  4. 最後に、すべての値を行に追加します。

    for (i = 1; i <= l; i++)
    {
        long sum = 0;
    
        /* ... */
    
        {
            long value = strtol(pointer, NULL, 10);
            sum += value;
        }
    
        printf("The sum of all values on line %d is %ld\n", i, sum);
    }
    

すべてをまとめると、次のコードが得られます。

for (i = 1; i <= l; i++)
{
    printf("Enter numbers for line number %d: ", i);

    char input[128];
    fgets(input, sizeof(input), stdin);

    long sum = 0;

    char *pointer = strtok(input, " ");
    while (pointer != NULL)
    {
        /* `pointer` is now pointing to the next space-delimited number */
        /* Convert string to number */
        long value = strtol(pointer, NULL, 10);
        sum += value;

        /* Find the next space-delimited number */
        pointer = strtok(NULL, " ");
    }

    printf("The sum of all values on line %d is %ld\n", i, sum);
}

注:上記のコードにはエラー チェックがありません。それは読者の課題として残しておきます。

于 2013-07-26T06:22:05.327 に答える
0

例えば

#include <stdio.h>

int main(void){
    int n, l, i, j;

    printf("Enter total digit in a line:");
    scanf("%d", &n);

    printf("Enter number of lines:");
    scanf("%d", &l);

    for(i=1;i<=l;i++){
        long sum =0;
        printf("enter values for line : ");
        for(j=1;j<=n;j++){
            int num;
            scanf("%d", &num);//n : Names are colliding
            sum += num;
        }
        printf("sum of line : %ld\n", sum);
    }
    return 0;
}
于 2013-07-26T08:28:29.107 に答える