C언어 질문입니다.

2080fresh의 이미지

#include

int main()
{
float a1 = 0, a2 = 0;
char c = " ";

do {
printf("Input an arithmetic operation (press 0 0 0 to finish program)\n");
scanf("%f%c%f", &a1, &c, &a2);

if (c == "+")
printf("= %.2f\n", (a1 + a2));

else if (c == "-")
printf("= %.2f\n", (a1 - a2));

else if (c == "*")
printf("= %.2f\n", (a1 * a2));

else if (c == "/")
printf("= %f\n", (a1 / a2));

else
printf("Please input correct expression\n\n");

} while (c != "0");

if (c == "0")
return 0;
}

warning C4047: '==': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4047: '==': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4047: '==': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4047: '==': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4047: '!=': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4047: '==': 'int'의 간접 참조 수준이 'char [2]'과(와) 다릅니다.
warning C4477: 'scanf_s' : 서식 문자열 '%c'에 'unsigned int' 형식의 인수가 필요하지만 variadic 인수 3의 형식이 'float *'입니다.
note: 이 인수는 버퍼 크기로 사용됩니다.
arning C4473: 'scanf_s': 서식 문자열에 대한 인수가 충분하게 전달되지 않았습니다.
note: 자리 표시자 및 해당 매개 변수에는 variadic 인수가 4개 필요하지만 3개가 제공되었습니다.
note: 누락된 variadic 인수 4이(가) 서식 문자열 '%f'에 필요합니다.
warning C4101: 'a2' :참조되지 않은 지역 변수입니다.
warning C4101: 'a1' :참조되지 않은 지역 변수입니다.
warning C4700: 초기화되지 않은 'c' 지역 변수를 사용했습니다.

그냥 사칙연산을 하는 코드인데
1.1 + 1.1을 입력하면 +를 인식못하고
1.1 / 1.1을 입력하면 출력이 무한반복됩니다.
어디서 문제가 있는건가요?

세벌의 이미지

https://kldp.org/node/158191
https://wiki.kldp.org/wiki.php/DocbookSgml/Beginner_QA-KLDP#AEN70
위 글을 먼저 읽어보고 물어보세요.

char 와 array 에 대해 공부해 보세요.

라스코니의 이미지

먼저 a1, c, a2에 값이 잘 들어 왔는지 디버그나 출력을 해 보시기 바랍니다.

세벌의 이미지

c 를 char 로 할 거면 작은 따옴표 쓰셔야 할 듯. 큰 따옴표 아니고요.
이런 건 컴파일러에서 에러 보여줄 줄 알았는데, 경고만 내는군요...
원하는 결과 안 나올 가능성이 크겠군요...

babbab의 이미지

#include <stdio.h>
#include <wchar.h>
#include <locale.h>
 
int main()
{
    float a1 = 0, a2 = 0;
    wchar_t c = L' ';
    setlocale(LC_ALL, "korean");
 
    do {
        wprintf(L"부동소수점 연산을 입력해주세요.(종료할려면 0 0 0를 입력)\n");
        wscanf(L"%f %lc %f", &a1, &c, &a2);
 
        if (c == L'+')
            wprintf(L"= %.2f\n", (a1 + a2));
 
        else if (c == L'-')
            wprintf(L"= %.2f\n", (a1 - a2));
 
        else if (c == L'*')
            wprintf(L"= %.2f\n", (a1 * a2));
 
        else if (c == L'/')
            wprintf(L"= %f\n", (a1 / a2));
 
        else
            wprintf(L"연산를 다시입력해주세요.\n\n");
 
        } while (c != '0');
 
    if (c == '0')
        return 0;
}


C:\Users\babbab\Desktop>cc -g -Wall -finput-charset=cp949 -fexec-charset=cp949 a.c -o a
a.c: In function 'main':
a.c:34:1: warning: control reaches end of non-void function [-Wreturn-type]
}
^

C:\Users\babbab\Desktop>a
부동소수점 연산을 입력해주세요.(종료할려면 0 0 0를 입력)
12.322 + 23.232
= 35.55
부동소수점 연산을 입력해주세요.(종료할려면 0 0 0를 입력)
234.2343 * 234.3434
= 54891.26
부동소수점 연산을 입력해주세요.(종료할려면 0 0 0를 입력)
123.23 - 32.34
= 90.89
부동소수점 연산을 입력해주세요.(종료할려면 0 0 0를 입력)
20.0 / 5.0
= 4.000000
부동소수점 연산을 입력해주세요.(종료할려면 0 0 0를 입력)
0 0 0
연산를 다시입력해주세요.

C:\Users\babbab\Desktop>

확인용의 이미지

#include
#include
#include

int main()
{
float a1 = 0, a2 = 0;
wchar_t c = L' ';
setlocale(LC_ALL, "korean");

do {
wprintf(L"부동소수점 연산을 입력해주세요.(종료할려면 0 0 0를 입력)\n");
wscanf_s(L"%f %c %f", &a1, &c, &a2);

if (c == L'+')
wprintf(L"= %.2f\n", (a1 + a2));

else if (c == L'-')
wprintf(L"= %.2f\n", (a1 - a2));

else if (c == L'*')
wprintf(L"= %.2f\n", (a1 * a2));

else if (c == L'/')
wprintf(L"= %f\n", (a1 / a2));

else
wprintf(L"연산를 다시입력해주세요.\n\n");

} while (c != '0');

if (c == '0')
return 0;
}

댓글 첨부 파일: 
첨부파일 크기
Image icon 2.png75.53 KB

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.