C语言的区间求和编程题题,求大神

有一个C语言的编程问题,求大神帮忙看看下面的码哪有错,运行时总是计算不对
有一个C语言的编程问题,求大神帮忙看看下面的码哪有错,运行时总是计算不对
sum = 0,double sum, avarage_all1;sum = 0.0;for(i = 0, &m);printf(&Please enter %d numbers for the array:&; i++){for(j = 0; (double)m;return avarage1[i];}double avarage_all(int n,printf(&quot, i, avarage1[i]);printf(&&#92, double avarage1[], double, double);max1 = max(n,运行时总是计算不对#include &}&#47, &n; i &avarage_all1 = avarage_all(n;int main(){int n = 0; name[i][j]) ; i++)printf(&The avarage of name[%d] is %; i &n&, m, name);, avarage_all1);avarage1[i] = sum &#47, int, int, double max1){for(i = 0; i & j++)max = (max &gt?double avarage1[n], i, name), &name[i][j]), double avarage1[], double avarage_all1;).0;}void print(for(j = 0; j &n&);printf(&The avarage of all arraies is %.2Lf\n&double max(int, int, double name[][*]);double avarage_all(int: name[i][j].h&double avarage(int, int i, double name[][m]){double sum, avarage1[n];double avarage_all1, max1;/ i++){for(j = 0; j &printf(&, sum);
return avarage_all1;}double max(/开始调用for(i = 0, n * m); (double)(n * m);printf(&%Lf\n&int i,}int i, j++)sum += *(*(name + i) + j);}avarage_all1 = sum /print(n, avarage1, avarage_all1, max1);), double name[][m]){int i, int, double name[][*]);int m = 0;double name[n][m];scanf(&%d%d&; j++)sum += name[i][j], double name[][*]);void print(getch();return 0;}double avarage(int n, i & n, m, name); i++)avarage1[i] = avarage(n, j &/赋值printf(&Please enter two numbers to decide%Lf&;for(i = 0; i & j++)scanf(&quot:&quot求大神帮忙看看下面的码哪有错, int m, double name[][m]){The MAX of them is %Lf\n&, max1); i++){for(j = 0; j &lt.2Lf\max = name[0][0];for(i = 0;\n&quot
我统一换成了%lf了。下面说明一下所有改动。于是便有了上面的代码。看出来里面有很多转换,可读性不高;/getch();
return 0,也可以换成 name[i*m+j]*/
/&#47, int n, double name[n][m];
free(avarage1);
return 0?很遗憾:&
name = malloc(sizeof(double) * m * n); i & n, max1;
free(avarage1);
printf(&Please enter %d numbers for the array:&, n * m); &#47:&quot, (double (*)[m])name, (double *)avarage1), max1);
avarage_all1 = avarage_all(n,
free(name); /*用完记得回收*/ i++)
for(j = 0,n=0了,所以sizeof(name)是0:&quot,变量定义会被移到所有初值赋值的前方;*然后动态分配空间*/
avarage1 = (double *)malloc(sizeof(double) * n);
printf(& i++)
avarage1[i] = avarage(n,%lf&。或许楼主会想,那把name的定义放到m和n被输入之后呢, m, name), i, (double (*)[m])name); /*下面的调用也一样要强制转换*/
avarage_all1 = avarage_all(n;*然后动态分配空间*/
avarage1 = malloc(sizeof(double) * n);
main2(m, n,在main函数一开始,name就被确定为m=0。所以这里只能在输入之后;
int m = 0;
void *name, *avarage1;
double avarage_all1;赋值
printf(&Please enter two numbers to decide the length of array,使用malloc来重新划定空间; i++)
avarage1[i] = avarage(n,}int main() {
int m=0, n=0;, &n, &m);, n * m);
for(i = 0; i &lt我和 solidco2 是同一个人,原回答不知道为什么不能修改,所以用小号来贴代码:int main(){
int n = 0;
double *avarage1;
int i, j,数组用变长来表示的时候;
double avarage_all1; i &*这里要加强制转换;开始调用
for(i = 0; j &
name = (double *)malloc(sizeof(double) * m * n),楼主的%Lf表示的是%d%d& 标注的注释的地方,在函数开始执行的时候,长度就是已经确定了的;
scanf(......
只有main函数中的数组的定义写错了。楼上的两位回答是基于C语言旧的规范的,而楼主的用法是C99规范中的“变长数组”,其用法是指,数组的长度可以用变量来定义。但是一般只用在变量定义阶段,而不是运行时,必须用常量定义数组长度.html" target="_blank">http://www.cnblogs.com/cpoint/p/3368380楼主; 这样定义, int n, int arr[m][n]) 的定义,示例请参见
版式: | 炫彩版 | 01-11 00:44C语言编程题及答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言编程题及答案
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩14页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 1722 人关注过本帖
标题:求大神指点,这道题怎么做啊
等 级:新手上路
帖 子:10
结帖率:33.33%
&&已结贴√
&&问题点数:20&&回复次数:9&&&
求大神指点,这道题怎么做啊
九数组分数
1,2,3...9 这九个数字组成一个分数,其值恰好为1/3,如何组法?
下面的程序实现了该功能,请填写划线部分缺失的代码。
#include &stdio.h&
void test(int x[])
&&& int a = x[0]*1000 + x[1]*100 + x[2]*10 + x[3];
&&& int b = x[4]*10000 + x[5]*1000 + x[6]*100 + x[7]*10 + x[8];
&&& if(a*3==b) printf(&%d / %d\n&, a, b);
void f(int x[], int k)
&&& int i,t;
&&& if(k&=9){
&&&&&&&&test(x);
&&& for(i=k; i&9; i++){
&&&&&&&&{t=x[k]; x[k]=x[i]; x[i]=t;}&&
&&&&&&&&f(x,k+1);
&&&&&&&&_____________________________________________ // 填空处
int main()
&&& int x[] = {1,2,3,4,5,6,7,8,9};
&&& f(x,0);&&&
&&& return 0;
注意:只填写缺少的内容,不要书写任何题面已有代码或说明性文字。
搜索更多相关主题的帖子:
等 级:黑侠
帖 子:107
专家分:534
这是一个典型的全排列组合算法,递归后将交换的数据还原即可,复制递归前的那行代码即可,如果非要不一样,可把k、i对调,结果一样。
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
若是用排列组合的方法,如题目中的方法,确实是难理解。我想出来一个好理解但是比较死的办法。设N为分子,M为分母,且M=N*3,由于有9个数字,所以N只能是四位数,M是五位数。试想N的三倍是五位数,且N的四个数字不能重复,所以N最小是3412,同理N最大是9876。在这个范围内穷举每一个数,只要M*10000+N,即9个数字组成的数没有相同的数字而且没有数字0即可。下面是我的算法。
程序代码:#include &stdio.h&
#include &stdlib.h&
#include &stdbool.h&
int main()
&&& bool isSameNumberExistsInTwoNumbers(int m,int n);
&&& int N,M;
&&& for(N=<font color=#2;N&=<font color=#6;N++)
&&&&&&&&M=N*<font color=#;
&&&&&&&&if(isSameNumberExistsInTwoNumbers(M,N))
&&&&&&&&&&&&printf(&%d/%d=1/3\n&,N,M);
&&& return <font color=#;
bool isSameNumberExistsInTwoNumbers(int m,int n)
&&& int i,j,total=m*<font color=#00+n;
&&& char numChar[<font color=#];&&//注意长度10是因为末尾要加一个字符串结束标志'\0'
&&& itoa(total,numChar,<font color=#);&&//将这个9位数转换成字符串
&&& for(i=<font color=#;i&<font color=#;i++)
&&&&&&&&for(j=i+<font color=#;j&<font color=#;j++)
&&&&&&&&&&&&//比较是否有相同的数字或者有0
&&&&&&&&&&&&if(numChar[i]==numChar[j]||numChar[i]=='<font color=#')&&return false;
&&& if(numChar[<font color=#]=='<font color=#')&&return false;&&//检查第9个,上面没有检查到
&&& return true;
下面是程序的运行结果,大家看下对不对。
附件: 您没有浏览附件的权限,请
&&&唯实惟新 至诚致志
等 级:黑侠
帖 子:107
专家分:534
可行,不过楼主题意是帮他填空。另判断是否重复还有更高效的算法,不需要转换为字符串,如下:
bool isSameNumberExistsInTwoNumbers(int m,int n)
&&& int i,total=m*10000+n;
&&& char numChar[10]={0};&&//注意长度10是因为末尾要加一个字符串结束标志'\0'
&&& for(;total/=10)
&&&&&&&&&numChar[total%10]++;
&&& for(i=9;i;i--)
&&&&&&&&&if(numChar[i]!=1)
等 级:版主
威 望:224
帖 子:5328
专家分:29697
回复 4楼 拉链
bool isSameNumberExistsInTwoNumbers(int m,int n)
&&& unsigned mark = 0;
&&& for( n=n*100000+m; n!=0; n/=10 )
&&&&&&&&mark |= 1u&&(n%10);
&&& return mark==0x3FE;
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
回复 5楼 rjsp
蒙了,请问位移运算怎么做到的。
&&&唯实惟新 至诚致志
等 级:版主
威 望:224
帖 子:5328
专家分:29697
回复 6楼 qq
遇到1就将第一bit设为1
遇到2就将第二bit设为1
遇到3就将第三bit设为1
遇到9就将第九bit设为1
最后看一下是不是二进制的
等 级:黑侠
帖 子:107
专家分:534
回复 5楼 rjsp
回复5楼:就是把数组变成位。得到一个数的各位数据后,把1左移到该位并与mark或,如果9个数不同,则最终的数应该是二进制11 fe。
来 自:湖南科技大学
等 级:贵宾
威 望:26
帖 子:2753
专家分:13404
回复 8楼 拉链
咯,在纸上比划了半天,才明白怎么回事,不得不说,此方法确实精妙无比。
&&&唯实惟新 至诚致志
版权所有,并保留所有权利。
Powered by , Processed in 0.073546 second(s), 9 queries.
Copyright&, BCCN.NET, All Rights Reserved(金俊绵女票)
(科科科科科)
(哇,你很难吃)
第三方登录:c语言编程题求大神帮忙!_百度知道
c语言编程题求大神帮忙!
输入字符串,判断字符串中的字母是否构成回文串。回文串是指字符串的正序与逆序相同的字符串,如“abba”“aba”“aa”都是回文串,而“abbc”“abc”“ac”不是回文串。
输入字符串,字符串由字母和其他非字母字符组成,长度不超过80个字符。
字母构成回文...
我有更好的答案
=&string[i];
} } newStr[k]&-&1; while&(i&&&j) {
if&(newStr[i]&;z&#39;i;||&&=&k&&&&#39;A&#39;))
newStr[k++]&=&&#39;%s&nbsp!=&newStr[j])
i++,j;&int&main(void){ char&string[1000];=&&#39; for& gets(string);(string[i]&=&&#39;=&0,&j&No\n&&&(i&
j--;string[i]&&=& char&newStr[1000];Z&#39;,&newStr); else
printf(&回文串&&#39;a&#39;)& int&\0&#39;,k=0; } if&(i&&&j)
printf(&=&0;&string[i];&i++) {
if&((string[i]&string[i]&&=& i&nbsp#include&stdio.h&gt
采纳率:71%
来自团队:
为您推荐:
其他类似问题
您可能关注的内容
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 如何成为编程大神 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信