求C语言大佬看看我这个程序那些地方错了?
#include<string.h>
#include<stdlib.h>
int main()
{
int c=6,b,i;
double temp_c,temp_f;
char str[20] = "\0";
printf("(温度转换程序,摄氏温度和华氏温度相互转换,摄氏温度后缀c,华氏温度后缀f,输入exit结束!):\n");
printf("请输入您想要转换的温度:\n");
gets(str);
if(strcmp(str,"exit")==0)
printf("程序结束!");
else if(str[0]=='C')
{
b=strlen(str);
while(str[c]!='.')
{
c++;
}
for(i=1;i<c;i++)
{
temp_c=temp_c*10+(str[i]-48);
}
for(i=b-1;i>c;i--)
{
temp_f=temp_f*0.1+(str[i]-48);
}
temp_c=temp_c*0.1;
temp_c=temp_c+temp_f;
temp_f=temp_c*1.8+32;
printf("%摄氏温度转换为华氏温度为:%.2f",str,temp_f);
}
else if(str[0]=='F')
{
b=strlen(str);
while(str[c]!='.')
{
c++;
}
for(i=2;i<c;i++)
{
temp_c=temp_c*10+(str[i]-48);
}
for(i=b-1;i>c;i--)
{
temp_f=temp_f*0.1+(str[i]-48);
}
temp_f=temp_f*0.1;
temp_c=temp_c+temp_f;
temp_c=(temp_f-32)/1.8;
printf("%s华氏温度转换为摄氏温度为:%.2f",str,temp_c);
}
else
printf("输入格式错误!");
return 0;
} 展开
你的思路有点复杂了,错误太多了。随便提几个:
temp_c和temp_f没有初始化,
用户输入C和F是在前面还是后面?(说的后缀,判断用的是str[0]),大小写也没交代(判断只用了大写)。
输出printf第一个%后少了s(%s),感觉算法也有问题。
本来很简单的问题(读一个float变量和一个字符):
华氏度 = 32°F+ 摄氏度 × 1.8
摄氏度 = (华氏度 - 32°F) ÷ 1.8
#include "stdafx.h"
#include <iostream>
using namespace std;
int main()
{
char c;
float temp = 0;
cout<<"(温度转换程序,摄氏温度和华氏温度相互转换!):"<<endl;
cout << "请输入您想要转换的温度(格式:80 F,0 0表示退出!):" << endl;
cin >> temp;
cin>> c;
while (c-'0')
{
if (c == 'C'||c == 'c')
{
temp = 32 + temp*1.8;
printf("华氏温度:%.2f F\n", temp);
}
else if (c == 'F'||c == 'f')
{
temp = (temp - 32) / 1.8;
printf("摄氏温度:%.2f F\n", temp);
}
else if(c!=0)
cout << "输入有误,请按格式输入!"<<endl;
cin >> temp;
cin >> c;
}
system("pause");
return 0;
}