【发布时间】:2017-04-22 23:20:15
【问题描述】:
因为我的第一篇文章不好所以重新发布。我有一个问题,我不确定该怎么做。我知道我要进行的过程,但不完全确定如何将字符串扫描到数组中,以便将每个字符/整数扫描到数组的独立元素中。我将发布问题和到目前为止的代码,我们将不胜感激。
问题:
假设我们有如下模式:([n][letter])+ 其中 n 是整数,字母是 a-z 中的小写字母之一。例如,2a 和 3b 是基于我们的模式的有效表达式。此外,模式末尾的“+”表示我们至少有一个表达式(字符串)或多个表达式附加。例如,2a4b 是另一个与模式匹配的有效表达式。在这个问题中,我们想将这些有效的表达式转换为一个字母重复 n 次的字符串。
o 从用户读取一个表达式(字符串)并在输出中打印该表达式的转换版本。
o 检查输入表达式是否有效。例如,2ab 不是一个有效的表达式。如果表达式无效,则在输出中打印“Invalid”并要求用户输入另一个表达式。
o 样本输入 1 = “2a”,输出 = aa
o 样本输入 2 = “2a3b”,输出 = aabbb
o 如果您简要说明您可以使用什么概念或理论来检查表达式是否有效,您将获得额外的分数。
到目前为止我所拥有的:
#include <stdio.h>
int main()
{
int size, i, j;
char pattern[20];
char vowel[20];
int count[20];
printf("Please enter your string: ");
gets(pattern);
size = strlen(pattern);
for(i=0; i<size; i++)
if((i+1)%2 == 0)
vowel[i] = pattern[i];
else if((i+1)%2 != 0)
count[i] = pattern[i];
for(i=0; i<size/2; i++);
for(j=0; j<count[i]; j++)
printf("%s", vowel[i]);
}
【问题讨论】:
-
从不使用
gets。它已从标准中删除,任何现代编译器/库都会至少发出警告。使用fgets。