SamPoterBridges 2022-09-10 11:47 采纳率: 100%
浏览 78
已结题

c语言输入时出现跳过输入的情况,输出时一片空白

输入时性别和电话的输入直接跳过了
输出时表中没有信息
我改了几遍代码,实在是不知道错在哪里,希望有人指点指点。

img

img

img

img

代码如下:#include <stdio.h>
//声明一个结构体类型
struct stu{
long int stnum;//学生学号
char stname[20];//学生姓名
int age;//年龄
float weight;//体重
char sex;//f女,m男
long int phone;//电话

};
int main(int argc,char *argv[])
{
//建立表

struct stu p[6];
int i;
//输入学生的信息
for(i=0;i<7;i++){
printf("请输入第%d位同学的信息",i+1);
printf("\n姓名:");
gets(p[i].stname);
printf("\n学号:");
scanf("%ld",&p[i].stnum);
printf("\n性别:");
p[i].sex=getchar();
printf("\n年龄:");
scanf("%d",&p[i].age);
printf("\n体重:");
scanf("%.lf",&p[i].weight);
printf("\nTEL:");
scanf("%ld",&p[i].phone);
};
//输出信息
printf("\n学生信息如下:");
printf("\n-\n");
printf("序号\t|\t姓名\t|\t学号\t|\t性别\t|\t年龄\t|\t体重\t|\tTEL\t|\n");
printf("-\n");
for(i=0;i<7;i++){
if(p[i].sex=='f')
printf("i\t|\t%s\t|\t%ld\t|\t女\t|\t%d\t|\t%.lf\t|\t%ld\t|\n",p[i].stname,p[i].stnum,p[i].age,p[i].weight,p[i].phone);
if(p[i].sex=='m')
printf("i\t|\t%s\t|\t%ld\t|\t女\t|\t%d\t|\t%.lf\t|\t%ld\t|\n",p[i].stname,p[i].stnum,p[i].age,p[i].weight,p[i].phone);
printf("-\n");
};

};

由于不能重复输入-,所以我剩下了一个

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2022-09-10 15:02
    关注

    修改如下,供参考对照:

    //代码如下:
    #include <stdio.h>
    #define N 7
    //声明一个结构体类型
    struct stu{
        long int stnum;//学生学号
        char  stname[20];//学生姓名
        int   age;//年龄
        float weight;//体重
        char  sex;//f女,m男
        long int phone;//电话
    };
    int main(int argc,char *argv[])
    {
        //建立表
        struct stu p[N]; //struct stu p[6];
        int i;
        //输入学生的信息
        for(i=0;i<N;i++){
            printf("请输入第%d位同学的信息",i+1);
            printf("\n姓名:");
            scanf("%s",p[i].stname);//gets(p[i].stname);
            getchar();
            printf("\n学号:");
            scanf("%ld",&p[i].stnum);
            getchar();
            printf("\n性别:");
            scanf(" %c",&p[i].sex);//p[i].sex=getchar();
            getchar();
            printf("\n年龄:");
            scanf("%d",&p[i].age);
            getchar();
            printf("\n体重:");
            scanf("%f",&p[i].weight);//scanf("%.lf",&p[i].weight);
            getchar();
            printf("\nTEL:");
            scanf("%ld",&p[i].phone);
            getchar();
        }   //;
        //输出信息
        printf("\n学生信息如下:");
        printf("\n-\n");
        printf("序号\t|\t姓名\t|\t学号\t|\t性别\t|\t年龄\t|\t体重\t|\tTEL\t|\n");
        printf("-\n");
        for(i=0;i<N;i++){
            if(p[i].sex=='f')
                printf("%d\t|\t%s\t|\t%ld\t|\t\t|\t%d\t|\t%.lf\t|\t%ld\t|\n",
                       i+1,p[i].stname,p[i].stnum,p[i].age,p[i].weight,p[i].phone);
            if(p[i].sex=='m')
                printf("%d\t|\t%s\t|\t%ld\t|\t\t|\t%d\t|\t%.lf\t|\t%ld\t|\n",
                       i+1,p[i].stname,p[i].stnum,p[i].age,p[i].weight,p[i].phone);
            printf("-\n");
        } //;
        return 0;
    }//;
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 9月18日
  • 已采纳回答 9月10日
  • 创建了问题 9月10日

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)