|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
int main(){
int num;
int l;//一个数的立方
int sum=0;//这个立方的奇数和
int m;
int arr[]={0};
printf("请输入一个整数:");
scanf("%d",&num);
l=pow(num,3);
printf("%d",l);
for(int i=1;i<=l;i+=2){//小于这个数的所有奇数
int k=0;
for(int j=i;j<=l;j+=2){
sum+=j;
arr[k]=j; //好像是数组出了问题,但感觉没写错
k++;
if(sum>l){
sum=0;
k=0;
break;
}
if(sum==l){
printf("%d=",l);
for(m=0;m<k;m++){
printf("%d+",arr[m]);
}
if(m=k){
printf("%d",arr[m]);
}
}
}
}
return 0;
}
本帖最后由 sfqxx 于 2023-4-15 23:11 编辑
这段代码是一个求立方数的奇数和等于该立方数本身的程序。但是,存在以下问题:
数组声明方式错误,应该是 int arr[100]; 代表最多可以存储 100 个奇数。
在最后一次循环中,如果没有找到满足奇数和等于立方数的组合,应当输出“未找到满足条件的组合”。
在 if(m=k) 中,应改为 if(m==k-1),因为此时 m 的值为 k,不满足条件。
下面是修改后的代码:
#include <stdio.h>
#include <math.h>
int main() {
int num;
int l; // 一个数的立方
int sum = 0; // 这个立方的奇数和
int m;
int arr[100] = {0}; // 数组声明方式修正
printf("请输入一个整数:");
scanf("%d", &num);
l = pow(num, 3);
printf("%d", l);
for(int i = 1; i <= l; i += 2) { // 小于这个数的所有奇数
int k = 0;
for(int j = i; j <= l; j += 2) {
sum += j;
arr[k] = j;
k++;
if(sum > l) {
sum = 0;
k = 0;
break;
}
if(sum == l) {
printf("%d = ", l);
for(m = 0; m < k - 1; m++) { // 修改输出方式
printf("%d + ", arr[m]);
}
printf("%d\n", arr[m]);
return 0;
}
}
}
printf("未找到满足条件的组合\n"); // 输出未找到满足条件的组合
return 0;
}
有用请设置最佳答案
|
|