70,037
社区成员
发帖
与我相关
我的任务
分享#include<stdio.h>
#include<syslib.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
#define min 101
struct yuansu {
char name[128];
double hight;
};
int main(void)
{
struct yuansu *ss;
ss = (struct yuansu *)malloc(sizeof(struct yuansu));
if(ss != NULL)
{
printf("动态内存申请成功\n");
}
int n = 4;//元素的种类
while(n--) //输入元素的种类
{
scanf("%s%lf",&ss[n].name,&ss[n].hight);
printf("%s %.2f",ss[n].name,ss[n].hight);
}
int j;
scanf("%d",&j);
while(j--)
{
double sum = 0.0,res;
char a[min],p[10];
int i = 0;
scanf("%s",a);
while(a[i] != '\0')
{
p[0] = a[i];
for(int r = 0;r < n;r++)
{
if(p[0] == ss[r].name)
break;
}
i++;
while(isdight(a[i]))
{
sum = sum * 10 + a[i] - '0';
i++;
}
if(sum)
{
res += sum * ss[r].hight;
}
else
{
res += ss[r].hight;
}
}
printf("%.3f\n",res);
}
return 0;
}


#include<stdio.h>
//#include<syslib.h>
#include<ctype.h>
#include<stdlib.h>
#include<string.h>
#define min 101
struct yuansu {
char name;
float hight;
};
int aa(void)
{
struct yuansu *ss;
ss = (struct yuansu *)malloc(sizeof(struct yuansu)*4);
if (ss != NULL)
{
printf("\n动态内存申请成功\n");
}
int n = 4;//元素的种类
for (int i = 0; i < n; i++) //输入元素的种类
{
//flush();
printf("\n请输入第%d个元素名称与原子量\n", i + 1);
scanf_s("%c %f", &ss[i].name,1, &ss[i].hight, 4);
fflush(stdin);
printf("输入为%c - %.2f", ss[i].name, ss[i].hight);
}
int j =0;
printf("\n\n请输入要求的物质个数\n");
scanf_s("%d", &j);
for (int ji = 1; ji <= j; ji++)
{
double sum = 0.0;
char a[min];// , p[10];
int i = 0;
printf("\n请输入第%d个物质的分子式\n", ji);
scanf_s("%s", a, min);
double preHight = 0;
while (a[i] != '\0')
{
if (isdigit(a[i]))
{
printf("输入物质分子式错误\n");
break;;
}
int r = 0;
for (; r < n; r++)
{
if (a[i] == ss[r].name)
break;
}
if (r >= n)
{
printf("输入物质分子式错误\n");
break;;
}
i++;
if (!isdigit(a[i]))
{
sum += ss[r].hight;
continue;
}
int dv = 0;
while (isdigit(a[i]))
{
dv = dv * 10 + a[i] - '0';
i++;
}
sum += ss[r].hight *dv;
}
printf("%s的分子量为%.3f\n", a, sum);
}
free(ss);
return 0;
}