2012-01-05 1 views
-4

아래의 코드는 눌린 키 수를 계산하여 눌려진 숫자 키의 백분율과 함께 화면에 표시합니다. 코드를 실행할 때 백분율은 항상 0입니다. 왜 그럴까요?숫자 키 스트로크의 백분율을 계산하지 못했습니다.

#include <stdio.h> 
#include <stdlib.h> 
#include <conio.h> 


int main() 
{ 
int c,count=0,count1=0; 
float d; 
while ((c=getch())) 
{ 
    count = count++; 
if (c=='1'||c=='2'||c=='3'||c=='4'||c=='5'||c=='6'||c=='7'||c=='8'||c=='9'||c=='0') 
    { 
     count1=count1++; 
    } 
    if (c=='!') 
    { 
     d=(count1/count*100); 
     printf("\nnumbers of keys is %d percentage of number keys is %.3d percent",count,d); 
    } 

    } 
return 0; 

}

+5

질문하기. 너는 잘못하고있다. – log0

+4

증분, 당신도 잘못하고 있어요. –

+2

위의 주석과 아래의 주석 모두 +1. 1) 모든 대문자를 사용하지 마십시오. 2) 정의되지 않은 동작을 사용하지 마십시오 ('x = x ++'== 정의되지 않은 동작, 시퀀스 포인트 찾아보기). 3) 정수 나누기가 실패합니다. – Joe

답변

0

문제는 비록 d이 부동 점이다, countcount1int입니다.

d=((float)count1/count*100); 

floatconverts the division to floating pointcount1 주조 : 당신이

d=(count1/count*100); 

대신이 작업을 수행 말할 때 당신은 따라서 정수 연산을 수행하고 있습니다.

2

의 선

count = count++; 

count1 = count1++; 

그래서 모든 베팅이 꺼져, 정의되지 않은 동작입니다. 정의되지 않은 동작 일지라도 x++은 증가하기 전에 x의 값을 반환하기 때문에 원하는 작업을 수행하지 못합니다.

단순히 ++count;++count1;으로합시다.

+0

좋은 캐치. 'count ++;'와'count1 ++;'도 마찬가지입니다. – Caleb

관련 문제