使用C 语言 : 题目:输入若干个数,其中有整数也有小数,分别统计其中整数的个数和小数的个数,并分别求所有整数的和与所有小数的平均值。(可以考虑使用 sscanf)
输入要求:
共一行,其中若干个数,两个数之间用空格隔开。
注意:数 2.0 被视为小数,我们可以认为整数与小数的区别仅在于它们有没有小数点。
数据保证所有的数字大于−105,小于 105,且数字总数不超过 100。
输出要求:
共两行
第一行,两个整数,中间用空格隔开,分别代表整数的个数与整数的和。 第二行,一个整数与一个浮点数,中间用空格隔开,分别代表小数的个数与小数的平均值。 平均值保留 2 位小数。
输入样例:
1 1.0 2 2.0 3 3.0 4.4 输出样例:
36
4 2.60

1个回答
展开全部
摘要 #include
int main() {
int integerCount = 0;
double integerSum = 0;
int decimalCount = 0;
double decimalSum = 0;
double num;
char input[1000];
fgets(input, sizeof(input), stdin); // 读取输入行
char *token = strtok(input, " "); // 使用空格分割字符串
while (token != NULL) {
sscanf(token, "%lf", &num); // 将分割得到的字符串转换为数字
if (num == (int)num) { // 如果数字是整数
integerCount++;
integerSum += num;
} else { // 如果数字是小数
decimalCount++;
decimalSum += num;
}
token = strtok(NULL, " "); // 继续分割字符串
}
printf("整数个数:%d\n", integerCount);
printf("整数和:%lf\n", integerSum);
printf("小数个数:%d\n", decimalCount);
printf("小数和:%lf\n", decimalSum);
return 0;
咨询记录 · 回答于2024-01-18
#include int main() { int integer_count = 0; double integer_sum = 0; int decimal_count = 0; double decimal_sum = 0; double average; int num; double decimal; printf("请输入若干个数,其中整数之间用空格隔开,小数之间也用空格隔开:\n"); while (scanf("%d %lf", &num, &decimal) == 2) { if (num == 0) { continue; } if (num == decimal) { integer_count++; integer_sum += num; } else { decimal_count++; decimal_sum += decimal; } } average = decimal_sum / decimal_count; printf("%d %lf\n", integer_count, integer_sum); printf("%d %.2lf\n", decimal_count, average); return 0;
#include int main() { int integerCount = 0; double integerSum = 0; int decimalCount = 0; double decimalSum = 0; double num; char input[1000]; fgets(input, sizeof(input), stdin); // 读取输入行 char *token = strtok(input, " "); // 使用空格分割字符串 while (token != NULL) { sscanf(token, "%lf", &num); // 将分割得到的字符串转换为数字 if (num == (int)num) { integerCount++; integerSum += num; } else { decimalCount++; decimalSum += num; } token = strtok(NULL, " "); // 继续分割字符串 } printf("整数个数:%d\n", integerCount); printf("整数总和:%lf\n", integerSum); printf("小数个数:%d\n", decimalCount); printf("小数总和:%lf\n", decimalSum); return 0;
if (num == (int)num) { integerCount++; integerSum += num; } else { decimalCount++; decimalSum += num; token = strtok(NULL, " "); // 继续分割下一个字符串 printf("%d %.0lf\n", integerCount, integerSum); printf("%d %.2lf\n", decimalCount, decimalSum / decimalCount); return 0;
**注意:** 上述代码中使用了`fgets`函数来读取一行输入,因此需要将输入的数字以空格分隔。在输出时,整数的平均值使用了`.0lf`来保留0位小数,小数的平均值使用了`.2lf`来保留2位小数。你可以将输入样例复制到程序中进行测试。希望对你有帮助!
亲,你发的图我这边看不清楚
不对啊
你自己是试一试
那里不对了亲
亲,你这边打字给我
输出
是输出不对嘛,亲
我这边看了没有问题呀
给我看你的输出
#include int main() { char input[200]; // 输入字符串 int integerCount = 0; // 整数个数 double integerSum = 0; // 整数和 int decimalCount = 0; // 小数个数 double decimalSum = 0; // 小数和 fgets(input, sizeof(input), stdin); // 读取输入字符串 char *token = strtok(input, " "); // 使用空格分割字符串 while (token != NULL) { if (strchr(token, '.') != NULL) { // 包含小数点,视为小数 decimalCount++; double value; sscanf(token, "%lf", &value); decimalSum += value; } else { // 不包含小数点,视为整数 integerCount++; integerSum += atof(token); } token = strtok(NULL, " "); // 继续分割下一个字符串 } printf("整数个数: %d\n", integerCount); printf("整数和: %.2lf\n", integerSum); printf("小数个数: %d\n", decimalCount); printf("小数和: %.2lf\n", decimalSum); return 0;
下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

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

说明

0/200

提交
取消