使用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;