玉山 发表于 2024-4-11 15:44:11

应该是一直循环的函数,输入之后就没后续了

#include<stdio.h>
int main()
{
        int i,j;
        printf("输入出生日期(如:20060101):\n");
        while(scanf("%d",&i)!='w');
        {
                printf("%d\n",j);
                printf("%d",i);
        }
        return 0;
}

FishC 发表于 2024-4-11 15:44:32

您的代码存在一些问题,首先在包含头文件方面,要写成#include <stdio.h>,并且没有包含stdlib.h头文件。另外,在循环中,while条件语句应该是`scanf("%d",&i)!=EOF`,而不是`scanf("%d",&i)!='w'`。此外,您的代码中没有对变量j进行赋值操作,所以会导致输出未定义的值。下面是更正后的代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i, j;
    printf("输入出生日期(如:20060101):\n");
    while (scanf("%d", &i) != EOF)
    {
      j = i;
      printf("%d\n", j);
      printf("%d", i);
    }
    return 0;
}

这样修改后,程序会一直等待用户输入,直到输入Ctrl+D(在Linux系统中)或Ctrl+Z(在Windows系统中)来结束输入,然后按照输入的顺序将用户输入的数字输出两次。

希望能够帮助到您!如果有其他问题,请随时提问。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-4-11 15:57:27

本帖最后由 jackz007 于 2024-4-11 16:23 编辑

while(scanf("%d",&i)!='w'); // 语句末尾不能带分号,会脱钩后续的循环体;scanf() 返回整数,不可能返回字符 'w'

      试试这个代码,键入 'w' 字符结束输入
#include<stdio.h>

int main(void)
{
      char s                               ;
      int i , n                                 ;
      printf("输入出生日期(如:20060101):\n") ;
      for(i = 0 ; (s = getchar()) != 'w' ;) {
                if(s == '\n') {
                        s = '\0'               ;
                        sscanf(s , "%d" , & n)    ;
                        printf("%d\n" , n)      ;
                        i = 0                     ;
                } else if(s >= '0' && s <= '9') {
                        i ++                      ;
                }
      }
}
      编译、运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
输入出生日期(如:20060101):
20060101
20060101
20080907
20080907
w

D:\\C>
页: [1]
查看完整版本: 应该是一直循环的函数,输入之后就没后续了