#include "stdio.h"
int main() {
char input[10];
char standart;
int i;
int b = 0;
scanf("%c", &standart);
for(i = 0; i < 10; i++){
scanf("%c ", &input[i]);
if(input[i] == standart){
b++;
}
}
printf("%d", b);
return 0;
}
// ( 2 % a b ( r ) ? ( (
代码是为了读取列表中的第一个字符,然后查看有多少个字符(不包括它自己)。但是代码没有读取最后一个字符,简而言之,当我输入样本输入时,代码只看到2'('它应该看到3。
答案 0 :(得分:0)
对于给定的输入( 2 % a b ( r ) ? ( (
,程序将第一个字符(
作为变量standart
的输入 -
scanf("%c", &standart);
问题出现了,因为在for
循环的第一次迭代中,scanf
正在读取(
之后存在的给定输入的第一个空格字符(空格)并存储它进入input[0]
。
for
循环运行10次迭代,最后一个字符(
未插入input
数组,因为standart
数组中的input
字符数为比预期更少,即2。
将for
循环scanf
语句更改为 -
scanf(" %c", &input[i]); //Removed the space after %c and added a space before %c.
这样,for循环scanf
将占用空格字符。
因此,输入中的下一个字符 - 2
将存储到input[0]
,而%
将存储到input[1]
,依此类推,最后一个字符为&#39;(& #39;将存储到input[9]
。
并且b
在standart
数组中具有正确的input
字符数,即3。
答案 1 :(得分:0)
你必须这样做scanf(" %c",&c);
因为它上面写着&#39; \ n&#39;从之前的输入中,空格将跳过&#39; \ n&#39;