输出直接通过问题
#include <stdio.h>#define max 1024
int main(){
//定义
int t;
int n,m;
int arr;
//输入
printf("请输入你所需分的黄金堆数:");
scanf("%d",&t);
printf("%d",t);
printf("请输入这堆黄金的块数,并且可分的黄金堆包含的块数");
for(int i=0;i<t;i++){
for(int j=0;j<2;j++){
scanf("%d",&n);
arr=n;
}
}
for(int i=0;i<t;i++){
for(int j=0;j<2;j++){
printf("%d",arr);
}
}
//测试
//存入
//判断
return 0;
} 这段代码存在一些问题,主要是输入和输出的部分。具体来说:
1. 在输入部分,应该先输入黄金堆数t,再循环输入每一堆黄金的块数和可分的黄金堆包含的块数。此外,在存储每一堆黄金的块数和可分的黄金堆包含的块数时,应该使用i和j作为下标,而不是t和j。
2. 在输出部分,应该在每一堆黄金的块数和可分的黄金堆包含的块数之间加入空格,以便区分。
修改后的代码如下:
#include <stdio.h>
#define max 1024
int main() {
int t;
int n, m;
int arr;
// 输入
printf("请输入你所需分的黄金堆数:");
scanf("%d", &t);
printf("请输入每一堆黄金的块数和可分的黄金堆包含的块数:\n");
for (int i = 0; i < t; i++) {
for (int j = 0; j < 2; j++) {
scanf("%d", &n);
arr = n;
}
}
// 输出
printf("你输入的黄金堆数为:%d\n", t);
printf("每一堆黄金的块数和可分的黄金堆包含的块数为:\n");
for (int i = 0; i < t; i++) {
for (int j = 0; j < 2; j++) {
printf("%d ", arr);
}
printf("\n");
}
// 测试
// 存入
// 判断
return 0;
}
isdkz 发表于 2023-5-8 13:46
这段代码存在一些问题,主要是输入和输出的部分。具体来说:
1. 在输入部分,应该先输入黄金堆数t,再循 ...
#include <stdio.h>
#define max 1024
int main(){
//定义
int t;
int n,m;
int arr;
//输入
printf("请输入你所需分的黄金堆数:");
scanf("%d",&t);
printf("请输入这堆黄金的块数,并且可分的黄金堆包含的块数");
for(int i=0;i<t;i++){
for(int j=0;j<2;j++){
scanf("%d",&n);
arr=n;
}
}
//测试
int k=0;
int c;
int num;
//测试次数
for(int i=0;i<t;i++){
for(int b=1;b<arr;b++){
c=arr-b;
if(c%2==b){
num=c;
k++;
}else if(b%2==c){
num=c;
k++;
}
}
}
for(int h;h<sizeof (num)/sizeof (num);h++){
printf("%d",num);
}
//存入
//判断
return 0;
}
//大神,这个nun的数组输出也有些问题,是数据接收有问题还是输出有问题{:10_266:} 啊这啧啧啧 发表于 2023-5-8 23:21
#include
#define max 1024
int main(){
你把你的代码放到代码块里,不然有 ] 的地方会变成斜体,] 会不见 isdkz 发表于 2023-5-8 23:24
你把你的代码放到代码块里,不然有 ] 的地方会变成斜体,] 会不见
有点不理解{:10_269:} 啊这啧啧啧 发表于 2023-5-8 23:26
有点不理解
isdkz 发表于 2023-5-8 23:35
#include <stdio.h>
#define max 1024
int main(){
//定义
int t;
int n,m;
int arr;
//输入
printf("请输入你所需分的黄金堆数:");
scanf("%d",&t);
printf("请输入这堆黄金的块数,并且可分的黄金堆包含的块数");
for(int i=0;i<t;i++){
for(int j=0;j<2;j++){
scanf("%d",&n);
arr=n;
}
}
//测试
int k=0;
int c;
int num;
//测试次数
for(int i=0;i<t;i++){
for(int b=1;b<arr;b++){
c=arr-b;
if(c%2==b){
num=c;
k++;
}else if(b%2==c){
num=c;
k++;
}
}
}
for(int h;h<sizeof (num)/sizeof (num);h++){
printf("%d",num);
}
//存入
//判断
return 0;
} 啊这啧啧啧 发表于 2023-5-8 23:36
这段代码的问题主要是在输出部分,还有一些变量的初始化问题。具体来说:
1. 在for循环中,将变量h的初始值设置为0。在现有代码中,h的初始值未定义,这可能导致未定义行为。
2. 在输出num数组的元素时,应在每个元素之间添加一个空格或换行符,以便更清楚地显示结果。
修改后的代码如下:
#include <stdio.h>
#define max 1024
int main() {
// 定义
int t;
int n, m;
int arr;
// 输入
printf("请输入你所需分的黄金堆数:");
scanf("%d", &t);
printf("请输入这堆黄金的块数,并且可分的黄金堆包含的块数\n");
for (int i = 0; i < t; i++) {
for (int j = 0; j < 2; j++) {
scanf("%d", &n);
arr = n;
}
}
// 测试
int k = 0;
int c;
int num;
// 测试次数
for (int i = 0; i < t; i++) {
for (int b = 1; b < arr; b++) {
c = arr - b;
if (c % 2 == b) {
num = c;
k++;
} else if (b % 2 == c) {
num = c;
k++;
}
}
}
// 输出
for (int h = 0; h < k; h++) {
printf("%d ", num);
}
// 存入
// 判断
return 0;
}
现在,代码应该能够正常输出num数组的元素。注意,我在输出部分添加了空格。如果您希望每个元素之间换行,可以将 printf("%d ", num); 替换为 printf("%d\n", num); 。
页:
[1]