C中的基本功能

时间:2016-10-24 05:51:02

标签: c function loops if-statement return

您好,我正在编写一个程序,需要使用函数迭代数组并选出具有大写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。谢谢你的帮助!

2 个答案:

答案 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;
}
相关问题