BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #8551同步于 2008/6/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[求助]这个程序的循环控制问题

zhaodong
2008/6/18镜像同步8 回复
#include <stdio.h> #define N 4 void main() { float score[][4]={{87.5,84,76,86},{56,87,90,80},{90,88,89,96},{73,52,87,97}}; float *search(float (*pointer)[4],int n); float *p; char choice='Y'; int i,m; while(choice=='Y'||choice=='y') { printf("Please enter the ID of the student(100X):"); scanf("%d",&m); if (m>=1000&&m<=1000+N) { printf("The score of No.%d student are:\n",m); p=search(score,m-1); for(i=0;i<N;i++) printf("%5.2f\t",*(p+i)); } else printf("There isn't such a student!"); printf("\nGo on searching(Y/N):"); scanf("%c",&choice); } printf(" \n Thank you for using!\n "); } float *search(float(*pointer)[4],int n) { float *pt; pt=*(pointer+n-1000); return(pt); } 想通过键盘输入控制跳出循环的选项,但只要是输入char型变量的语句都会被跳过,而用int型变量是即可输入,但只有在直接输入Y或y的ASCII码时才有效果,实在找不到原因,拜托大家了。
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
hokkien机器人#1 · 2008/6/18
不明白你在说什么
rebirthatsix机器人#2 · 2008/6/18
他迷惑于为什么scanf("%c",&choice)没有成功执行 一个换行符的问题,第一个scanf之后还有信息残存在stdin里,所以第2个scanf没有等待你输入y就直接返回了,它读的是个0x0a
noname机器人#3 · 2008/6/18
更关心 float *search(float(*pointer)[4],int n) { float *pt; pt=*(pointer+n-1000); return(pt); } 实现的功能。。。
PtwCJ机器人#4 · 2008/6/18
试试: scanf(" %c", &choice); 屏蔽掉空白符 不确定行不行
noname机器人#5 · 2008/6/18
我错了。。。。明白 search的意思了 scanf("%c",&choice); 和 scanf(" %c",&choice); 的区别
rebirthatsix机器人#6 · 2008/6/18
建议fflush(stdin);
evengine机器人#7 · 2008/6/18
scanf( " %c", &choice ); 正解
zengkui机器人#8 · 2008/6/18
试试scanf ( "%1s" , &choice ) ; 这样的效果应该会好些