#include <stdio.h> #include <string.h> struct information { char name[20]; int quantity; double price; };struct information a[100]; int main() { int i,n; printf("请输入商品的种类数: "); scanf("%d",&n); double num[n]; for (i = 0;i < n;i ++) { printf("请输入第%d个商品的名称、数量和单价: ",i+1); scanf("%s%d%1f",&a[i].name,&a[i].quantity,&a[i].price); } for (i = 0;i < n;i ++) { num[i] = a[i].quantity * a[i].price; printf("第%d个商品的名称:%s\t数量:%d\t价格:%1f\t总价:%d\n",a[i].name,a[i].quantity,a[i].price,num[i]); } printf("\n"); return 0; } 为啥没有输出
时间: 2023-06-25 08:04:28 浏览: 37
这段代码中有几个错误:
1. 在输入时,"%1f"应该改为"%lf",因为"%1f"是错误的格式化字符串,会导致输入的数据无法正确赋值。
2. 在输出时,"%d"应该改为"%lf",因为num[i]是double类型,不能用"%d"输出。
3. 在输出时,"%1f"应该改为"%lf",因为"%1f"是错误的格式化字符串,会导致输出的数据无法正确显示。
修改后的代码如下:
```
#include <stdio.h>
#include <string.h>
struct information {
char name[20];
int quantity;
double price;
};
struct information a[100];
int main() {
int i,n;
printf("请输入商品的种类数: ");
scanf("%d",&n);
double num[n];
for (i = 0;i < n;i ++)
{
printf("请输入第%d个商品的名称、数量和单价: ",i+1);
scanf("%s%d%lf",&a[i].name,&a[i].quantity,&a[i].price);
}
for (i = 0;i < n;i ++)
{
num[i] = a[i].quantity * a[i].price;
printf("第%d个商品的名称:%s\t数量:%d\t价格:%lf\t总价:%lf\n",i+1,a[i].name,a[i].quantity,a[i].price,num[i]);
}
printf("\n");
return 0;
}
```
注意:在输入商品名称时,如果名称中含有空格,则只会读取第一个单词。如果需要读取包含空格的字符串,可以使用fgets()函数。