- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
你好,我正在编写一个 C 程序,我有一个名为 bool is_proper_case(char str[]) 的辅助函数,如果大写字母仅出现在 str 的开头或紧跟在句点之后,该函数将返回 true。此外,只有大写字母或 NULL 终止符可以跟在句点之后。例子是:
assert(is_proper_case("Hello world.") == true);
assert(is_proper_case("hello world.") == true);
assert(is_proper_case("i like C language.very much.") == false);
assert(is_proper_case("This sentence is not.correct.") == false);
编辑代码:
bool is_proper_case(char str[]) {
int len = 0;
for (int j=0 ;str[j]!= 0 ; j++)
{
len++;
}
int output = 0;
for (int i=0 ; i<=len-1 ; i++)
{
if (str[i]=='.'&& (str[i+1]<='z' && str[i+1]>='a'))
{
output = 0;
}
else if ('A'<=str[i]<='Z')
{
output = 1;
}
else output = 0 ;
}
printf ("%d", output);
return output;
}
我的问题是:我无法断言上述陈述,我断言失败了。(有一些逻辑错误)
我不知道我在这段代码中遗漏了什么请注意,我是 C 编程的初学者所以请耐心等待。
提前致谢
最佳答案
下面的代码应该可以完成你想要的。我确实写了一堆注释来帮助您理解代码中发生的事情。希望你能明白。您可能想要支持一些额外的东西:
#include <assert.h> // for assert()
#include <stdbool.h> // bool support in C99 or higher.
#include <stdlib.h> // for EXIT_SUCCESS
#include <string.h> // for strlen()
bool has_proper_case(const char *str) {
// Start by assuming the string has proper case. Conforming.
bool result = true;
// How long is the string?
const size_t len = strlen(str);
// State variables
bool is_upper = false;
bool is_period = false;
bool is_after_period = false;
// Iterate over the entire string.
for (size_t i=0; i < len; i++) {
// This will only be true if the previous character was a period.
is_after_period = is_period;
// This will only be true if the current character is a period.
is_period = str[i] == '.';
// This will only be true if the current character is uppercase.
is_upper = str[i] >= 'A' && str[i] <= 'Z';
if (i > 0) // Are we past the beginning of the string?
{
// Uppercase is mandated after a period.
if (is_after_period && !is_upper) {
result = false; // Set the result to false. Non-conforming.
break; // Break out of the loop.
}
// Uppercase is not tolerated anywhere besides after a period.
if (is_upper && !is_after_period) {
result = false; // Set the result to false. Non-conforming.
break; // Break out of the loop.
}
} else { // Are we at the beginning of the string?
// Uncomment if uppercase is mandated at the beginning of the string.
// if (!is_upper) {
// result = false;
// break;
// }
}
}
return result;
}
int main()
{
assert(has_proper_case("Hello world.") == true);
assert(has_proper_case("hello world.") == true);
assert(has_proper_case("Uppercase is mandated after a period.Test") == true);
assert(has_proper_case("Uppercase is mandated after a period.test") == false);
assert(has_proper_case("Uppercase is mandated after a period. test") == false);
assert(has_proper_case("Uppercase is NOT tolerated anywhere besides after a period.Test") == false);
return EXIT_SUCCESS;
}
关于c - C程序中用于检查字符大小写的 bool 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28955354/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
出于某种原因,右栏中的精选文章忽略了“#elementtext”和“#elementtext:hover”属性。仅显示“p.element”和“img.element”。 有什么想法吗? 谢谢 - 塔
我有两个值,每个值都来自不同的枚举。我想检查这两者的允许组合,如果没有找到则执行默认操作。我能以某种方式对这两个值进行切换/大小写吗?我想避免使用多个 if/else 语句或遵循位掩码模式的枚举,只是
我需要 where 但 not 大小写。例如,我想找到没有名字“莎士比亚”的戏剧: _.where(listOfPlays, {author: !"Shakespeare", year: 1611})
我想实现一个 parking 场应用所以有一个带5个或更多 parking 位的车库当司机 parking 时,车库中的下一个空闲位置应该分配给他。 所以我有一个带 5 个或更多插槽的 table 上
我想使用 Erlang 来确定传递给函数的变量是否可以被数字整除。我考虑过使用 case 来执行此操作,但是我找不到解决方案。 case 是适合这项工作的工具吗? 示例:将数字传递给函数 f()。如果
我在 phpmyadmin 中创建了一个表,其列名如 first_name、last_name。当我使用命令显示表中的列名时,它会将它们显示为 first_name。 我想显示我的列名称,如 Firs
使用 Swift 4,如何使用这些规则格式化字符串: 如果单词超过 3 个字母,则首字母大写,否则大写 包含像 St-Michel 这样的连字符的 Pascal 大小写单词 我这里有初稿,但我一直在思
这个问题在这里已经有了答案: Why can't the switch statement be applied to strings? (23 个回答) 关闭 8 年前。 大家好 所以我正在尝试对
在 MVC 操作中,我如何访问使用多个同名值提交的“表单数据”中的值? 我做了什么:int、decimal、string 类型的值工作完美。 问题:每个变体都有一个复选框,所以当我尝试获取它时,它只显
while(1) { char buff[1000]; printf("Enter the word: "); fgets(buff, 1000
我有一个 Dllmain,它在线程附加到此 DLL 时分配线程本地存储。代码如下: BOOL APIENTRY DllMain(HMODULE hModule,
我有一个变量名,比如“WARD_VS_VITAL_SIGNS”,我想将它转换为 Pascal 大小写格式:“WardVsVitalSigns” WARD_VS_VITAL_SIGNS -> WardV
我是 Swift 编码的新手,正在尝试弄清楚如何在触摸节点时制作具有开/关功能的循环音频。我认为实现它的最佳方式是通过 SKAudioNode,但我不确定我在以下代码中做错了什么。当在节点上按下时 -
这是我第一次使用这种枚举,具有关联值类型的枚举,我需要根据对象的类型制作一个 switch 语句,我无法做到,这是枚举: enum TypeEnum { case foo(FooClass)
我想从字符串中删除所有下划线,下划线后面的字符为大写。因此,例如:_my_string_ 变为:MyString 同样:my_string 变为 MyString 有没有更简单的方法呢?我目前有以下内
如何在 Java 中将蛇形大小写转换为 Camel 形大小写? 输入:“input_in_snake_case” 输出:“InputInSnakeCase” 最佳答案 Guava通过其CaseForm
我们有一个表auth_group_access,那么如何使用呢? 在使用M方法时,对于带下划线的表名,可以采用如下方法。 M('AuthGroupAccess'); 对应sql语句SQL: S
我正在制作一个 pygame 游戏,每当我运行我的代码时,我都会收到错误 expected ':'。我知道在 match/case block 中使用 [ 和 ] 用于其他用途,但我该如何解决这个问题
有人能告诉我是否可以使用正则表达式将 url 转换为小写? 这是在 html img 标签内,所以我们可以通过标签找到网址。 这是我所拥有的一个例子 我需要在最后小写图像名称。 该文档包含更多 H
我是一名优秀的程序员,十分优秀!