#include<stdio.h>
#include<string.h>
int main()
{
int j,o=1;
double r,p=1,c=0;
char s[50];
gets(s);
int n=strlen(s);
if(s[n-1]=='0'||s[n-1]=='2'||s[n-1]=='4'||s[n-1]=='6'||s[n-1]=='8')
o=2;
for(j=0;j<n;j++)
{if(s[j]=='2')
c++;
}
if(s[0]=='-')
{p=1.5;
n=n-1;}
r=c/n*p*o*100;
printf("%.2lf%%\n",r);
return 0;
}
结尾无空行,printf("%.2lf%%\n",r);这里的\n删掉。
C语言变量的声明放在最前面,把变量n的声明放在前面。
用下面的代码试试:
#include<stdio.h>
#include<string.h>
int main()
{
int j,o=1;
double r,p=1;
int n,c=0; //这里c改成了int类型
char s[50];
gets(s);
n=strlen(s);
if(s[n-1]=='0'||s[n-1]=='2'||s[n-1]=='4'||s[n-1]=='6'||s[n-1]=='8')
o=2;
for(j=0;j<n;j++)
{
if(s[j]=='2')
c++;
}
if(s[0]=='-')
{
p=1.5;
n=n-1;
}
r=1.0*c/n*p*o*100; //这里计算的时候用1.0乘以,转成double类型
printf("%.2lf%%",r);
return 0;
}
#include<stdio.h>
int main(){
char Input[1000];
float flag =1; int oushu =1, i, n = 0;
floatout;
scanf("%s", &Input);
if (Input[0] =='-'){//判断负号
flag = 1.5;
}
for (i =0; Input[i] !='\0'; i++){//判断输入位数
if (Input[i] =='2')
n++;
}
if ((Input[i -1] - 48) % 2 ==0){//判断偶数
oushu = 2;
}
if (flag ==1.5){//如果偶数,即-号占了位置
i--;
}
out = (float)n / (float)i*flag*oushu*100;//输出
printf("%.2f%%",out);