返回信息流#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码时才有效果,实在找不到原因,拜托大家了。
这是一条镜像帖。来源:北邮人论坛 / cpp / #8551同步于 2008/6/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[求助]这个程序的循环控制问题
zhaodong
2008/6/18镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
他迷惑于为什么scanf("%c",&choice)没有成功执行
一个换行符的问题,第一个scanf之后还有信息残存在stdin里,所以第2个scanf没有等待你输入y就直接返回了,它读的是个0x0a
更关心
float *search(float(*pointer)[4],int n)
{
float *pt;
pt=*(pointer+n-1000);
return(pt);
}
实现的功能。。。