标签:遇到 修改 结构 void ram sid com 为什么 应该
计算f(x)的值:输入实数x,计算并输出下列分段函数f(x)的值,输出时保留1位小数。
输入输出样例1:
Enterr x: 10.0
f(10.0) = 0.1
输入输出样例2:
Enter x: 234
f(234.0) = 234.0
源程序(有错误的程序)
#include <stdio.h>
int main(void)
{
double x,y;
printf("Enter x: \n");
scanf("=%f", x);
if(x = 10);
{
y = 1 / x
}
else (x != 10)
{
y = x;
}
printf("f(%.2f) = %.lf\n" x y);
return 0;
}
错误一
第十行前没有加分号
改正方法:在y=1/x后加分号
错误二
eles没有与之相匹配的if
改正方法 把if后面的分号去掉
错误3
eles后不需加判断
改正方法:把eles后的的判断去掉
错误4
引号与变量需要用逗号隔开 变量之间也需要用逗号隔开
错误五
输出语句中为%lf
改正方法 将%.lf改为%.1f
错误六
输出中显示的是一位小数 %.2f应改为%.1f
错误七
scanf语句中因为定义为double类型
改正方法 应用lf 且把=%f中的=去掉
错误8
scanf语句中没有加取地址符
改正方法 在x前加入取地址符&
错误九
给出的输出格式中没有换行
改正方法 把第一个printf中的\n去掉
错误十
if后的判断应为等于
改正方法 将=改成==
1.if(a)if(b) x=x+1;else y=y+1; 的确切含义是什么?这个else应该和哪个if配对?如何明确表达这种配对方法?将该段代码按照规范化的格式进行书写。
如果满足条件a则运行条件b 如果满足条件b则运行x=x+1若果不满足则运行y=y+1
else与if(b)配对
else应与最近的未配对的if进行配对
if(a)
{
if(b)
{
x=x+1;
}
else
{
y=y+1;
}
}
2.C语言的表达式 (-10< x <10)能够表达x在区间(-10,10)吗?为什么?如果不能,正确的表达式应该怎么写?
不能 x>-10&&x<10;
3.C语言中输入数据时,如果遇到非法字符,则认为输入结束。运行程序(1),输入123a,看看输出结果是什么?你能解释是为什么吗?,
程序(1)
#include <stdio.h>
int main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
输出结果为 a=123 b=1
因为定义的为整型 所以遇到字符型会停止读取 认为已经输入完 所以给b赋值为1
scanf()函数的返回值是成功读入数据的个数,如果没有读取任何数据,则返回0。运行程序(2),分别输入123 45和123a,看看输出结果是什么?为什么?
程序(2)
#include <stdio.h>
int main()
{
int a, b,n;
n = scanf("%d %d", &a, &b);
printf("n = %d\n", n);
return 0;
}
输结果为n=2 n=1因为n为输入的变量的个数 所以输入为123 45是两个都是整型 所以可以读取两个变量
输入123a是 遇到了非法字符 所以停止读取 只能读取123
修改程序(1),当输入非法数据时,输出“Input error!".样例如下:
修改如下
#include <stdio.h>
int main()
{
int a,b,n;
n=scanf("%d %d", &a, &b);
if(n==1)
{
printf("Input error!\n");
}
else
{
printf("a = %d, b = %d\n", a, b);
}
return 0;
}
#include<stdio.h>
#include<math.h>
int main(void)
{
double x = 0.0,y = 0.0;
scanf("%lf",&x);
if(x>=0)
{
y = pow(x,0.5);
}
else
{
y = pow(x+1,2) + 2 * x + 1 / x;
}
printf("f(%.2f) = %.2f",x,y);
return 0;
}
7-4 算术入门之加减乘除
#include<stdio.h>
int main(void)
{
int a,b,c,d,e ,f;
double g;
scanf("%d%d",&a,&b);
c = a + b;
d = a - b;
e = a * b;
printf("%d + %d = %d\n",a,b,c);
printf("%d - %d = %d\n",a,b,d);
printf("%d * %d = %d\n",a,b,e);
if(a%b==0)
{
f = a / b;
printf("%d / %d = %d",a,b,f);
}
else
{
g = (double )a / b ;
printf("%d / %d = %.2f",a,b,g);
}
return 0;
}
7-6 输出三角形面积和周长
#include<stdio.h>
#include<math.h>
int main(void)
{
int a = 0,b = 0,c = 0;
double s = 0.0,area = 0.0,p = 0.0;
scanf("%d%d%d",&a,&b,&c);
if(a + b>c&&a + c>b&&b + c>a)
{
p = a + b +c;
s = p / 2.0;
area = sqrt(s * (s - a) * (s - b) * (s - c));
printf("area = %.2f; perimeter = %.2f",area,p);
}
else
{
printf("These sides do not correspond to a valid triangle");
}
return 0;
}
7-8 出租车计价
#include<stdio.h>
int main(void)
{
double k = 0.0,f = 0.0,m = 0.0;
int w = 0,t = 0;
scanf("%lf%d",&k,&t);
if(k<=3)
{
m = 10;
}
else if(k<=10)
{
m = 10 + (k - 3) * 2;
}
else
{
m = 10 + (k - 3) * 2 + (k - 10);
}
if(t>=5)
{
w = t / 5 * 2;
}
else
{
w = 0;
}
f = m + w;
printf("%.0f",f);
return 0;
}
标签:遇到 修改 结构 void ram sid com 为什么 应该
原文地址:http://www.cnblogs.com/wsd-lian/p/7749774.html