C语言中的问题?

我现在碰到这样一个问题,就是C语言表示离散数学中的简单析取合取,我想自动判断输入的时候带不带非运算,比如1&0(&是我定义好的合取运算),这个时候我可以用Scanf(%d... 我现在碰到这样一个问题,就是C语言表示离散数学中的简单析取合取,我想自动判断输入的时候带不带非运算,比如1&0(&是我定义好的合取运算),这个时候我可以用Scanf(%d%c%d,&a,&b,&c),那如果输入的是!0&1,这个时候就会错误 展开
 我来答
a40304
2020-10-27 · 超过42用户采纳过TA的回答
知道小有建树答主
回答量:80
采纳率:60%
帮助的人:63.7万
展开全部
/*关于这个程序,我觉得应该是考你对结构体的掌握
结构体在我个人的理解,就是把一些有联系的东西集合起来,方便调用
打个比方有二十个人,要记录他们的身高和体重,如果用一般数组记录身高和体重,那么就得定义两个数组,而且用起来还麻烦
但用结构体的话,只用一个结构体的数组就行了,方便,简洁
*/
#include
#define N 2 //定义学生的个数,为了方便调试,我只写了2,你可以把2改为你想要的任意学生数
struct STUDENT //定义一个结构体
{
char name[8];
int num;
float score[3];
float average;
};

void output(struct STUDENT *stu,int n) //输出
{
int i,j,max=0;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
if(stu[j].average>stu[i].average)
max=j; //先输出平均分最高的
}
printf("%-8s %-8d %-6.1f\n",stu[max].name,stu[max].num,stu[max].average);
stu[max].average=-1;//输出后标记为-1
}
}

void input(struct STUDENT *stu,int n) //输入
{
int i;
for(i=0;i<n;i++)
{
scanf("%s %d %f %f %f",&stu[i].name,&stu[i].num,&stu[i].score[0],&stu[i].score[1],&stu[i].score[2]);
}
}

void calculate(struct STUDENT *stu,int n) //计算平均分
{
int i;
for(i=0;i<n;i++)
{
stu[i].average=(stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3; //三门课总和除以3
}
}

void main(void)
{
struct STUDENT stu[N];
int i;
printf("请输入:姓名、学号、数学成绩、英语成绩、计算机成绩(每个数据以空格格开)\n");

input(stu,N); //输入
calculate(stu,N); //计算

printf("排序后:\n");
printf("姓名 学号 平均分\n");

output(stu,N); //输出

}

/*
输入:
王五 1111 60 50 40
张三 2222 70 80 90
输出:
姓名 学号 平均分
张三 2222 80.0
王五 1111 50.0
*/
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
阳光上的桥
2020-10-26 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21424 获赞数:65803
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
要针对输入内容匹配不同的数据类型的组合,就不能直接scanf获取到变量,一般的办法是gets获得一行,然后扫描这一行文本,根据所有的字符和顺序,分别对各变量进行赋值。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
一变班爱麻啊堡0J
高粉答主

2020-10-26 · 醉心答题,欢迎关注
知道答主
回答量:11.4万
采纳率:2%
帮助的人:5607万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式