gpt4 book ai didi

C语言——从函数中返回一个值作为函数参数

转载 作者:太空宇宙 更新时间:2023-11-04 01:47:39 25 4
gpt4 key购买 nike

我的作业有问题。我需要计算字符串中大写字母的数量和元音的数量。不幸的是,它总是返回数字 0,看起来它的功能没有改变。在这之前一切正常。

这是我的代码:

#include <stdio.h>
#include <conio.h>
#include <string.h>

char *StringChange(char *text, int *upper, int *chars);

int main(void) {
char text[40];
int upper, chars;

puts("Type a string");
gets(text);

StringChange(text, &upper, &chars);

puts("Change words to start with upper case and change white spece to *");
puts(text);
printf("Quantity of upper case in string: %d\n", upper);
printf("Quantity of vowels: %d", chars);

getch();
return 0;
}

char *StringChange(char *text, int *upper, int *chars) {
int i, length;

length = strlen(text);

for (i = 1; i <= length; i++) {
if (text[i - 1] == '*' && (text[i] >= 'a' && text[i] <= 'z')) {
text[i] = text[i] - 32;
}
if (text[i] == ' ') {
text[i] = '*';
}
if (text[i] >= 'A' && text[i] <= 'Z') {
*upper = *upper + 1;
/* *upper++; that also doesn't work */
}
if (text[i] == 'a' || text[i] == 'e' || text[i] == 'i' || text[i] == 'o' || text[i] == 'u' || text[i] == 'y') {
*chars = *chars + 1;
/* *chars++; that also doesn't work */
}
}

if (text[0] >= 'a' && text[0] <= 'z') {
text[0] = text[0] - 32;
}

return (text);
}

最佳答案

我试过你的代码,我确实得到了非零结果——当然,这取决于输入,所以你可能只测试产生零的字符串。

然而,结果并不总是正确的。我在代码中发现了两个问题:

1) 正如评论中指出的,您应该将 upperchars 初始化为 0。

2) 您从索引 1 开始循环,而不是索引 0。我认为您这样做是为了在循环内查看 text[i-1],但它导致您从总数中排除第一个字符。您应该启动循环索引和 0 并找出在循环内处理它的不同方法。 (提示 - 请注意,循环中的第一个 if 和循环之后的条件具有相似的条件和相同的主体。)

关于C语言——从函数中返回一个值作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50426296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com