一个用scanf出现的奇怪问题,哪位大哥帮我解决一下吧。
#include "stdio.h"
#include "iostream.h"
#define N 100
long xh[N]; // 学号
char xm[N][20]; //姓名,
int sx[N],cx[N],sum[N],num,flag=0;//数学成绩,程序设计成绩,总分,记录的个数, 是否新建了数据
int create()
{
int n,i,j;
char k;
if(flag==1)
{
printf("数据已经被新建了,要重新初始化吗(Y/N)?\n");
scanf("%c",&k);
if(k!='Y'&&k!='y')return 0;
}
i=0;j=0;
printf("请输入要新建的学生数据的个数: ");
scanf("%d",&n);
num=n;
while(i<n)
{
printf("请输入学生的学号: ");
scanf("%ld",&xh[i]);
while(j<i)
{
if(xh[i]==xh[j])
{
printf("输入的学号有重复,请重新输入学号: ");
scanf("%ld",&xh[i]);
j=0;
}
else j++;
}
printf("请输入学生的姓名: ");
scanf("%s",xm[i]);
printf("请输入学生的数学成绩: ");
scanf("%d",&sx[i]);
printf("请输入学生的程序设计成绩: ");
scanf("%d",&cx[i]);
sum[i]=sx[i]+cx[i];
i++;
}
flag=1;
return 1;
}
void main()
{
int a=0;//选择序号
while(a!=6)
{
printf("1.新建数据\n");
printf("2.添加数据\n");
printf("3.删除数据\n");
printf("4.排序\n");
printf("5.查询\n");
printf("6.退出\n\n");
printf("请输入1—6的整数,选择你要进行的操作:");
scanf("%d",&a);
switch(a)
{
case 1: create();
}
}
scanf("%d",&a);
}
请大家注意:create()函数的第7行scanf("%c",&k);
编译运行程序,开始后新建程序,建立一个学生的就够了,然后回到主界面再选1.新建程序,为什么
scanf("%c",&k);这句话就像不存在一样直接就从函数中跳出来了?如果把这句话改成cin>>k;就一切正常了?这是为什么啊?我要交的是C语言的作业,不是C++的作业,不能用cin函数,哪位大哥能告诉我问题出在哪里吗?