-1

我的任务是使用 printf 显示一个程序。我的解决方案是用引号遍历每一行。但是我在编译时卡住了它要我声明“d”

我在打印整个程序时遇到错误。它要我定义“d”请帮助我。

#include <stdio.h>

int main(void)
{

printf(
"/* This program reads two integers from the keyboard and prints their product."
"Written by: A Katheravan"
"Date : 10/02/2012"
"*/"

"#include <stdio.h>"
"int main (void)"

"{"
"//Local Definitions"

"int number1;"
"int number2;"
"int result;"

"//Statements"

"scanf("%d", &number1);"
"scanf ("%d", &number2);"
"result = number1 * number2;"
"printf("%d", result);"
"return 0;"

"}"
"//main");

return 0;
}
4

4 回答 4

2

以下内容可能对您有用:

FILE * fp = fopen("program.c", "r");  

char c;
while ((c = fgetc(fp)) != EOF)   
    printf("%c", c);

fclose(fp);
于 2012-10-04T04:49:45.943 回答
0

那些产生自己的源代码作为输出的程序类型称为“Quines”。

根据维基百科奎因斯是

“quine 是一种计算机程序,它不接受任何输入并生成自己的源代码副本作为其唯一输出”

查看示例并完成说明Quines

这是经典的C Quine

char*f="char*f=%c%s%c;
main()
     {
printf(f,34,f,34,10);
}%c";
     main(){printf(f,34,f,34,10);}
于 2012-10-04T05:09:47.527 回答
0
#include <stdio.h>

int main(void)
{
    printf("%s",
       "#include <stdio.h>\n"
       "\n"
       "int main (void)\n"
       "\n"
       "{\n"
       "\n"
       "//Local Definitions\n"
       "\n"
       "int n1;\n"
       "int n2;\n"
       "int result;\n"
       "\n"
       "//Statements\n"
       "\n"
       "scanf(\"%d\", &n1);\n"
       "scanf (\"%d\" , &n2);\n"
       "result = n1 * n2;\n"
       "printf(\"%d\", result);\n"
       "return 0;\n"
       "\n"
       "}\n"
       "//main\n");

   return 0;
}

这可能不太正确,因为 OP 在发布代码时没有格式化代码。插入空格和/或制表符以获得所需的缩进。

编辑:这是对原始问题的回答,但 OP 已将问题更改为(错误)尝试回答问题。

于 2012-10-04T05:38:42.180 回答
0

好吧,基于对你想要得到的东西的一些深思熟虑,我最终认为你想要这个:

#include <stdio.h>

int main(void)
{

    printf(
        "/* This program reads two integers from the keyboard and prints their product.\n"
        "Written by: A Katheravan\n"
        "Date : 10/02/2012\n"
        "*/\n\n"

        "#include <stdio.h>\n\n"

        "int main (void)\n"
        "{\n"
        "\t//Local Definitions\n\n"

        "\tint number1;\n"
        "\tint number2;\n"
        "\tint result;\n\n"

        "\t//Statements\n\n"

        "\tscanf(\"%%d\", &number1);\n"
        "\tscanf (\"%%d\", &number2);\n"
        "\tresult = number1 * number2;\n"
        "\tprintf(\"%%d\", result);\n"
        "\treturn 0;\n\n"

        "}\n"
        "//main\n"
    );

    return 0;
}

要在字符串内部打印",您需要对其进行转义:\",这是字符串内部的问题。

我还在每一行中包含了换行符和制表符,因此代码不会仅在控制台上的一行中打印出来。

%此外,要在 上打印printf,您必须使用%%,因为稍后您将了解到它%是为格式化字符串而保留的。

\n是“新行”,\t是“TAB”,仅供参考。

于 2012-10-04T05:38:50.407 回答