| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 709 人关注过本帖
标题:C语言三个程序纠错问题!
只看楼主 加入收藏
lihengfeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-11-19
收藏
 问题点数:0 回复次数:6 
C语言三个程序纠错问题!

问题一
#include

double sum(double *v, int n);
main()
{
static double a[20] = {1.0,2.1,3.5,4.4,5.1,6.9,7.8,8.5,9.2,10.1,11.8,12.5,13.2,14.4,15.1,16.6,17.0,18.1,19.2,20.4};
double s;

s = sum(&a,20);
printf("the sum is %f",s);
return 0;
}

double sum(double *v, int n) /* n is the size v[] */
{
int i = 0;
double s = 0.0;

while( i < n )
s += *(v++);
return s;
}

这个程序哪里错了 为什么运行时出错

问题2
#include <stdio.h>

int main()
{
double x;

while (scanf("%lf", &x) == 1) {
if (x < 0.0)
goto negative_alert;
printf("%f %f\n", sqrt(x), sqrt(2 * x));
}

negative_alert: printf("Negative value encountered!\n");
return 0;
}

我编译后 为什么什么都不执行?

问题3
/* A test that fails */

#include <stdio.h>

int main(void)
{
int cnt = 0;
double sum = 0.0, x;

for (x = 0.0; x != 9.9; x += 0.1) { /* trouble! */
sum += x;
printf("cnt = %5d\n", ++cnt);
}
printf("sum = %f\n", sum);
return 0;
}

为什么For循环不会在x=9.9停止 而是疯狂的增长

搜索更多相关主题的帖子: C语言 纠错 
2006-11-24 10:30
tongdan
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-11-24
收藏
得分:0 

第一个问题:#include "stdio.h"//头文件你什么都没打,

double sum(double *v, int n);
main()
{
static double a[20] = {1.0,2.1,3.5,4.4,5.1,6.9,7.8,8.5,9.2,10.1,11.8,12.5,13.2,14.4,15.1,16.6,17.0,18.1,19.2,20.4};
double s;

s = sum(a,20);/*数组a本身就代表地址不需要&;
printf("the sum is %f",s);
return 0;
}

double sum(double *v, int n) /* n is the size v[] */
{
int i=0;
double s=0.0;

while(i<n)
{
s+=*(v++);
i++;//加个判断条件好不
}

return s;
}
这个我调试过了应该可以的

2006-11-24 10:51
tongdan
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-11-24
收藏
得分:0 

第二个问题不是不执行它要你先输入数,我帮你改了一下
#include "math.h"
int main()
{
float x;

while (1) {
printf("请输入一个数");
scanf("%f",&x);
if (x<0.0)
goto negative_alert;
printf("%f %f\n", sqrt(x),sqrt(2*x));
}

negative_alert: printf("Negative value encountered!\n");
return 0;
}

2006-11-24 11:05
lihengfeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-11-19
收藏
得分:0 

while(i<n)
{
s+=*(v++);
i++;//加个判断条件好不
}

加什么判断条件

2006-11-24 11:13
tongdan
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-11-24
收藏
得分:0 
第三个问题:浮点数不能直接比较等不等的,因为浮点数在计算机里只有前面的数是准确的后面有的是不准确的,0有可能是0.00000000000000000001我帮你改了一下
int main(void)
{
int cnt = 0;
double sum = 0.0, x;

for (x = 0.0; (x-9.9)<0.01; x += 0.1) { /* trouble! */
sum += x;
printf("cnt = %5d\n", ++cnt);
}
printf("sum = %f\n", sum);
return 0;
}
2006-11-24 11:17
tongdan
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2006-11-24
收藏
得分:0 
让while(i&lt;n)可以正常退出!
2006-11-24 11:21
lihengfeng
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2006-11-19
收藏
得分:0 

谢谢你啦 刚学C语言 有很多问题

2006-11-24 11:21
快速回复:C语言三个程序纠错问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012812 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved