C语言上机题目

来源:百度知道 编辑:UC知道 时间:2024/05/21 12:55:12
str为一个字符序列,fun的功能是查找str中值为ch的元素,返回找到的ch的元素个数,并把这写值为ch的元素下标依次保存到数组bb中
这个程序我有个疑问 就是①处的i代表数值为ch的元素下标,将它赋给对应的bb[n],那是不是应该将i++放在while循环里面,为什么程序把它放在了if里面,不太明白 希望大虾指教
#include <stdio.h>
#include <conio.h>
#define N 20
int bb[N];
int fun(char *str, char ch)
{
int i = 0, n = 0;
char t = ch;
char *p = str;
while (*p)
{
if (*p==t)
bb[n++]=i;
p++;
i++;①
}
return n;
}
main()
{
char str[N];
char ch;
int i, n;
printf("******* Input the original string*******\n ");
gets(str);
printf("******* The Original string *******\n");
puts(str);
printf("******* Input character *******\n");
scanf("%c", &ch);
n = fun(str, ch);
printf(" \nThe number of character is: %d\n", n);
printf("******* The suffix of character *******\n

if (*p==t)
bb[n++]=i;

if 只管下面的这一句
p++跟i++都是while里面的

i++已经在while循环里面了啊,if也在while循环里面了,你看while循环语句有一个括号。
while (*p)
{
if (*p==t)
bb[n++]=i;
p++;
i++;
}
如果没有括号,那就只管到下一句分号结束。而if语句没有括号,所以if语句只管到下面一句,即b[n++]=i;