首页 > 软件 > 请问这个需要怎么修改,才能正确输出?

请问这个需要怎么修改,才能正确输出?

软件 2021-04-30

c语言小白,请问为什么我的这段代码输出结果不正确?应该怎么改呢?求具体分析我的代码,谢谢您!

你的算法问题有两点:

1、

这一块统计数量的代码其实老实说我都没看懂是什么意思,但是我测试了,输入13能统计出来是2,但是输入12345的时候统计就错了,这段并不能数出3来。

2、

第17行有问题,你每次循环都把max赋值为Num[0],按照你的代码来,输入13时,Num[0]的值为0,所以max初始值总是0,而且Num[9]也是0,所以循环到最后一次的时候,整个过程是:

max=Num[0];=>max->0

if(Num[9]>max)=>Num[9]->0,max->0,结果为false

循环结束,返回max=>返回0

所以你输入13的时候输出结果为0。


针对这两点我做出如下改动:

1、大改了统计个数的代码块,修改为:

思想:当arr[i]为1时,计num为1,循环遍历当前元素之后的元素arr[i+1],如果arr[i+1]也是1,则计数num+1,i也+1,再次while循环,此时就是相当于看arr[i+1+1],如果还是1,则再重复前面的步骤,直到出现0为止。出现0后,while循环结束,把本次统计得到的num存到Num[]数组中,p++。最终整个for循环结束后,就能得到计数数组Num[]了。


2、删除你的第17行,max初始值赋为:


整体代码修改为:

运行结果:


具体代码为:

#include

int main(){

int x;

scanf("%d",&x);

int arr[32],num=0,i,p=0;

int Num[10]={0},max=0;

for(i=31;i>=0;i--){

arr[31-i]=(((x>>i)&1u)?1:0);

}

for(i=0;i<32;i++){

if(arr[i]==1){

num=1;

while(arr[i+1]==1){

num++;

i++;

}

Num[p]=num;

p++;

}

}

for(i=0;i<10;i++){

if(Num[i]>max){

max=Num[i];

}

}

printf("%d\n",max);

}

请问我这个程序怎么改才能让正确 vj老是说我输出格式错误

教学贴:使用Tyvj方便的进行调试程序 Admin 虽然Tyvj不提供题目的测试数据,但是您依然可以通过Tyvj方便的调试程序 方法1. 你可以使用标准错误输出调试程序 C++语言: std::cerr<<"hello world!\n"; C语言: fprintf(stderr, "hello world!\n"); Pascal语言: writeln(stderr, 'hello world!'); 其中上述程序中输出的"hello world!"不会输出到标准输出,所以您无需担心加这样的语句会使您的程序Wrong Answer.上述结果将显示到测评结果页面. 您可以利用上述方法输出所有输

java新手,如何改才能正确输出,比如每次输入好后,输出的结果是q w e r [Ljava.lang.String;@36527f

System.out.println(array); 你想输出的是整个数组,但是换位思考,机器的想法是,你要我怎么输出,是正向输出,还是逆向输出,还是随机输出,或者是你想输出这个数组的第几个?机器不是人,你不给详细的说明机器是不会脑补的 如果你想输出整个数组,就要循环输出 public static void main(String[] args) { Scanner s = new Scanner(System.in); String array[] = new String[4]; for (int i = 0; i < array.length; i++) { array[i] = s.

我的这个Java程序在eclipse3.5版本中应怎样修改才能正确地输出程序

可以运行,不需要修改的。

我用顺序栈实现进制转换,能正确输出,但是结果不对,请问要怎么修改,以下图上是进制转换函数

我以前写过一个,只能十进制以内的转换 #include #include #include #define size 10 //小数部分大小 #define maxsize 20 //整数部分大小 //********************************* //********************************* //小数部分——队列 typedef struct { char data[10]; //读取转制后的小数部分 int front,rear; //队首尾指针 }Queue; //循环队列 //**

标签:信息技术 编程 编程语言 C(编程语言) CC++

大明白知识网 Copyright © 2020-2022 www.wangpan131.com. Some Rights Reserved.