#include<stdio.h>
struct worker
{
char name[20];
int number;
int age;
float salary;
};
int main()
{
/*struct worker w = { "zhangsan",1001,30,8000 };
struct worker* p=&w;
printf("%s %d %d %f\n", w.name, w.number, w.age, w.salary);
printf("%s %d %d %f\n", p->name, p->number, p->age, p->salary);*/
struct worker w1;
printf("请输入工人名字 编号 年龄 工资\n");
scanf_s("%s%d%d%f", w1.name,&w1.number,&w1.age,&w1.salary);
printf("工人名字:%s 编号:%d 年龄:%d 工资:%f\n", w1.name, w1.number, w1.age, w1.salary);
return 0;
}
scanf_s 改成 scanf 试试
在读取完salary
后,输入缓冲区中还有一个换行符,导致下一个 printf 函数在执行时读取到了这个换行符,然后就直接结束了。
可以进行如下修改
scanf_s("%s%d%d%f ", w1.name,&w1.number,&w1.age,&w1.salary);
//或
scanf_s("%s%d%d%f", w1.name,&w1.number,&w1.age,&w1.salary);
getchar();
如有帮助给个采纳 谢谢
这样改,见注释,供参考:
#include<stdio.h>
struct worker
{
char name[20];
int number;
int age;
float salary;
};
int main()
{
/*struct worker w = { "zhangsan",1001,30,8000 };
struct worker* p=&w;
printf("%s %d %d %f\n", w.name, w.number, w.age, w.salary);
printf("%s %d %d %f\n", p->name, p->number, p->age, p->salary);*/
struct worker w1;
printf("请输入工人名字 编号 年龄 工资\n");
scanf_s("%s%d%d%f", w1.name, 20, &w1.number, &w1.age, &w1.salary); // 修改
//scanf_s("%s%d%d%f", w1.name, &w1.number, &w1.age, &w1.salary);
printf("工人名字:%s 编号:%d 年龄:%d 工资:%f\n", w1.name, w1.number, w1.age, w1.salary);
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:我们先看10以内素数和是不是17:
0x11就是十进制的17,符合要求,再看看100(0x64)以内的结果:
回答:
非常抱歉,根据您提供的信息,我无法准确解决该问题。我需要更详细的信息才能提供针对性的解决方案。
如果您能够提供以下信息,我将会尽力帮助您解决问题:
此外,如果您有封装函数的操作,可以提供一下详细的说明。添加prompt可以帮助chatgpt更好地理解您所提出的问题。
谢谢!