编写c语言程序用ctrl+D结束程序

初学c语言 编写一个程序
如果第一个数是1 就打印出指令中下一个数字的平方
如果是2 就打印第二个数把第三个作为幂的值
然后我不知道怎样以ctrl+D结束程序

#include<stdio.h>

#define n 3

int main(void) {

int number[n];

printf("Enter instruction: ");
scanf("%d", &number[n]);

if(number[1]=1) {
printf("%d",number[2]*2);

} else {
printf("%d",number[2]^number[3]);
}

}

在Windows系统的终端下,按ctrl+z再回车,表示输入流结束
在Linux/Unix系统的终端下,按ctrl+d,表示输入流结束
这是由历史原因决定的,详情请参考维基上的介绍
https://en.wikipedia.org/wiki/End-of-Transmission_character
https://en.wikipedia.org/wiki/Substitute_character

scanf()遇到输入流结束或读入错误时,scanf()返回的是EOF,否则返回的是已经正确读入数据的个数,所以你可以判断scanf()的返回值来决定什么时候结束循环。

#include <stdio.h>
#include <math.h>

int main(void)
{
        while (1)
        {
                printf("Enter instruction [1 or 2]: ");
                int instruction;
                if (scanf("%d", &instruction) != 1)
                        break;
                if (instruction == 1)
                {
                        int number;
                        if (scanf("%d", &number) != 1)
                                break;
                        printf("%d\n", number * number);
                }
                else if (instruction == 2)
                {
                        int number1, number2;
                        if (scanf("%d%d", &number1, &number2) != 2)
                                break;
                        printf("%d\n", (int)pow(number1, number2));
                } else {
                        printf("invalid instruction\n");
                }
        }
        return 0;
}

img

ctrl+d 应该是循环输入的时候才会使用,这个程序不用的

题主,建议你把这几句话描述明白:
“如果第一个数是1 就打印出指令中下一个数字的平方
如果是2 就打印第二个数把第三个作为幂的值
然后我不知道怎样以ctrl+D结束程序”

什么叫下一个数字?
另外,你代码本身就是错的,你表达清楚一些。

CTRL + D本身就是一个信号的组合键,是可以中断当前的命令行的

#include<stdio.h>
#define n 3
int main(void) {
int number[n];
while(1){
printf("Enter instruction: ");
scanf("%d %d %d", &number[0],&number[1],&number[2]);
if(number[0]==1) {
printf("%d",number[1]*number[1]);
} else if(number[0]==2) {
for (int i=1;i<number[2];i++)
number[1]=number[1]*number[1];
printf("%d",number[1]);
}}
}

好好学下基础,输入输出,数组,算术运算符等,都是些基础错误。

ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。
ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。
ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。

img

ctrl-c 发送 SIGINT 信号给前台进程组中的所有进程。常用于终止正在运行的程序。
ctrl-z 发送 SIGTSTP 信号给前台进程组中的所有进程,常用于挂起一个进程。
ctrl-d 不是发送信号,而是表示一个特殊的二进制值,表示 EOF。

1,在linux的终端下,ctrl+d代表EOF的作用,ctrl+z表示要让程序后台执行,ctrl+c可以结束程序。
2,在windows的cmd下,只有ctrl+c可以结束程序。
ctrl+d与ctrl+z是没有用的。
3,在windows下输入eof的方法:
在输入时按信alt键不放,然后在小键盘上输入2, 5, 5就是EOF了
EOF一般等于-1,也就是无符号数的255,所以输入-1会有效果。