用c语言写:输入多行数据,每行包括菜名(若干个中)+空格+个数+空格+单价。输出买这些所有菜需要的价格
时间: 2023-12-18 08:02:57 浏览: 52
```c
#include <stdio.h>
#include <string.h>
#define MAX_LINE_LENGTH 100
int main() {
char line[MAX_LINE_LENGTH];
double total_price = 0;
while (fgets(line, MAX_LINE_LENGTH, stdin)) {
char *name = strtok(line, " ");
int count = atoi(strtok(NULL, " "));
double price = atof(strtok(NULL, " "));
double line_price = count * price;
total_price += line_price;
}
printf("Total price: %.2f\n", total_price);
return 0;
}
```
使用`fgets`函数可以逐行读取输入,然后使用`strtok`函数将每行分割成三部分:菜名、个数和单价。分割后分别使用`atoi`和`atof`函数将个数和单价转换成数字,计算出每行的价格,最后累加求和即可。注意要使用`%.2f`格式化输出结果,保留两位小数。
相关问题
用C语言编写:输入一行字符,分别统计其中的英文字母、空格、数字和其它字符个数
可以使用C语言的字符数组和循环语句来解决这个问题,具体代码如下:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[100];
int i, letters=0, spaces=0, digits=0, others=0;
printf("请输入一行字符:");
fgets(str, sizeof(str), stdin); // 从标准输入读取一行字符
for (i = 0; str[i] != '\0'; i++) {
if (isalpha(str[i])) { // 判断字符是否为英文字母
letters++;
}
else if (isspace(str[i])) { // 判断字符是否为空格
spaces++;
}
else if (isdigit(str[i])) { // 判断字符是否为数字
digits++;
}
else { // 其它字符
others++;
}
}
printf("字母个数:%d\n", letters);
printf("空格个数:%d\n", spaces);
printf("数字个数:%d\n", digits);
printf("其它字符个数:%d\n", others);
return 0;
}
```
运行程序后,可以输入一行字符进行测试,程序会输出统计结果。
用C语言写程序:输入仅一行,输入2个整数 ,输出多行,分行输出2到9之间的所有的同构数。
同构数指的是将一个数字的各位数按照另一种顺序排列得到的数与原数相等的数字,如 123 和 321 就是同构数。
以下是用 C 语言编写的程序:
```c
#include <stdio.h>
int main() {
int num1, num2, i, j, k, l;
scanf("%d %d", &num1, &num2);
for (i = 2; i <= 9; i++) {
for (j = 2; j <= 9; j++) {
if (i == j) continue; // 排列不重复
for (k = 2; k <= 9; k++) {
if (i == k || j == k) continue; // 排列不重复
for (l = 2; l <= 9; l++) {
if (i == l || j == l || k == l) continue; // 排列不重复
int n = i * 1000 + j * 100 + k * 10 + l;
if (n >= num1 && n <= num2 && num1 < num2) {
printf("%d\n", n);
}
}
}
}
}
return 0;
}
```
程序中首先读取输入的两个整数,然后使用四个嵌套的 for 循环枚举所有的 4 位数。在循环体中,首先判断当前的四个数字有没有重复,然后将它们依次组成一个 4 位数,判断该数是否在区间内,并输出。
需要注意的是,要排除所有个位数为 0 的 4 位数,因为同构数不能包含 0。