c primer plusc primer第五版下载第六章第一节的程序分析

C Primer Plus(第五版)中文版 程序清单6.19解决方案 - C++当前位置:& &&&C Primer Plus(第五版)中文版 程序清单6.19解决方案C Primer Plus(第五版)中文版 程序清单6.19解决方案&&网友分享于:&&浏览:47次C Primer Plus(第五版)中文版 程序清单6.19运行环境:VC6.0程序如下:#include &stdio.h&#define SIZE 10#define PAR 72int main (void){ int index, score[SIZE]; int sum=0;
printf(&Enter %d golf scores: \n&, SIZE); for(index=0; index&SIZE; index++); {
scanf(&%d&, &score[index]); } printf(&The scores read in are as follows: \n&); for(index=0; index&SIZE; index++) {
printf(&%5d&, score[index]); } printf(&\n&); for(index=0; index&SIZE; index++) {
sum+=score[index]; } average=(float)sum/SIZE; printf(&Sum of scores=%d, average=%.2f\n&, sum, average); printf(&That's a handicap of %.0f.\n&, average-PAR); return 0;}为什么运行后得不到结果 运行结果如下:Enter 10 golf scores:101 100 102 103 110 102 99 98 97 96The scores read in are as follows:-993460-8993460Sum of scores=-8, average=-0.80That's a handicap of -73.Press any key to continue求高手帮帮忙,解答一下,谢谢了!------解决方案--------------------for后面多了一个分号,导致没有数据读入C/C++ code
for(index=0; index&SIZE; index++);
scanf(&%d&, &score[index]);
------解决方案--------------------探讨for后面多了一个分号,导致没有数据读入C/C++ codefor(index=0; index&SIZE; index++);{scanf(&%d&, &score[index]);}
------解决方案--------------------再++探讨引用:for后面多了一个分号,导致没有数据读入C/C++ codefor(index=0; index&SIZE; index++);{scanf(&%d&, &score[index]);}++
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有C.Primer Plus(第五版)编程练习第5章答案_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C.Primer Plus(第五版)编程练习第5章答案
上传于||暂无简介
阅读已结束,如果下载本文需要使用
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
你可能喜欢共有 692 人关注过本帖
标题:c primer plus 第六章循环的第 14 题
等 级:新手上路
帖 子:56
结帖率:93.75%
&&已结贴√
&&问题点数:9&&回复次数:19&&&
c primer plus 第六章循环的第 14 题
题目为:14.编写一个程序读入一行输入,然后反向打印该行。您可以把输入存储在一个char数组中;假定该行不超过255个字符。回忆一下,您可以使用具有%c说明符的scanf()从输入中一次读入一个字符,而且当您按下回车键时会产生换行字符(\n)。
可我发现用%c来输入根本没法做,用%s的话很简单。程序不知道要输入几个字符。除非指定了要输入多少字符,像下面这样,而且题目的最后一句我不理解是什么意思。难道就是说用%c来做的时候,不足的元素用空格或者回车来代替吗?
程序代码:
#include&stdio.h&
#define LENGTH 20
int main(void)
char a[<font color=#];
for(i=<font color=#;i&LENGTH;i++)
scanf(&%c&,&a[i]);
for(i=LENGTH-<font color=#;i&=<font color=#;i--)
printf(&%c&,a[i]);
printf(&\n&);
return(<font color=#);
搜索更多相关主题的帖子:
等 级:蜘蛛侠
帖 子:331
专家分:1433
简单说说:
希望对你有所帮助,完成一个目的,方式很多种。
我们已知:scanf(%c) 可以接收换行符,scanf(%s)把换行当成了结束符。
我们可以根据题目要求(我们假设是 遇到回车换行符就停止字符录入)
如果使用scanf(%c),我们也是可以完成任务的,我给你一个思路,在while循环体里面,scanf(%c)然后判断是不是回车,
然后自己发挥。。
如果使用scanf(%s),我们需要先储存字符数组,然后方式很多种都可以逆序输出。
等 级:蜘蛛侠
帖 子:331
专家分:1433
#include&stdio.h&
int main(void)
char a[255];
&&& scanf(&%c&,&a[i]);
&&& if(a[i]=='\n') {a[i]='\0';}
for(;i&=0;i--)
printf(&%c&,a[i]);
printf(&\n&);
return(0);
等 级:蜘蛛侠
帖 子:331
专家分:1433
#include&stdio.h&
int main(void)
char a[255];
&&& scanf(&%c&,&a[i]);
&&& if(a[i]=='\n') {a[i]='\0';}
for(;i&=0;i--)
printf(&%c&,a[i]);
printf(&\n&);
return(0);
等 级:论坛游侠
帖 子:52
专家分:151
数组如果没有被初始化,数组元素是不确定的。
如果已经初始化,但是又像你说的那样后面的元素没有赋值,这时候编译器会静态处理,填充为0。0在ACS表中为'\0’。所以对于数值型数组,未被初始化话的填充为0;字符型的填充为‘\0’,字符串在用字符数组存储的时候会在最后一位填充'\0'。
等 级:本版版主
威 望:299
帖 子:24446
专家分:46599
只能用scanf()的%c或getchar()来做,用%s是不行的。
授人以渔,不授人以鱼。
来 自:三体星系
等 级:贵宾
威 望:22
帖 子:493
专家分:1579
char数组不是说就一定是一个字符串,需要'\0'结尾。只需要统计输入了几个字符,然后逆向输出就行了。
等 级:论坛游侠
帖 子:52
专家分:151
纠正一下,字符'\0'对应数值就是0,但是0是ASC中的NULL不是ASC中'\0',我也不知道这是为什么。你说的%c方式,不足的元素确实用'\0',但是初始化的时候要用类似与这种形式char a[]={'a','b'};如果用scanf格式你只能老老实实的输入,回车也算进去了。或者在scanf方式输入是加个判断输入到某个字符时候停止。
等 级:本版版主
威 望:299
帖 子:24446
专家分:46599
回复 楼主 ctl
看那本书怎么会写出这种风格的代码,怪了。不过我其实也没看过那书,但看1楼这风格应归功于谭老师才对。
授人以渔,不授人以鱼。
等 级:本版版主
威 望:299
帖 子:24446
专家分:46599
程序代码:
#include &stdio.h&
#include &stdlib.h&
#include &conio.h&
const size_t MaxLength = <font color=#;
int main(void)
&&& char buffer[MaxLength + <font color=#] = { '<font color=#' };
&&& for (index = <font color=#; index & MaxL ++index)
&&&&&&&&buffer[index] = getchar();
&&&&&&&&if (buffer[index] == '\n')
&&&&&&&&&&&&buffer[index] = '<font color=#';
&&&&&&&&&&&&break;
&&& for ( ; index & <font color=#; --index)
&&&&&&&&putchar(buffer[index - <font color=#]);
&&& putchar('\n');
&&& printf_s(&\nPress any key to continue...&);
&&& _getch();
&&& return EXIT_SUCCESS;
[ 本帖最后由 TonyDeng 于
22:48 编辑 ]
授人以渔,不授人以鱼。
版权所有,并保留所有权利。
Powered by , Processed in 0.035515 second(s), 8 queries.
Copyright&, BCCN.NET, All Rights ReservedC/C++(15)
1、编写一个程序,创建一个具有26个元素的数组,并在其中存放26个小写字母,并让该程序显示该数组的内容。
#include &stdio.h&
int main(void){
char c[26];
char j = &#39;a&#39;;
for(i=0;i&26;i++,j++)
printf(&%c &,c[i]);
2、使用嵌套循环产生下列图案:
#include &stdio.h&
const char C = &#39;$&#39;;
int main(void){
for(i=0;i&5;i++){
for(j=0;j&=i;j++){
printf(&%c&,C);
printf(&\n&);
3、使用嵌套循环产生下列图案:
#include &stdio.h&
int main(void){
char a = &#39;F&#39;;
for(i=0;i&6;i++){
for(j=0,a=&#39;F&#39;;j&=i;j++,a--){
printf(&%c&,a);
printf(&\n&);
4、让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案,
& & & & &A
& & & &ABA
这种图案要扩展到用户输入字符,例如,前面的图案是在输入E时需要产生的。
#include &stdio.h&
int main(void){
char c = &#39;E&#39;;
char t1,t2;
printf(&请输入一个大写字母:\n&);
fflush(stdout);
scanf(&%c&,&c);
for(int i = 0;i&=c - &#39;A&#39;;i++){
for(int k = c-&#39;A&#39;-i;k&0;k--)
printf(& &);
for(int j = 1,t1 = &#39;A&#39;;j&= i*2+1;j++)
if(j&=(i*2+1)/2+1){
printf(&%c&,t1++);
for(int s = 1,t2 = i-1+&#39;A&#39;;s&= i*2+1;s++)
if(s &(i*2+1)/2+1){
printf(&%c&,t2--);
printf(&\n&);
printf(&end\n&);
5、编写一个程序打印一个表,表的每一行都给出一个整数,它的平方以及它的立方。要求用户输入表的上限和下限,使用一个for循环。
#include &stdio.h&
int main(void){
printf(&请输入两个整数,中间用逗号分隔:\n&);
fflush(stdout);
scanf(&%d,%d&,&a,&b);
for(;a&=b;a++){
printf(&数值:%d 平方:%d,立方:%d\n&,a,a*a,a*a*a);
printf(&end\n&);
6、编写一个程序把一个单词读入一个数组,然后反向打印出这个词。提示:使用strlen()计算数组中最后一个字符的索引。。
#include &stdio.h&
#include &string.h&
int main(void){
char c[30];
char w[30];
scanf(&%s&,w);
for(int i = 0; i& strlen(w);i++){
c[i]= w[i];
for(int i = strlen(c);i&=0;i--)
printf(&%c&,c[i]);
7、编写一个程序,要求输入两个浮点数,然后打印出用二者的差&#20540;除以二者的乘积所得结果,在用户键入非数字的输入前程序退出。。
#include &stdio.h&
int main(void){
float a,b;
printf(&请输入两个浮点数,中间用空隔分开,输入Q退出程序\n&);
fflush(stdout);
while(scanf(&%f%f&,&a,&b) != 0){
printf(&(%.2f - %-.2f)/ (%.2f * %-.2f)= %.2f\n&,a,b,a,b,(a-b)/(a*b));
printf(&继续,请输入两个浮点数,中间用空隔分开,输入Q退出程序\n&);
fflush(stdout);
printf(&end&);
8、对练习7进行修改,让它使用一个函数来返回计算&#20540;:
#include &stdio.h&
float fduc(float a,float b);
int main(void){
float a,b;
printf(&请输入两个浮点数,中间用空隔分开,输入Q退出程序\n&);
fflush(stdout);
while(scanf(&%f%f&,&a,&b) != 0){
printf(&(%.2f - %-.2f)/ (%.2f * %-.2f)= %.2f\n&,a,b,a,b,fduc(a,b));
printf(&继续,请输入两个浮点数,中间用空隔分开,输入Q退出程序\n&);
fflush(stdout);
printf(&end&);
float fduc(float a,float b){
return (a-b)/(a*b);
9、编写一个程序,要求用户输入下限整数和一个上限整数,然后,依次计算从下限到上限的每一个整数的平方的加和,最后显示结果,程序将不断提示用户输入下限和上限并显示答案,直到用户输入的上下限相等,可是上限上小于下限为止.
#include &stdio.h&
int main(void){
int s = 0;
printf(&请输入两个整数,中间用空分隔:&);
fflush(stdout);
while(scanf(&%d%d&,&a,&b) != 0 && a & b){
for(int i =i&=b;i++){
printf(&%d,%d的总和为:%d\n&,a*a,b*b,s);
printf(&请输入两个整数,中间用空分隔:&);
fflush(stdout);
printf(&end\n&);
10、编写一个程序把8个整数读入一个数组中,然后以相反的顺序打印它们:
#include &stdio.h&
int main(void){
for(int i=0;i&8;i++){
printf(&请输入第%d个整数:&, i);
fflush(stdout);
scanf(&%d&, &a[i]);
for(int i= 7;i&=0;i--){
printf(&%d\t&,a[i]);
printf(&\nend\n&);
11、考虑这两个无限序列:
表达式一:1.0&#43;1.0/2.0&#43;1.0/3.0&#43;1.0/4.0&#43;1.0/5.0.......
表达式二:1.0-1.0/2.0&#43;1.0/3.0-1.0/4.0&#43;1.0/5.0.......
编写一个程序来计算这两序列不断变化的总和,直到达到某个次数,让用户交互地输入这个次数,看看在20次,100次和500次之后的总和。
#include &stdio.h&
int main(void){
double a = 1.0;
double sum1,sum2;
double tx=0;
printf(&请输入计算次数:&);
fflush(stdout);
while(scanf(&%d&,&n) != 0){
for(i = 1,tx=1.0,cx=1,sum1=0,sum2=0;i&=n;i++,tx=tx+1.0,cx++){
sum1+=1.0/
if(cx%2 == 0){
sum2-=1.0/
sum2+=1.0/
printf(&%d次计算后得表达式一和二的结果分别为:%f\t%f\n&,n,sum1,sum2);
printf(&请输入下一个计算次数:&);
fflush(stdout);
printf(&\nend\n&);
12、编写一个程序,创建一个8个元素的int数组,并且把元素分别设置为 2的前8次幂,然后打印出它们的&#20540;,使用for循环来设置&#20540;,为了变化,使用do while循环来显示这些&#20540;。
#include &stdio.h&
int main(void){
for(i = 0,s=1;i&8;i++){
printf(&%d
}while(i&8);
printf(&\nend\n&);
13、编写一个程序创建两个8元素的double数组,使用一个循环来让用户键入第一个数组的8个元素的&#20540;,程序把第二个数组的元素设置为第一个数组的累积和,例如第二个数组的第4个元素应该等第一个数组的前四个元素的和,第二个数组的第5个元素应该等于第一个数组的前5个元素的和(使用嵌套循环可以做到这一点,不过利用第二个数组的第5个元素等于第二个数组的第四个元素加上第一个数组的第五个元素的这一事实,可以避免嵌套而只使用单个循环来完成这个任务),最后使用一个循环来显示两个数组的中内容,第一个数组在一行中显示,而第二个数组中每个元素在第一个数组的对应元素之下进行显示。
#include &stdio.h&
int main(void){
double a[8],b[8];
double sum = 0;
for(int i = 0;i & 8;i++){
printf(&请输入第%d元值:&,i);
fflush(stdout);
scanf(&%lf&,&a[i]);
sum += a[i];
printf(&\n显示结果:\n&);
for(int i = 0;i&8;i++){
printf(&%10.2lf
printf(&\n&);
for(int i = 0;i&8;i++){
printf(&%10.2lf
printf(&\nend\n&);
14、编写一个程序读入一行输入,然后反向打印该行,您可以把输入存储在一个char数组中,假定该行不超过255个字符。
#include &stdio.h&
#include &string.h&
int main(void){
char s[255];
int i = 0;
printf(&请输入一行的内容:\n&);
fflush(stdout);
scanf(&%c&,&c);
}while(c !=&#39;\n&#39;);
while(i &= 0){
printf(&%c&,s[i]);
printf(&\nend\n&);
15、Daphne以10%的单利息投资了100美元(也就是说,每年投资赢得的利息等于原始投资 的10%)。Derdre则以每年5%的复合利息投资了100美元,也就是说利息当前结余的5%,其中包含了以前的利息。编写一个程序,计算需要多少年Deirdre的投资额才会超过Daphne,并且显示出到那时两个人投资额。
#include &stdio.h&
#include &string.h&
int main(void){
float sum1,sum2;
int i = 1;
sum1 = sum1 + 100 * 0.10;
sum2 = sum2 + sum2*0.05;
printf(&第%d年 Daphne:%10.2f Deirdre:%10.2f:\n&,i++,sum1,sum2);
}while(sum2 &= sum1);
printf(&Deirdre将在%d年后超过Daphne.\n&,--i);
printf(&\nend\n&);
16、Chuckie Lucky赢了100万美元,他把它存入一个每年赢得8%的帐户,在每年的最后一天,Chuckie取出10万美元,编写一个程序,计算需要多少年Chuckie就会清空他的帐户。
#include &stdio.h&
#include &string.h&
int main(void){
int i = 1;
sum=1000000;
sum = sum - 100000 + sum*0.08;
printf(&第%d年 Chuckie Lucky帐户余额为:%.2f\n&,i++,sum);
}while(sum & 0);
printf(&Chukie Lucky将在%d年后清空帐户.\n&,--i);
printf(&\nend\n&);
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:42044次
排名:千里之外
原创:37篇
评论:22条
(4)(2)(3)(3)(1)(3)(1)(2)(1)(2)(1)(1)(2)(2)(3)(2)(1)(1)(1)(1)(4)

我要回帖

更多关于 c primer第五版答案 的文章

 

随机推荐