为什么我的程序在获取k
的输入然后显示之前关闭。
我正在为基于菜单的程序编写代码,所以我需要在输入信息后从用户那里获取输入,这样我才能拥有1.Print名称2.Exit 在这样做时,我意识到我的程序没有接受输入,只是跳过了应该从用户获取l值的部分。所以试图调试它我删除了东西并归结为这个简单的程序,并意识到它仍然不会有任何想法为什么?
#include <stdio.h>
struct student
{
char name[50];
char lname[50];
float marks;
} s[15];
int main ()
{
int i, j,k;
printf("Please enter the number of students:\n");
scanf ("%d", &j);
printf ("Please enter the information for students as asked.\n");
for (i = 0; i < j; i++)
{
scanf ("%s %s %f\n", s[i].name, s[i].lname, &s[i].marks);
}
printf("Please enter a number\n");
scanf ("%d", &k);
printf("your number was %d", k);
return 0;
}
答案 0 :(得分:1)
scanf ("%s %s %f\n", s[i].name, s[i].lname, &s[i].marks);
应该是
scanf ("%s %s %f", s[i].name, s[i].lname, &s[i].marks);
scanf中的\n
只占用换行符。它将继续使用换行符,直到找到非换行符,然后将其放回到stdin以进行下一个IO操作
答案 1 :(得分:0)
试用此代码
#include<stdio.h>
typedef struct student
{
char name[50];
char lname[50];
int mark;
}S;
int main ()
{
int i, j,k;
printf("Please enter the number of students:\n");
scanf ("%d", &j);
S record[j];
for (i = 0; i < j; i++) {
printf ("Please enter the information for %d student as asked.\n",i+1);
scanf ("%s %s %f",record[i].name, record[i].lname, &record[i].mark);
}
printf("Please enter a number\n");
scanf ("%d", &k);
printf("your number was %d \n", k);
return 0;
}
你在结构声明本身中声明了结构学生数组。你必须在main函数中声明数组。