警告 C26446 优先使用 gsl::at() 而非未选中的下标运算符(bounds.4)。
注;
#include
int main(void)
{
struct emp {
char name[10];
double jbgz, jt, jj, zc;
};
struct emp s[10];
int i, n;
printf("n=");
scanf_s("%d", &n);
for (i = 0; i < n; i++) {
scanf_s("%s%lf%lf%lf%lf", s[i].name,10, &s[i].jbgz, &s[i].jt,& s[i]. jj, &s[i]. zc);
}
for (i = 0; i < n; i++) { /* 调试时设置断点 */
printf("%s:%.2f\n", s[i].name, s[i].jbgz + s[i].jt + s[i].jt - s[i].zc);
}
return 0;
}
scanf_s("%s%lf%lf%lf%lf", s[i].name,10, &s[i].jbgz, &s[i].jt,& s[i]. jj, &s[i]. zc);
1.这个函数做下优化,每个参数之间用逗号隔开,不然输入的数据会有问题;
2.这里面这个10应该是写错了吧!
修改如下所示:
scanf_s("%s,%lf,%lf,%lf,%lf", s[i].name, &s[i].jbgz, &s[i].jt,& s[i]. jj, &s[i]. zc);
printf里也修改下,将后面的参数用小括号扩上。
printf("%s:%.2f\n", s[i].name,( s[i].jbgz + s[i].jt + s[i].jt - s[i].zc));
GSL_SIGN(X)
: 大于等于 0 为 1,小于 0 为 -1
宏定义:
// gsl_math.h
#define GSL_SIGN(x) ((x) >= 0.0 ? 1 : -1)