c语言输入三个数字且判断输入的结果是否正确
时间: 2023-12-19 13:04:59 浏览: 69
可以使用以下代码实现:
```c
#include <stdio.h>
int main() {
int a, b, c;
printf("请输入三个数字,用空格隔开:");
scanf("%d %d %d", &a, &b, &c);
if (a == 1 && b == 2 && c == 3) {
printf("输入结果正确!\n");
} else {
printf("输入结果错误!\n");
}
return 0;
}
```
在代码中,使用 scanf 函数从用户输入中获取三个数字,然后使用 if 语句判断输入的结果是否正确。如果正确,则输出“输入结果正确!”;否则输出“输入结果错误!”
相关问题
用c语言实现从键盘输入一个三位整数,判断该数是不是一个水仙花数。当输入数据不正确时,要求给出错误提示。 说明:“水仙花数”是一个三位数,其各位数字的立方和等于该数本身。
以下是用C语言实现从键盘输入一个三位整数,判断该数是不是一个水仙花数的代码:
```
#include <stdio.h>
int main() {
int num, originalNum, remainder, result = 0;
printf("请输入一个三位整数:");
scanf("%d", &num);
originalNum = num;
while (originalNum != 0) {
remainder = originalNum % 10;
result += remainder * remainder * remainder;
originalNum /= 10;
}
if (result == num) {
printf("%d是一个水仙花数。\n", num);
} else {
printf("%d不是一个水仙花数。\n", num);
}
return 0;
}
```
如果输入的不是一个三位整数,程序会输出错误提示。
、用C语言写一个代码建立表达式二叉树并计算其结果(即输入一个四则混合运算表达式并计算出正确结果)
好的,下面是代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
typedef struct node {
char data; // 节点存储的数据
struct node *left; // 左子树
struct node *right; // 右子树
} Node;
// 创建节点
Node *createNode(char data) {
Node *newNode = (Node *) malloc(sizeof(Node));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 销毁节点
void destroyNode(Node *node) {
if (node == NULL) {
return;
}
destroyNode(node->left);
destroyNode(node->right);
free(node);
}
// 释放表达式二叉树占用的内存
void freeTree(Node *root) {
destroyNode(root);
}
// 构建表达式二叉树
Node *buildExpressionTree(char *expression, int start, int end) {
// 如果表达式只有一个字符,则构建一个节点并返回
if (start == end) {
return createNode(expression[start]);
}
// 找到当前表达式中优先级最低的运算符
int priority = 0;
int operatorIndex = -1;
for (int i = start; i <= end; i++) {
if (expression[i] == '(') {
priority += 10;
} else if (expression[i] == ')') {
priority -= 10;
} else if (isdigit(expression[i])) {
continue;
} else if (priority == 0) {
int currentPriority = 0;
if (expression[i] == '+' || expression[i] == '-') {
currentPriority = 1;
} else if (expression[i] == '*' || expression[i] == '/') {
currentPriority = 2;
}
if (currentPriority <= priority) {
priority = currentPriority;
operatorIndex = i;
}
}
}
// 如果表达式中没有运算符,则构建一个节点并返回
if (operatorIndex == -1) {
return createNode(expression[start]);
}
// 递归构建左右子树
Node *root = createNode(expression[operatorIndex]);
root->left = buildExpressionTree(expression, start, operatorIndex - 1);
root->right = buildExpressionTree(expression, operatorIndex + 1, end);
return root;
}
// 计算表达式二叉树的结果
int calculateExpressionTree(Node *root) {
if (root == NULL) {
return 0;
}
// 如果当前节点是数字,则返回它存储的值
if (isdigit(root->data)) {
return root->data - '0';
}
// 分别计算左右子树的结果
int leftResult = calculateExpressionTree(root->left);
int rightResult = calculateExpressionTree(root->right);
// 根据当前节点的运算符计算结果并返回
switch (root->data) {
case '+':
return leftResult + rightResult;
case '-':
return leftResult - rightResult;
case '*':
return leftResult * rightResult;
case '/':
return leftResult / rightResult;
default:
return 0;
}
}
int main() {
char expression[100];
printf("请输入一个四则混合运算表达式:\n");
scanf("%s", expression);
Node *root = buildExpressionTree(expression, 0, strlen(expression) - 1);
int result = calculateExpressionTree(root);
printf("表达式的计算结果为:%d\n", result);
freeTree(root);
return 0;
}
```
这个代码中,我们首先定义了一个 `Node` 结构体,用来表示表达式二叉树的节点。其中,`data` 表示节点存储的数据,`left` 和 `right` 分别指向左子树和右子树。
然后,我们定义了三个函数:
- `createNode`:用来创建一个新的表达式二叉树节点。
- `destroyNode`:用来销毁一个表达式二叉树节点及其所有子节点。
- `freeTree`:用来释放整个表达式二叉树占用的内存。
接下来,我们定义了 `buildExpressionTree` 函数,用来构建表达式二叉树。这个函数使用递归的方法,先找到当前表达式中优先级最低的运算符,然后将它作为根节点,递归构建左右子树。如果表达式中没有运算符,则构建一个节点并返回。
最后,我们定义了 `calculateExpressionTree` 函数,用来计算表达式二叉树的结果。这个函数也使用递归的方法,先判断当前节点是不是数字,如果是,则返回它存储的值。如果不是,则分别计算左右子树的结果,然后根据当前节点的运算符计算结果并返回。
在 `main` 函数中,我们首先读入一个四则混合运算表达式,然后调用 `buildExpressionTree` 函数构建表达式二叉树,再调用 `calculateExpressionTree` 函数计算表达式的结果,并输出结果。
最后,我们调用 `freeTree` 函数释放表达式二叉树占用的内存。