c语言中scanf语句问题以及数据类型的关系,详细见问题补充。

详细问题注释中的比较已经说明#include<stdio.h>intmain(void){inti,x;chara[100];//字符型scanf("%d",&x);fo... 详细问题注释中的比较已经说明
#include <stdio.h>
int main(void)
{
int i,x;
char a[100]; //字符型
scanf("%d",&x);
for(i=0;i<=x;i++)
{
scanf("%c",&a[i]); //在这输入值不要回车
}
printf("a[0]=%c\n",a[0]); /*为什么a[0]没有值?似乎受到scanf("%d",&x)的影响,若把 x赋常数,同时去掉scanf("%d",&x)语句,则a[0]有值*/
return 0;
}
#include <stdio.h>
int main(void)
{
int i,x;
int a[100]; //整型
scanf("%d",&x);
for(i=0;i<=x;i++)
{
scanf("%d",&a[i]); //在这输入值要回车
}
printf("a[0]=%d\n",a[0]); /*这样的话a[0]有值*/
return 0;
}
展开
 我来答
逆光而行1998
推荐于2017-10-03 · TA获得超过195个赞
知道答主
回答量:107
采纳率:0%
帮助的人:112万
展开全部
事实上不应是scanf("%d",&x);而是scanf("%d\n",&x); 否则a[0]读入的是回车符,即\n;

在用c语言编写输入语句的时候常用到scanf函数,初学者在刚用scanf函数输入时,经常会遇到各种各样的输入错误,最重要的是一定要记住scanf函数的输入格式,scanf函数里包含了哪些东西,输入的时候就必须有哪些东西,比如:scanf("%c%c%c"),那么输入的时候就必须连续输入3个字符,中间不能有任何空格逗号或者回车符等分开,而如果是scanf("%c,%c,%c"),那么输入3个字符的时候中间就必须用一个逗号分隔。
scanf函数最常用的两种输入方式%d整数输入方式,以及%c字符输入方式。
用%d方式输入整数时,输入一串数字然后按回车符,输入就完成了。而用%c方式输入字符时,就稍微复杂一点。一般来说用%c输入字符时,当输完以后,都习惯按一下回车,这时回车符就成了一个问题。
【例1】:
scanf("%c",&a); /*此时输入一个字符,并按下回车,那么变量a将会正确接收输入的字符*/
scanf("%c",&b); /*但是变量b将会接收到回车符,其值为10,或者说ASCII码为10*/
【例2】:
scanf("%d",&x); /*此时输入一串数字并回车,变量x将正常接收到输入的整数*/
scanf("%d",&y); /*变量y不会接收到回车符,需要用户继续输入数字,并回车,正常接收到整数*/
【例3】:
scanf("%d",&x); /*此时输入一串数字并回车,变量x将正常接收到输入的整数*/
scanf("%c",&a); /*但是变量a将会接收到回车符,其值为10,或者说ASCII码为10*/
【例4】:
scanf("%d",&x); /*此时输入一串数字并回车,变量x将正常接收到输入的整数*/
scanf("%d",&y); /*若此时输入的是字母而不是数字,比如输入“s”并回车*/
/*那么变量y将不会接收到任何字符或数字,其值保持原样,不发生任何改变*/
scanf("%c",&a); /*此时变量a将接收到上一步输入的字母*/
/*即变量a中存储的字符将是"s",而不是回车符*/
【结论】:
当输入完整数或字符时,后面还需要输入字符时,为了避免输入的字符变成回车符,可以在输入字符前多加一条scanf语句来吃掉前面的回车符。此时用来吃掉回车符的scanf输入可以用%c方式,也可以用%d方式。当用%c方式来吃掉回车符时,回车符被读进了char类型变量中,当用%d方式来吃掉回车符时,回车符并没有被送进int类型变量中,而是在异常的字符输入后,被自动清除了。
神速小羊
推荐于2018-03-29 · TA获得超过1.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:2%
帮助的人:4482万
展开全部
int 是定义整形的数据
float是定义单精度实数(想当于是小数)
scanf就是输入函数,用来接收键盘输入的数字或者字符
用法嘛,就是 int a=23;
float b=5.63;
scanf("%d%f",&a,&b);
这里scanf函数,会把接收的a和b赋予到a和b
相当于是实现了电脑和人之间的一个交换。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tomeling
2012-12-20 · 超过13用户采纳过TA的回答
知道答主
回答量:132
采纳率:0%
帮助的人:52.9万
展开全部
fflush(stdin);

用这个函数清除键盘缓冲区
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式