我的C语言代码哪里错了?
voidmain(){inta,b;scanf("%d",&a);(a==1)?printf("AAAAA"):printf("");scanf("%d",&b);(b=...
void main()
{
int a, b;
scanf("%d", &a);
(a==1)?
printf(" AAAAA"):
printf(" ");
scanf("%d", &b);
(b==1)?
printf("BBBBB"):
printf(" ");
}
1. 我把以上的代码里的a,b分开,如下,写为什么运行不了?
void main()
{
int a;
scanf("%d", &a);
(a==1)?
printf(" AAAAA"):
printf(" ");
int b;
scanf("%d", &b);
(b==1)?
printf("BBBBB"):
printf(" ");
}
2.我想把b设置成一个字符用,如下,为什么也运行不了?
void main()
{
int a;
char b;
scanf("%d", &a);
(a==1)?
printf(" AAAAA"):
printf(" ");
scanf("%c", b);
(b=='a')?
printf("BBBBB"):
printf(" ");
} 展开
{
int a, b;
scanf("%d", &a);
(a==1)?
printf(" AAAAA"):
printf(" ");
scanf("%d", &b);
(b==1)?
printf("BBBBB"):
printf(" ");
}
1. 我把以上的代码里的a,b分开,如下,写为什么运行不了?
void main()
{
int a;
scanf("%d", &a);
(a==1)?
printf(" AAAAA"):
printf(" ");
int b;
scanf("%d", &b);
(b==1)?
printf("BBBBB"):
printf(" ");
}
2.我想把b设置成一个字符用,如下,为什么也运行不了?
void main()
{
int a;
char b;
scanf("%d", &a);
(a==1)?
printf(" AAAAA"):
printf(" ");
scanf("%c", b);
(b=='a')?
printf("BBBBB"):
printf(" ");
} 展开
7个回答
展开全部
scanf("%c", b);
scanf("%c", &b);这里估计是你手误
三目运算符,最好写在一行
(b=='a')?printf("BBBBB"):printf(" ");
程序没啥问题,不过这里你触到一个c的可以说不是bug的bug
因为回车也是字符,所以啊,当输入a变量后,你会以回车结束,这个你该明白
所以b会接收这个回车,所以啊,b变量没法再接收输入,你明白吗?
所以说,程序是没有问题,逻辑和语法都对,就是b接收不到数据。因为b接收了a输入的回车符
正常的做法是,当%c输入前面有输入语句的话,需要两种做法来规避这个不是bug的bug
一个是吸收,再两个输入中间加一个getchar()即可,吧上面的回车符吸收掉
另一个做法是清理缓存,用ffush(stdin)
scanf("%c", &b);这里估计是你手误
三目运算符,最好写在一行
(b=='a')?printf("BBBBB"):printf(" ");
程序没啥问题,不过这里你触到一个c的可以说不是bug的bug
因为回车也是字符,所以啊,当输入a变量后,你会以回车结束,这个你该明白
所以b会接收这个回车,所以啊,b变量没法再接收输入,你明白吗?
所以说,程序是没有问题,逻辑和语法都对,就是b接收不到数据。因为b接收了a输入的回车符
正常的做法是,当%c输入前面有输入语句的话,需要两种做法来规避这个不是bug的bug
一个是吸收,再两个输入中间加一个getchar()即可,吧上面的回车符吸收掉
另一个做法是清理缓存,用ffush(stdin)
展开全部
1.
void main()
{
int a;
int b; //标准C不支持半路定义变量,只能在函数开始区定义
scanf("%d", &a);
(a==1)?
printf(" AAAAA"):
printf(" ");
scanf("%d", &b);
(b==1)?
printf("BBBBB"):
printf(" ");
}
2.
scanf("%c", &b); //少了&,scanf()函数变量参数要求是指针
void main()
{
int a;
int b; //标准C不支持半路定义变量,只能在函数开始区定义
scanf("%d", &a);
(a==1)?
printf(" AAAAA"):
printf(" ");
scanf("%d", &b);
(b==1)?
printf("BBBBB"):
printf(" ");
}
2.
scanf("%c", &b); //少了&,scanf()函数变量参数要求是指针
追答
scanf("%c", &b); 是读字符操作,因为计算机读数据操作都是从缓存中去读取数据,而scanf()函数并不对回车符进行清除处理,所以,在读字符时,回车符也会当作有效字符被读到。
按你的描述,scanf("%c", &b); 前面应该还有一个读操作语句,因此,在scanf("%c", &b); 语句前面加一个getchar()就可以解决了。或者调用fflush(stdin)。改成如下:
fflush(stdin) ;
scanf("%c", &b);
scanf("%s", &b); //%c表示读取一个字符 %s表示读取多个字符,即字符串,会自动多写一个\0,而b只是一个字节空间,因此按%s读数据时,其值是正确的,但会导致内存访问错误。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个问题:你的变量a,b可以分开,但是声明例如:int a;int b;要放在函数体的最前排,你的代码中int b 放在了函数体的中间。
第二个问题:scanf("%c", b);错了,应该是scanf("%c", &b );scanf函数的用法别搞错了,要注意!
第二个问题:scanf("%c", b);错了,应该是scanf("%c", &b );scanf函数的用法别搞错了,要注意!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1:C不允许在代码中间声明变量,你的int b;违反了这一规定。
2:将scanf("%c",&b);改成scanf(" %c",&b);(%前有个空格),用那个空格吸收掉前面的scanf遗留在缓冲区里的驾车符……
2:将scanf("%c",&b);改成scanf(" %c",&b);(%前有个空格),用那个空格吸收掉前面的scanf遗留在缓冲区里的驾车符……
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先第一个,C语言,假如编译器不是C99的标准,变量的声明必须在程序的起始。如果第一种代码文件后缀改为.cpp,应更改就没问题。因为C++可以随时声明变量。。。
scanf("%c", b); 你确定这句没打错???scanf("%c",&b) ;
scanf("%c", b); 你确定这句没打错???scanf("%c",&b) ;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询