胚芽鞘 发表于 2022-10-9 09:09:33

【C】如何换行输入并赋值到不同地方去

比如说要求用户输入三行, 第一行赋值到一个变量里,第二三行都有多个数字,分别赋值到两个数组中。

钎玦 发表于 2022-10-9 09:44:42

#include <stdio.h>

int main()
{
    int a,b,c,d;
    scanf("%d %d\n %d\n %d",&a,&b,&c,&d);
    //最后一个%d后不能有\n,否则不能结束输入
    int s=a+b+c+d;
    printf("%d",s);

    return 0;
}
输入:
23
3
7
输出:15

jackz007 发表于 2022-10-9 09:56:00

#include <stdio.h>
#include <string.h>

int foo(int d[] , const char s[])
{
      int i , k                                                                  ;
      for(i = k = 0 ; s ; k ++) {
                for(; s && (s == ' ' || s == '\t' || s == ',') ; i ++) ;
                sscanf(& s , "%d" , & d)                                     ;
                for(; s && s != ' ' && s != '\t' && s != ',' ; i ++)   ;
      }
      return k                                                                   ;
}

int main(void)
{
      char s                                                                ;
      int d , e , i , k , n , m                                        ;
      printf("input k : ")                                                       ;
      scanf("%d" , & k)                                                          ;
      fflush(stdin)                                                            ;
      printf("input second line : ")                                             ;
      gets(s)                                                                  ;
      n = foo(d , s)                                                             ;
      printf(" input third line : ")                                             ;
      gets(s)                                                                  ;
      m = foo(e , s)                                                             ;
      printf("k = %d\n" , k)                                                   ;
      printf("the second line is : %d" , d)                                 ;
      for(i = 1 ; i < n ; i ++) printf(",%d" , d)                           ;
      printf("\n")                                                               ;
      printf(" the third line is : %d" , e)                                 ;
      for(i = 1 ; i < m ; i ++) printf(",%d" , e)                           ;
      printf("\n\n")                                                             ;
}
      编译运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
input k : 1088
input second line : 1 3 5 7 9 11 13 15 17 19 21
input third line : 2 4 6 8 10 12 14 16 18 20 22
k = 1088
the second line is : 1,3,5,7,9,11,13,15,17,19,21
the third line is : 2,4,6,8,10,12,14,16,18,20,22


D:\\C>

傻眼貓咪 发表于 2022-10-9 10:09:59

#include <stdio.h>
#define max 100

int main(void) {
        int x, arrA, arrB, n, m = n = 0;
        char c;

        scanf("%d", &x); // 第一行赋值到一个变量里

        // 第二行都有多个数字,赋值到数组 arrA 中。
        do {
                scanf("%d%c", &arrA, &c);
        } while (c != '\n');

        // 第三行都有多个数字,赋值到数组 arrB 中。
        do {
                scanf("%d%c", &arrB, &c);
        } while (c != '\n');

        // ---------------------------------------------

        // 开始打印
        printf("x = %d\narr A = ", x);

        for (int i = 0; i < n; ++i) {
                printf("%d ", arrA);
        }

        printf("\narr B = ");
        for (int i = 0; i < m; ++i) {
                printf("%d ", arrB);
        }

        printf("\n");
        return 0;
}13
45 78 91 72 58 4 1
16 5 42 86 72 19
x = 13
arr A = 45 78 91 72 58 4 1
arr B = 16 5 42 86 72 19

jackz007 发表于 2022-10-9 11:17:52

傻眼貓咪 发表于 2022-10-9 10:09


      do {
                scanf("%d%c", &arrB, &c);
      } while (c != '\n');
      "奇技淫巧" 啊,有学到了!

傻眼貓咪 发表于 2022-10-9 12:56:47

jackz007 发表于 2022-10-9 11:17
"奇技淫巧" 啊,有学到了!

{:10_254:}
页: [1]
查看完整版本: 【C】如何换行输入并赋值到不同地方去