整体思路简单,但需要注意两点细节:
1.float=int/int与float=(float)int/int 两个表达式的区别
前者是将int/int计算的结果强制转换为float类型,小数部分一定为0,而后者是将被除数强制转换为float类型,这样计算的结果为float类型,小数部分不一定为0
输出时使用printf("%.1f")
2.
其他几类数字的相关结果为非负数,判断是否存在该类数字的条件简单而统一,即相应的计算函数中的计数器是否为0
而A2的情况较为特殊,其结果不一定为非负数,因此即便判断函数的返回值为0,也不能说明该类数字不存在,因为存在A2情况下的数字序列使得sum值为0,从而致使返回值为0。因此在判断是否存在该类数字时需要特殊处理(因返回值的意义存在混淆,将其计算过程放在main函数中从而回避返回值)
代码如下:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int calculate(int type,int n,int number[1000]);
float calculate_A4(int n,int number[1000]);
int main()
{
int n;
scanf("%d",&n);
int number[1000];
int i;
for(i=0;i<n;i+&#