您好,我正在编写一个程序,需要使用函数迭代数组并选出具有大写M的索引号,然后返回该索引号,并且仅针对首次出现的大写字母M.找不到大写字母M,然后返回值-1。这就是我现在拥有的东西(因为我不熟悉函数,所以我可以在左边的领域出来)。
#include <stdio.h>
int findM (char string[], int numVals){
int i = 0;
int indexM;
for (i = 0; i < numVals; ++i){
if (string[i] == 'M'){
indexM = string[i];
break;
}
else {
indexM = -1;
}
}
return indexM;
}
int main(void) {
char userString [15] = "M as in Mancy";
printf("%d",findM(userString, 15));
return 0;
}
在这个例子中,预期的结果是0,因为这个字符串的第一个元素是大写M,但是,编译和运行时我的结果是77。谢谢你的帮助!
答案 0 :(得分:1)
你得到这个是因为你在indexM变量中插入了MCI的ASCI值,但你应该保留那个字符M的索引,对吧?在findM函数中如下所示:
for (i = 0; i < numVals; ++i){
if (string[i] == 'M'){
indexM = i;
break;
}
else {
indexM = -1;
}
}
return indexM;
}
答案 1 :(得分:1)
阿卜杜勒的回答是真的,你将char值分配给 indexM 除了我想要摆脱不必要的 else 陈述
int findM(char string[], int numVals) {
int i = 0;
int indexM=-1;
for(i = 0; i < numVals; ++i) {
if(string[i] == 'M') {
indexM = i;
break;
}
}
return indexM;
}