c语言小白,请问为什么我的这段代码输出结果不正确?应该怎么改呢?求具体分析我的代码,谢谢您! C语言小白想问一下为什么系统没有警告和错误,但我输出成绩之后...

c\u8bed\u8a00\u5c0f\u767d\uff0c\u4e3a\u4ec0\u4e48\u6211\u7684\u8001\u662f\u8f93\u51fa0.00\u5462

\u5e94\u8be5\u662fc\u6ca1\u6709\u83b7\u53d6\u5230\u503c\u5427\uff0c\u5728scanf\u4e4b\u524d\u52a0\u4e00\u4e2agetchar\u6d88\u53bb\u4e00\u4e2a\u56de\u8f66\uff0c\u8f93\u51fac\u7684\u540e\u4e00\u53e5\u518d\u6253\u5370\u4e00\u4e0bc\u7684\u503c\u770b\u770b\u5bf9\u4e0d\u5bf9\u3002

\u56e0\u4e3a\u7a0b\u5e8f\u4e2d\u4f60\u7684\u8f93\u5165\u8bed\u53e5\u5199\u9519\u4e86scanf("%f,&score");
\u8fd9\u4e00\u53e5\u5e94\u8be5\u4fee\u6539\u4e3a\uff1a
scanf("%f",&score);

你的算法问题有两点:

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<stdio.h>

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
",max);

}



在for(i=0;i<32;i++)这个for语句里面有很多问题,比如你输入13即0x0000000d,从第4位开始后面全是0,你会进入else里面的语句,那么p=p+1,这里没什么,但Num[p]就会数组越界。
可以这样for(i=0;i<32;i++){if(arr[i]==1)num++; else{if(num!=0){num[p++]=num;num=0;}}}
在这里补充一点,一个32位的int变量,1010这样子间隔的话,你也得把Num这个数组至少留16个空间。
还有你获取最大值啊,max=Num[0];这语句放在for里面干嘛,Num[0]=0,这是导致你结果为0的原因,这条语句要放在for语句的上面嘛
另外主函数里改成unsigned int x较为稳妥

首先,你的证词是错的。它应该是:scanf(%LF),&;a,&;b),正确的格式是:scanf(\"<格式化字符串>\",<地址表>);您的printf语句应为:printf(\"得到%f+%f=%fn\",a,b,a+b);,正确的格式是:printf(“输出格式类型”,变量),以前输出格式类型的数目,与变量的数目相同

  • c璇█灏忕櫧,璇烽棶涓轰粈涔堟垜鐨勮繖娈浠g爜杈撳嚭缁撴灉涓嶆纭?搴旇鎬庝箞鏀瑰憿?姹傚叿...
    绛旓細1銆佽繖涓鍧楃粺璁℃暟閲忕殑浠g爜鍏跺疄鑰佸疄璇存垜閮芥病鐪嬫噦鏄浠涔鎰忔濓紝浣嗘槸鎴戞祴璇曚簡锛岃緭鍏13鑳界粺璁″嚭鏉ユ槸2锛屼絾鏄緭鍏12345鐨勬椂鍊欑粺璁″氨閿欎簡锛岃繖娈骞朵笉鑳芥暟鍑3鏉ャ2銆佺17琛屾湁闂锛屼綘姣忔寰幆閮芥妸max璧嬪间负Num[0]锛屾寜鐓т綘鐨勪唬鐮佹潵锛岃緭鍏13鏃讹紝Num[0]鐨勫间负0锛屾墍浠ax鍒濆鍊兼绘槸0锛岃屼笖Num[9]涔熸槸0锛屾墍浠...
  • C璇█鐨勫皬鐧 璇锋暀澶у笀 涓轰粈涔堟垜杩欓噷fputs()娌℃湁杈撳嚭淇敼鍚庣殑瀛楃涓
    绛旓細include <stdio.h> define SIZE 10 void P_gets(char *ch,int n);int main(void){ char ch[SIZE];P_gets(ch,SIZE);fputs(ch,stdout);getchar();return 0;} void P_gets(char str[],int n){ int i=0;while(i<n&&(str[i]=getchar(),str[i]!='\n'))i++;str[i]='\0'...
  • C璇█灏忕櫧:璇峰ぇ绁炵湅鐪杩欐浠g爜鐨勯敊璇湪鍝噷?杩愯鍚庡彧鏈塧[1]鏄鐨...
    绛旓細浣犱笂闈唬鐮佹槸娌℃湁閿欑殑锛屽氨鏄綘鐨勮緭鍏ユ柟寮忎笉瀵癸紝灏辨嬁浣犵殑浠g爜鏉ヨ锛屼綘搴旇杩欐牱杈撳叆鏁版嵁1绌烘牸2绌烘牸3绌烘牸... 锛堟瘡杈撳叆涓涓暟瀛楀氨绌烘牸涓涓嬶紝鑰屼笉鏄偅涓楀彿锛夛紝杩樻湁閭d釜涓嶈<=10锛岃鏀逛负<10鍥犱负0鍒9灏辨槸鍗佷釜
  • c璇█灏忕櫧,杩欐鏈変粈涔堥棶棰樺悧?鏄庢槑鍜屼緥棰樹竴鏍涓轰粈涔閿欒?鎬庝箞鍋氬晩_鐧 ...
    绛旓細閭d箞c搴旇瀹氫箟涓 float c銆備笉鐒剁簿搴︿細涓㈠け
  • c璇█灏忕櫧闂,杩欐浠g爜涓轰粈涔浼氬嚭閿?
    绛旓細鎶妔canf("%d \n",&n);鏀规垚scanf("%d",&n);銆
  • 鎴戞槸c璇█灏忕櫧,闂棶澶х甯垜鐪嬬湅缂栧啓鐨勭畝鍗曠▼搴忚繖鍝噷鍑洪敊浜?_鐧惧害...
    绛旓細#include<stdio.h> 杈撳叆浠g爜鏃跺拷瑙嗚緭鍏ユ硶闅愯棌鐨勯敊璇 琛ㄩ潰涓婄湅閮芥槸涓鏍风殑浠g爜锛屼絾鏄浜岃灏辨湁閿欒锛屾槸鍏ㄨ鍜屽崐瑙掔殑涓嶅悓锛屽啀鐪嬶細姝g‘缂栬瘧杩愯 鎵浠ヤ綘鐨勪唬鐮佹病鏈変换浣曢棶棰橈紝浣嗘槸瑕佹敞鎰忎唬鐮佽緭鍏ョ殑鏂规硶銆備互鍓嶅洖绛斾簡寰堝锛屾湁鏃堕棿鍙互鐪嬬湅鎴戞渶杩戝洖绛c璇█闂锛氱綉椤甸摼鎺 缃戦〉閾炬帴 缃戦〉閾炬帴 缃戦〉閾炬帴绛夌瓑銆
  • C璇█灏忕櫧闂 ,璇风湅涓鎴戠殑杩欎釜浠g爜鍑轰簡浠涔堥棶棰,涓轰粈涔堟垜杈撳叆鐨勬槸30...
    绛旓細1f閿欎簡
  • 姹C璇█澶т浆瑙g瓟,杩涓娈电▼搴忔槸鍝噷閿欎簡?搴旇鎬庝箞鏀?(鎴戝彧鏄垰鍒氬叆闂ㄧ殑灏...
    绛旓細鎮ㄥソ锛屽緢楂樺叴鍥炵瓟鎮ㄧ殑闂銆傛偍鐨勭▼搴忓湪瀹氫箟鐨勮繃绋嬩腑瀛樺湪闂銆俵ong long n,j=0;鏄兂琛ㄨ揪n,j閮芥槸闀挎暣褰㈡暟鎹惂锛屼絾鏄畾涔変笉鏄繖涔堝啓鐨勫摝锛岀洿鎺ュ啓long n,j=0鍗冲彲鐨勩傛偍鍙互璇曡瘯鍝︺備互涓婂氨鏄鎴戠殑鍥炵瓟锛屽笇鏈涜兘甯姪鍒版偍銆
  • C璇█灏忕櫧姹傞棶杩欎釜鍝噷閿欎簡
    绛旓細鍞竴鍙兘鐨勫氨鏄楀彿涓嶅銆傝繕鏄埆鍦ㄦ墜鏈轰笂鍐杩欎釜浜嗭紝鏁堢巼浣庯紝鑰屼笖缂栬瘧鍣ㄥ嚭鐜拌帿鍚嶅叾濡欑殑閿欒锛岃皟璇曚笉鏂逛究锛屽浜庡涔犳潵璇村苟娌℃湁澶氬ぇ鐨勪究鍒
  • C璇█灏忕櫧 杩欐槸鍝噷鍑洪棶棰樹簡 姹傝В绛?璋㈣阿璋㈣阿?
    绛旓細float a,b,c,disc,x1,x2,p,q;scanf("%f%f%f",&a,&b,&c);disc=b*b-4*a*c;//鏂圭▼蹇呴』鏈夎В锛坆*b-4ac>=0锛塸=-b/(2*a);q=sqrt(disc)/(2*a);//璐熸暟涓嶈兘寮鏂癸紱x1=p+q;x2=p-q;printf("%\n x1=%2.2f\n x2=%2.2f\n",x1,x2);} 浣犵殑绋嬪簭娌¢棶棰橈紝浣嗘槸鏁板闂...
  • 扩展阅读:c++语言入门自学 ... c++和python先学哪个 ... cc+编程是什么 ... 小学生学python还是c++ ... c++编程适合几岁学 ... 十大编程语言排名 ... c++编程入门自学 ... 自学plc编程先学什么 ... c c++ c# ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网