【发布时间】:2017-08-22 01:11:24
【问题描述】:
所以我会详细说明标题 -
我声明了一些函数,然后在main 中调用它们。
所有函数都使用scanf,并且应该在相同的输入上执行它们的操作。
我的问题是我被提示为每个函数提供一个输入(每个 scanf),但我想要一个提示。考虑到所有函数都使用相同的输入,我认为这很简单。
不过,这里有个大问题 - 我的输入保证是一系列字母(即一个单词 - 比如“你好”),我不能使用任何类型的字符串、数组或指针。
我在任何地方都没有发现任何关于此的内容。这个可以吗?
编辑 - 示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
/*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^
functions - all the functions we later call for in 'main'
*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*/
//*^*^*^*^*^*^* function 1 (find sum of letter values)
int word_sum() {
char letter = '\0';
int sum = 0;
while (letter != '.') {
sum += (int)letter;
scanf("%c", &letter);
}
return sum;
}
//*^*^*^*^*^*^* function 2 (number of letters in input)
int char_count() {
char letter = '\0';
int i = 0;
for (i = 0; letter != '.'; i++) {
scanf("%c", &letter);
}
return i - 1;
}
//*^*^*^*^*^*^* function 3 (does something with same input)
//more functions
/*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^
main
*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*^*/
int main() {
printf("Enter word:\n");
printf("the sum is %d\nchar num is %d\a", word_sum(), char_count());
return(0);
}
/* ===================
input = hi.
desired output -
--------------------------
Enter word:
hi.
the sum is 209
char num is 2
--------------------------
current output -
--------------------------
Enter word:
hi.
hi.
the sum is 219
char num is 2
--------------------------
=====================*/
我使用“。”在输入结束时,因为我们保证我们得到的所有输入都会以它结束。
如图所示,我无法使用单个提示来初始化这两个函数。
我不仅要输入两次这个词,而且(我猜)因为它还读取“新行”或其他内容,甚至函数结果也会出现偏差。
我知道这可以通过单个函数和 scanf 来完成。
但我以后至少会有 5 个函数,而且每个函数都有行数限制。所以看来我最终不得不以一种或另一种方式面对这个问题。
话虽如此,如果您能想出一个不同的解决方案来维护这些功能,那么它可能是相关的。
非常感谢大家迄今为止的所有帮助!
【问题讨论】:
-
“不能使用任何类型的字符串、数组或指针”——有点限制你的选择,不是吗?
-
是的,很遗憾。这是家庭作业的一部分...
-
你需要提供一些代码;你的问题不清楚。您将如何使用
scanf()来读取像hello这样的输入而不将该输入存储在数组中?scanf()将如何对同一输入多次执行不同的操作?目标是什么? -
您可以将
char myLetter = 'h'与字母ello然后printf("%c", myLetter)并排使用。您需要使用字符类型。 gl 与家庭作业/scanf("%c", myLetter) -
你怎么说this?