2 fgsdkgf fgsdkgf 于 2014.12.12 12:47 提问

C语言自己写的程序有个小错,求改下

#include
int main()
{
int n,l,k,y,t1,t2,t3;char x1,x2,x3;t1=0;t2=0;t3=0;
printf("请输入现在队伍的列数:\n");
scanf("%d",&n);
printf("拉面的制作时间:\n");
scanf("%d",&l);
printf("烤肉的制作时间:\n");
scanf("%d",&k);
printf("饮料的制作时间:\n");
scanf("%d",&y); //似乎把这里的回车键给算到下面的getcahr()里面去了,怎么办??谁能帮忙改下
printf("第3对的排列情况:\n");
while((x3=getchar())!='\n')
{
switch(x3)
{
case 'A':t3=t3+l+k+y;break;
case 'B':t3=t3+2*l+k;break;
case 'C':t3=t3+3*l+3*k+2*y;break;
}
}
printf("第2对的排列情况:\n");
while((x2=getchar())!='\n')
{
switch(x2)
{
case 'A':t2=t2+l+k+y;break;
case 'B':t2=t2+2*l+k;break;
case 'C':t2=t2+3*l+3*k+2*y;break;
}
}
printf("第1对的排列情况:\n");
while((x1=getchar())!='\n')
{
switch(x1)
{
case 'A':t1=t1+l+k+y;break;
case 'B':t1=t1+2*l+k;break;
case 'C':t1=t1+3*l+3*k+2*y;break;
}
}
if(t1>t2)t1=t2;
if(t1>t3)t1=t3;
printf("\nOutput:\n最快吃上饭的那个队伍的排队时间:%d\n",t1);
return 0;
}

5个回答

lx624909677
lx624909677   Ds   Rxr 2014.12.12 13:36
已采纳

在scanf("%d",&y);的下一行,加getchar();就可以了

fgsdkgf
fgsdkgf 谢谢,果然OK
3 年多之前 回复
wanawt
wanawt   2014.12.12 13:51

楼上正解,scanf不会读取\n,因此在缓冲池中还存在一个\n

fgsdkgf
fgsdkgf 谢谢,明白了
3 年多之前 回复
Dr_meng
Dr_meng   2014.12.12 22:01

你可以再加一个getchar();就行了这样就不会影响到后面的getcher了

Dr_meng
Dr_meng   2014.12.12 22:01

你可以再加一个getchar();就行了这样就不会影响到后面的getcher了

Reflux_
Reflux_   2014.12.15 11:10

可以在每个scanf后面加上屏蔽多余输入的代码,这样能保证每次都是独立的输入,不会将前面的输入混到后面的scanf中去
while (1)
{
if ( '\n' == getchar() )
{
break;
}
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
【记录】编写用以输出个十百位数的C语言小程序
任务要求:编写程序,输入一个3位整数,打印输出其个位数、十位数和百位数。 开发环境:Visual C++ 6.0 代码如下: #include void main() { int A,a,b,c; printf("请输入一个3位整数:\n"); scanf("%d",&A) a=A/100; b=A/10%10; c=A%100%10; printf("个位数为:%d
编写一个程序,被调用后,能求出平均分,最高分,最低分
问题描述: 有一个一维数组,存放十个学生的成绩,编写一个程序,当主函数调用此函数后,能求出平均分,最高分,最低分。 解题思路: 众所周知,一个函数只能带回一个函数返回值,此处,要求通过函数调用得到三个值,那该怎么办呢?------------->>>>全局变量可以解决这个问题 代码如下: #include float Max; //全局变量, 存放最大值,整个源程序有效(定义开始到整
自写的一个开根号(开方)程序 c语言
#include main(){int shuzi;double xiaoshu=0.1,c,lastc;;c=shuzi;scanf("%d",&shuzi);c=shuzi;for(;c*c>shuzi;)c-=1;for(;xiaoshu>0.0000001;){while(c*c<shuzi){lastc=c;c=c+
纯C语言求点集的凸包程序(含边界提取)
求取点集凸包的数学原理为最简单的,在网上能够找到。 /******************************************************************************* * 文件名称 : GeoEnvelope.h * 当前版本 : 1.3 * 作 者 : I_am_No3 * 设计日期 : 2017年3月8日 * 内容摘要 :
c语言:有4个圆塔,已知圆心和半径,塔以外无建筑物。输入任一点坐标,求该点的建筑高度
有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1。这4个塔的高度为10m,塔以外无建筑物。今输入任一点的坐标,求该点的建筑高度(塔外的高度为0)解:程序:#includeint main(){ int h=10; float x1 = 2, y1 = 2, x2 = -2, y2 = 2, x3 = -2, y3 = -2, x4 = 2, y4 = -2,
我的第三个C语言:计算两个电阻的并联电阻。
问题及代码:问题:计算两个电阻的并联电阻。 代码:#include #include int main() { float r1,r2,R; printf("请输入电阻r1的阻值\n"); scanf("%f",&r1); printf("请输入r2的阻值\n"); scanf("%f",&r2); R=1/(1/r1+1
自己动手写C语言编译器(1)
直接上代码 (表达式树  在此 初具 模型 )   由于没有做前期的“词法分析”, 1.支持 单个 字符 形式的变量 2.支持 单个 字符形式的操作符 3.支持 优先级 。   不支持   1.不支持多个字符的操作符和变量。 2. 不支持左右结合性 3.不支持函数  4. 不支持语句  5. 不支持关键字。   这些将陆续添加 。   // MyCompil
【C语言】编写一个函数,求字符串长度
//编写一个函数,求字符串长度 #include #include int my_strlen(const char *p) { int len=0; assert(p); while (*(p++)) { len++; } return len; } int main() { char *p = "abcdef"; printf("%d\n", my_strlen(p))
《C语言及程序设计》实践参考——电阻并联
返回:贺老师课程教学链接  C语言及程序设计初步  项目要求题目:编程序,输入两个电阻R1和R2的阻值,求它们并联后的阻值R 提示:计算公式为r=1/(1/r1+1/r2));电阻值为浮点数参考解答:
求最小生成树 C语言描述
原帖地址:http://blog.163.com/zhoumhan_0351/blog/static/39954227200972732436582/ 克鲁斯卡尔算法: 算法构造一棵最小生成树的过程如下: 算法的描述: 在图中任取一个顶点K作为开始点,令U={k},W=V-U,其中V为图中所有顶点集,然后找一个顶点在U中,另一个顶点在W中的边中最短的一条,找到后,将该边作为最小