我是编程新手,所以我提出了一个简单的问题,用5个函数制作简单的计算器。我做了它,代码是:
//zadatak je bio da napravim prost kalkulator sa par funkcija (oduzimanje, deljenje...)
//mislim da je problem posto on ne uporedjuje unetu promenjivu kao vrednost u oktalnom brojnom sistemu
#include <stdio.h>
#include <math.h> //moram posto imam koren
float broj1, broj2; //definisanje dve promenjive koje cu koristiti u kodu
char odluka; //definisanje promenjive koja ce mi oznacavati odluku, ne smem da koristim stringove za tekst
int main()
{
printf("Ako zelite da saberete dva broja unesite 1, da oduzmete unesite 2, da pomnozite unesite 3,da podelite unesite 4 ida izvadite koren unesite 5. Broj ne mora biti ceo!\n");
scanf("%c",&odluka);
if(odluka=='1') //pitamo da li je vrednost odluke jednaka jedinici
{ //blok komandi za unos i za ispisivanje zbira ako je odluka jednaka jedinici
printf("Unesite prvi broj:\n");
scanf("%f",&broj1);
printf("Unesite drugi broj:\n");
scanf("%f",&broj2);
printf("Zbir Vasa dva broja je: %.2f\n", (float)broj1+broj2);
}
else if(odluka=='2') //ako nije onda pitamo da li je jednaka dvojci
{ //blok komandi za unos i za ispisivanje razlike ako je odluka jednaka dvojci
printf("Unesite prvi broj:\n");
scanf("%f",&broj1);
printf("Unesite drugi broj:\n");
scanf("%f",&broj2);
printf("Razlika Vasa dva broja je: %.2f\n", (float)broj1-broj2);
}
else if(odluka=='3') //ako nije pitamo da li je jednaka trojci
{ //blok komandi za unos i za ispisivanje proizvoda ako je odluka jednaka trojci
printf("Unesite prvi broj:\n");
scanf("%f",&broj1);
printf("Unesite drugi broj:\n");
scanf("%f",&broj2);
printf("Proizvod Vasa dva broja je: %.2f\n", (float)broj1*broj2);
}
else if(odluka=='4') //ako nije pitamo da li je jednaka cetvorci
{ //blok komandi za unos i za ispisivanje kolicnika ako je odluka jednaka cetvorci
printf("Unesite prvi broj:\n");
scanf("%f",&broj1);
printf("Unesite drugi broj:\n");
scanf("%f",&broj2);
printf("Kolicnik Vasa dva broja je: %.2f\n", (float)broj1/broj2);
}
else if(odluka=='5') //ako nije pitamo da li je jednaka petici
{ //blok komandi za unos i za ispisivanje korena ako je odluka jednaka petici
printf("Unesite broj iz koja zelite da izvucete koren:\n");
scanf("%f",&broj1);
printf("Koren Vaseg broja je: %.3f\n", (float)sqrt(broj1));
}
else //ako nije ni jedan broj od 1 do 5 onda ispisujemo gresku
printf("Niste uneli ispravnu vrednost odluke!\n");
return 0;
}
所以我想把它提升到新的水平,并在完成工作后提出问题重复。我做了这个代码:
//zadatak je bio da napravim prost kalkulator sa par funkcija (oduzimanje, deljenje...)
//mislim da je problem posto on ne uporedjuje unetu promenjivu kao vrednost u oktalnom brojnom sistemu
#include <stdio.h>
#include <math.h> //moram posto imam koren
float broj1, broj2; //definisanje dve promenjive koje cu koristiti u kodu
char odluka, ponovo; //definisanje promenjive koja ce mi oznacavati odluku, ne smem da koristim stringove za tekst
int main()
{
do
{
printf("Ako zelite da saberete dva broja unesite 1, da oduzmete unesite 2, da pomnozite unesite 3,da podelite unesite 4 ida izvadite koren unesite 5. Broj ne mora biti ceo!\n");
scanf("%c",&odluka);
if(odluka=='1') //pitamo da li je vrednost odluke jednaka jedinici
{ //blok komandi za unos i za ispisivanje zbira ako je odluka jednaka jedinici
printf("Unesite prvi broj:\n");
scanf("%f",&broj1);
printf("Unesite drugi broj:\n");
scanf("%f",&broj2);
printf("Zbir Vasa dva broja je: %.2f\n", (float)broj1+broj2);
printf("Da li zelite ponoviti program? Za da upisite 1, za ne 0.\n\n");
getchar();
scanf("%c", &ponovo);
}
else if(odluka=='2') //ako nije onda pitamo da li je jednaka dvojci
{ //blok komandi za unos i za ispisivanje razlike ako je odluka jednaka dvojci
printf("Unesite prvi broj:\n");
scanf("%f",&broj1);
printf("Unesite drugi broj:\n");
scanf("%f",&broj2);
printf("Razlika Vasa dva broja je: %.2f\n", (float)broj1-broj2);
printf("Da li zelite ponoviti program? Za da upisite 1, za ne 0.\n\n");
getchar();
scanf("%c", &ponovo);
}
else if(odluka=='3') //ako nije pitamo da li je jednaka trojci
{ //blok komandi za unos i za ispisivanje proizvoda ako je odluka jednaka trojci
printf("Unesite prvi broj:\n");
scanf("%f",&broj1);
printf("Unesite drugi broj:\n");
scanf("%f",&broj2);
printf("Proizvod Vasa dva broja je: %.2f\n", (float)broj1*broj2);
printf("Da li zelite ponoviti program? Za da upisite 1, za ne 0.\n\n");
getchar();
scanf("%c", &ponovo);
}
else if(odluka=='4') //ako nije pitamo da li je jednaka cetvorci
{ //blok komandi za unos i za ispisivanje kolicnika ako je odluka jednaka cetvorci
printf("Unesite prvi broj:\n");
scanf("%f",&broj1);
printf("Unesite drugi broj:\n");
scanf("%f",&broj2);
printf("Kolicnik Vasa dva broja je: %.2f\n", (float)broj1/broj2);
printf("Da li zelite ponoviti program? Za da upisite 1, za ne 0.\n\n");
getchar();
scanf("%c", &ponovo);
}
else if(odluka=='5') //ako nije pitamo da li je jednaka petici
{ //blok komandi za unos i za ispisivanje korena ako je odluka jednaka petici
printf("Unesite broj iz koja zelite da izvucete koren:\n");
scanf("%f",&broj1);
printf("Koren Vaseg broja je: %.3f\n", (float)sqrt(broj1));
printf("Da li zelite ponoviti program? Za da upisite 1, za ne 0.\n\n");
getchar();
scanf("%c", &ponovo);
}
else //ako nije ni jedan broj od 1 do 5 onda ispisujemo gresku
{
printf("Niste uneli ispravnu vrednost odluke!\n");
printf("Da li zelite ponoviti program? Za da upisite 1, za ne 0.\n\n");
getchar();
scanf("%c", &ponovo);
}
}
while(ponovo=='1');
return 0;
}
但现在的问题是,当你第一次使用它时,程序做得很好,当它重复每次输入时,#od; odluka&#34;这意味着决定是错误的,它会持续到最后。对于塞尔维亚语的代码,我真的非常抱歉,但我没有时间翻译它。你能帮帮我吗?
答案 0 :(得分:1)
谢谢@user3121023!
尝试scanf(“%c”,&amp; odluka); %之前的空格将跳过领先 上一个scanf留下的换行符。与使用%c
的其他scanf相同