c语言 程序批改
答案:4 悬赏:10 手机版
解决时间 2021-11-11 10:08
- 提问者网友:不要迷恋哥
- 2021-11-10 12:02
c语言 程序批改
最佳答案
- 五星知识达人网友:傲气稳了全场
- 2021-11-10 13:22
错了不少地方,具体的看一下注释,
下面的代码已经改好了,并且运行正常,
但是不知道是不是还有其他逻辑问题。
#include
#include
main()
{
int n,i,o,p,q,*h,*j,*t;
//int num[n+1];
int *num;//////动态数组是这么做的,你之前的做法用变量声明数组size,编译器会报错
long r=0;
scanf("%d",&n);
num=(int *)malloc(n*sizeof(int));//////动态数组空间申请
if(num==NULL) return 0;//////容错处理
for(i=0;i {
fflush(stdin);//////强制清空键盘缓冲区,防止读入上次输入的回车
//scanf("%d",num[i]);
scanf("%d",&num[i]); //////scanf的后面的参数是地址
}
for(p=0;p for(i=0;i {
h=&num[i];
j=&num[i+1];
if(num[i]>num[i+1])
{
t=h;
h=j;
j=t;
}
}
for(i=1;i { //////需要加上花括号,否则for循环作用域不对
num[i]+=num[i-1];
r+=num[i];
}//////需要加上花括号,否则for循环作用域不对
printf("%d",r);
free(num);//////释放动态数组空间
}
下面的代码已经改好了,并且运行正常,
但是不知道是不是还有其他逻辑问题。
#include
#include
main()
{
int n,i,o,p,q,*h,*j,*t;
//int num[n+1];
int *num;//////动态数组是这么做的,你之前的做法用变量声明数组size,编译器会报错
long r=0;
scanf("%d",&n);
num=(int *)malloc(n*sizeof(int));//////动态数组空间申请
if(num==NULL) return 0;//////容错处理
for(i=0;i
fflush(stdin);//////强制清空键盘缓冲区,防止读入上次输入的回车
//scanf("%d",num[i]);
scanf("%d",&num[i]); //////scanf的后面的参数是地址
}
for(p=0;p
h=&num[i];
j=&num[i+1];
if(num[i]>num[i+1])
{
t=h;
h=j;
j=t;
}
}
for(i=1;i
num[i]+=num[i-1];
r+=num[i];
}//////需要加上花括号,否则for循环作用域不对
printf("%d",r);
free(num);//////释放动态数组空间
}
全部回答
- 1楼网友:走死在岁月里
- 2021-11-10 17:03
int num[n+1];
不能这样定义动态数组,试一下malloc或calloc
不能这样定义动态数组,试一下malloc或calloc
- 2楼网友:从此江山别
- 2021-11-10 15:47
什么乱七八糟的代码啊
第一个
for(i=0;i scanf("%d",num[i]);
这里应该传入地址 改成scanf("%d",&num[i]);
for(p=0;p for(i=0;i {
h=&num[i];
j=&num[i+1];
if(num[i]>num[i+1])
{
t=h;
h=j;
j=t;
}
}
这里估计你的意思是交换里面的值
结果你在这里搞来搞去.吧指针交换了一下
实际结果num[]值一个没变
改成
int tmp;
for(p=0;p for(i=0;i {
if(num[i]>num[i+1])
{
tmp = num[i];
num[i] = num[i+1];
num[i+1] = tmp;}
}
三
r +=num[i];
这个什么意思,,想把所有num加起来??好像少了一个大括号,
否则直接 r = num[i] 就好了,,
没看懂你要干什么..
第一个
for(i=0;i
这里应该传入地址 改成scanf("%d",&num[i]);
for(p=0;p
h=&num[i];
j=&num[i+1];
if(num[i]>num[i+1])
{
t=h;
h=j;
j=t;
}
}
这里估计你的意思是交换里面的值
结果你在这里搞来搞去.吧指针交换了一下
实际结果num[]值一个没变
改成
int tmp;
for(p=0;p
if(num[i]>num[i+1])
{
tmp = num[i];
num[i] = num[i+1];
num[i+1] = tmp;}
}
三
r +=num[i];
这个什么意思,,想把所有num加起来??好像少了一个大括号,
否则直接 r = num[i] 就好了,,
没看懂你要干什么..
- 3楼网友:像个废品
- 2021-11-10 14:51
算法就帮不了你了,我没通过这题,语法部分呢
#include
void main()
{
int n,i,o,p,q,*h,*j,*t;
int num[10001];
long r=0;
scanf("%d",&n);
for(i=0;i scanf("%d",&num[i]);
for(p=0;p for(i=0;i {
h=&num[i];
j=&num[i+1];
if(num[i]>num[i+1])
{
t=h;
h=j;
j=t;
}
}
for(i=1;i {num[i]+=num[i-1];
r+=num[i]; }
printf("%d",r);
}
#include
void main()
{
int n,i,o,p,q,*h,*j,*t;
int num[10001];
long r=0;
scanf("%d",&n);
for(i=0;i
for(p=0;p
h=&num[i];
j=&num[i+1];
if(num[i]>num[i+1])
{
t=h;
h=j;
j=t;
}
}
for(i=1;i
r+=num[i]; }
printf("%d",r);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯