求高手这个c程序设计第四版错在哪里了

C语言初学者请高手看看这程序问题出哪了_c语言吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:369,588贴子:
C语言初学者请高手看看这程序问题出哪了收藏
求1-1/2+1/3-1/4+...+1/99-1/100的值。#include &stdio.h&int main(){int a,b,sum=1;a=1;b=2;while(b&=100){a=-a;c=a/b;sum=sum+c;b=b+1;}printf(&sum=%d\n&,sum);return 0;}运行得出答案。问题在哪啊
声明变量 ab sum 不能是整形
可以是double
是C声明错误
A/B要得小数
用INT结果只会得1
用doule. 或者flot
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或请教C语言高手哪里错了,我发现就是括号问题,希望更正,下面是我编的一个程序。
请教C语言高手哪里错了,我发现就是括号问题,希望更正,下面是我编的一个程序。
#include&stdio.h&&
int main()&
&int a,b;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /*a为东西的种类,b为东西的数量,c为金钱*/& printf("************欢迎光临武器店*************");&
&printf("下面是各种武器的清单以及价格,请慢慢挑选");&
&printf("=========================================");&
&printf("1==大刀,100\n");&&
&printf("2==长矛,250\n");&
&printf("3==梨花枪,1000\n");&
&printf("4==方天画戟\,2000\n");&
&printf("5==碧血剑,2500\n");&
&printf("==========================================");&
&scanf("你要购买武器的名称是:");&
&scanf("请输入购买的数量:");&
&scanf("你一共的花销为:");&
&printf("***********期待你的下次光临************");
& switch (c)&
&{&&&&&&&&&
&case'1':b*100;&&&&&&&&&&&& case'2':b*250;&&&&&&&&&&&& case'3':b*1000;&&&&&&&&&&&& case'4':b*2000;&&&&&&&&&&&& case'5':b*2500;&& &&&& default:printf("Game Over!\n");& }&&& &return 0;& }&&
输出语句跟输入语句搞混了。而且switch的case常量和表达式不能用浮点型数据
哪用什么表示
整型,要么字符
switch 中的 c 是double类型,这是不允许的
但我c表示的是金钱啊,允许的啊
和表示什么没关系,你这样的语法是不对的
额,我运行的没问题,就是case前面那个大括号有问题,你运行看下就知道 了
1&------ 已启动生成: 项目: main, 配置: Debug Win32 ------1&正在编译...1&x.cpp1& WINVER not defined. Defaulting to 0x0600 (Windows Vista)1&c:\users\administrator\desktop\main\main\x.cpp(28) : warning C4129: “,”: 不可识别的字符转义序列1&c:\users\administrator\desktop\main\main\x.cpp(31) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.1&&&&&&&& d:\vc2008\vc\include\stdio.h(306) : 参见“scanf”的声明1&c:\users\administrator\desktop\main\main\x.cpp(32) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.1&&&&&&&& d:\vc2008\vc\include\stdio.h(306) : 参见“scanf”的声明1&c:\users\administrator\desktop\main\main\x.cpp(33) : warning C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.1&&&&&&&& d:\vc2008\vc\include\stdio.h(306) : 参见“scanf”的声明1&c:\users\administrator\desktop\main\main\x.cpp(36) : error C2450: “double”类型的 switch 表达式是非法的1&&&&&&&& 要求整型表达式1&c:\users\administrator\desktop\main\main\x.cpp(38) : warning C4552: “*”: 运算符不起任何作用;应输入带副作用的运算符1&c:\users\administrator\desktop\main\main\x.cpp(39) : warning C4552: “*”: 运算符不起任何作用;应输入带副作用的运算符1&c:\users\administrator\desktop\main\main\x.cpp(40) : warning C4552: “*”: 运算符不起任何作用;应输入带副作用的运算符1&c:\users\administrator\desktop\main\main\x.cpp(41) : warning C4552: “*”: 运算符不起任何作用;应输入带副作用的运算符1&c:\users\administrator\desktop\main\main\x.cpp(42) : warning C4552: “*”: 运算符不起任何作用;应输入带副作用的运算符1&生成日志保存在“file://c:\Users\Administrator\Desktop\main\main\Debug\BuildLog.htm”1&main - 1 个错误,9 个警告========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
可以帮我改改吗?加分的
我都说了,那里不允许double类型变量,你看我编译后才错误提示,只有那一个
其他回答 (3)
方天画戟那多个 \ &很久没搞这个了不知道有影响没然后就有个取值问题 好像没有啊 case 只是几种情况而已最后 &你这程序是干嘛的 算总价? 怎么会让输入花销
是算总价啊,花销也是合计啊
楼下这个才是正确的正常的看看你就知道问题在哪了你要参照着书写也不会写成你这样的 = =!
&#include&stdio.h&&
int main()
&int a,b;&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& /*a???<<?÷u????à??b???<<?÷u???????c?? 1/2 ??(R)*/&printf("************>>??&??????AE÷uê*************\n");
&printf("???ae??,÷????AE÷u???u??? 1/4 ° 1/4 ?,?????????????\n");
&printf("=========================================\n");
&printf("1==?óu?,100\n");&
&printf("2==?¤??,250\n");
&printf("3==?ae>>¨??,1000\n");
&printf("4==· 1/2 ?ì>>&ê?,2000\n");
&printf("5==±??? 1/2 ?,2500\n");
&printf("==========================================\n");
&printf("???????ò??AE÷u????AE??:");
&scanf("%d",&a);
&printf("?????????òu?????:");
&scanf("%d",&b);
&printf("???>>??u?>>¨?ú??:");
& switch (a)
&{&&&&&&&&
&case 1:printf("%d\n",b*100);&&&&&&&&&&&& &case 2:printf("%d\n",b*250);&&&&&&&&&&&& &case 3:printf("%d\n",b*1000);&&&&&&&&&&&& &case 4:printf("%d\n",b*2000);&&&&&&&&&&&& &case 5:printf("%d\n",b*2500);&&&&&&& &default:printf("Game Over!\n");& }&&& && printf("***********AE?????u?????????************");& & return 0;& }&&
你这个代码是想做什么呢?
相关知识等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号[讨论]C语言初学者,请高手指典下面程序错在哪里! — 编程爱好者社区
主题:[讨论]C语言初学者,请高手指典下面程序错在哪里!
[专家分:0]
用选择排序法对数组中和数排序。这题的正确答案我知道,我只是不知道这个程序为什么是错的。错在哪里呢?老师说它的算法思想没有错,但在实现逻辑上有错误,可我实在是想不通啊!请高手指典一下!#include&stdio.h&void&main(){&&void&swap(int&a[]);&&int&a[10]={1,2,3,6,9,8,5,4,7,0};&&int&i;&&printf(&original&array:\n&);&&for(i=0;i&10;i++)&&printf(&%3d&,a[i]);&&swap(a);&&printf(&\nswap&array:\n&);&&for(i=0;i&10;i++)&&printf(&%3d&,a[i]);}void&swap(int&a[]){&&int&i,j,max,&&for(i=0;i&9;i++)&&{&&&&max=a[i];&&&&for(j=i+1;j&10;j++)&&&&{&&&&&if(a[j]&max)&&&&&&max=a[j];&&&&&}&&&&temp=&&&&max=a[i];&&&&a[i]=&&}}
本帖地址:&
回复列表 (共6个回复)
[专家分:190]
你把max的值换了,而a[j]还是原来的,这样就没有达到交换的目的
[专家分:150]
就像楼上所说,你并没有交换a[j]的值,下面代码是修改过之后的,可以实现交换#include&stdio.h&void&main(){&&void&swap(int&a[]);&&int&a[10]={1,2,3,6,9,8,5,4,7,0};&&int&i;&&printf(&original&array:\n&);&&for(i=0;i&10;i++)&&printf(&%3d&,a[i]);&&swap(a);&&printf(&\nswap&array:\n&);&&for(i=0;i&10;i++)&&printf(&%3d&,a[i]);}void&swap(int&a[]){&&int&i,j,max,&&for(i=0;i&9;i++)&&{&&&&max=i;&&&&for(j=i+1;j&10;j++)&&&&&if(a[j]&a[max])&&&&&&max=j;&&&&if(max!=i)&&&&{&&&&temp=a[max];&&&&a[max]=a[i];&&&&a[i]=&&&&}&&}}
[专家分:90]
首先&你这到题是函数是调用函数&应该有返回植!其次&在需要有返回植的时候&不应该&有void&&&&
[专家分:100]
temp=&&&&max=a[i];&&&&a[i]=问题的关键在于上面三句完成的是&&max与a[i]值得交换,而max仅仅在数值上与数组的木个数相等,而他们占据的内存空间是不同的(关键所在),&就像你有一个三星手机&,我和小张都有一个山寨机,你和我交换了手机,难道等价于你和小张交换吗&,明显的想要和小张交换手机,而要利用与我交换手机的方式,除非我和小张发生关联,例如我和小张共同拥于一个手机。在这里为了达到交换的目的,必须要是max在内存空间上与数组的数据发生关联,&例如:void&swap(int&a[]){&&int&i,j,max,&&int*max1=&&&for(i=0;i&9;i++)&&{&&&//&max=a[i];&&&&max1=&a[i];&&&&for(j=i+1;j&10;j++)&&&&{&&&&&if(a[j]&*max1)&&&&&&max1=&a[j];&&//max存放a【j】的地址&&&&&}&&&&temp=*max1;&&&&*max1=a[i];&&&&a[i]=&&}}
[专家分:650]
temp=&&&&max=a[i];&&&&a[i]=这三句话的问题..解决办法就是用一个变量记录下j的位置,比如用k来记..交换的时候temp=a[k]=a[i];a[i]=而且你的选择排序应该是递减的..&&&&&就是大的排到前面了.
[专家分:650]
就是一楼说的问题..
您尚未登录,请登录后再回复。

我要回帖

更多关于 c程序设计第四版 的文章

 

随机推荐