| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1981 人关注过本帖
标题:[求助]帮我看下这个程序
只看楼主 加入收藏
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
 问题点数:0 回复次数:14 
[求助]帮我看下这个程序

#include<Stdio.h> int a[100],n;char c='y'; main() {void sort(int a[],int n); void sum(int a[],int n); void max(int a[],int n); int i,j; printf("\nthe number total n="); scanf("%d",&n); printf("please input the %d numbers:\n",n); for(i=1;i<=n;i++) scanf("%d",&a[i]); printf(" the data prosess system\n"); printf("1:find the max:\n"); printf("2:sort:\n"); printf("3:sum:\n"); while(c=='y') { while(1) {printf("please choose :"); scanf("%d",&j); if(j>=1&&j<=3) break; else printf("input error!\n"); } switch(j) {case 1: max(a,n); break; case 2: sort(a,n); break; case 3: sum(a,n); } printf("do you want continue(y/n?):"); c=getchar();      /*这里还能理解,但如果没有下面的三个,就不能continue*/ } } void max(int a[100],int n) {int i,t;t=a[0]; for(i=1;i<=n;i++) if(t<a[i]) t=a[i]; printf("the max=%d\n",t); c=getchar();   /*这里就不懂了,还有下面的两个*/ } void sort(int a[],int n) {int i,j,t; for(i=1;i<n;i++) for(j=i+1;j<=n;j++) if(a[i]>a[j]) {t=a[i];a[i]=a[j];a[j]=t;} for(i=1;i<=n;i++) {if(i%8==0) printf("\n"); printf("%8d",a[i]); } printf("\n"); c=getchar();     /*这 } void sum(int a[],int n) {int i,s=0; for(i=1;i<=n;i++) s=s+a[i]; printf("the sum=%d\n",s); c=getchar();   /*这

}

上面那个程序我调试了半天,好不容易调度出来了,但有几个地方不明白:

为什么每个函数的后面要加一个:c=getchar();

才能接收到字符啊,还有就是上面的主函数还要有一个c=getchar();

否则不能:continue;

谁能帮我解释一下啊,谢谢。

[此贴子已经被作者于2004-07-02 11:05:04编辑过]

搜索更多相关主题的帖子: void max include numbers please 
2004-07-02 11:00
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
收藏
得分:0 

主函数里的是必须的,要接受字符啊,而函数里的没有必要,是多余的

因为函数执行完后在主函数里还要执行c=getchar();就把函数里的覆盖掉了


我的主页 http://www.
2004-07-02 11:12
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

我调试的时候把函数里面的:c=getchar();去掉试了一下,但是无法继续

只有加上:c=getchar();才能继续,我想函数中的:c=getchar();是不是用来接收回车的啊

如果没有的话,c='\n',这样c!='y'就跳出循环了.

是不是这样的啊?


2004-07-03 17:08
yhb
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2004-7-4
收藏
得分:0 
兄弟们这个程序我怎么运行不成呀!!!
出现以下错误信息
 error C2018: unknown character '0xa1'

2004-07-04 03:37
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

你用的什么编译器啊,

我用的TC2.0可以运行的,

调试了半天可以运行,就是有几个地方不大懂,所以才请高手们帮忙!


2004-07-04 08:21
tempnetbar
Rank: 2
等 级:新手上路
威 望:4
帖 子:582
专家分:4
注 册:2004-5-5
收藏
得分:0 
我看过了,也觉得很奇怪,希望大家一起看看,建议斑竹把此帖置顶,解决后列为精华,因为实在太奇怪了
四楼的错误是因为直接在论坛上复制代码的缘故,把注释那几行删掉就可以了,我顶!希望大家一起看看!我思考中……无果

相信勤能补拙! 喜欢用好用的就永远学不到有用的。
2004-07-05 03:35
whx0001
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2004-7-5
收藏
得分:0 

#include<Stdio.h> int a[100],n;char c='y'; main() {void sort(int a[],int n); void sum(int a[],int n); void max(int a[],int n); int i,j; printf("\nthe number total n="); scanf("%d",&n); printf("please input the %d numbers:\n",n); for(i=1;i<=n;i++) scanf("%d",&a[i]); printf(" the data prosess system\n"); printf("1:find the max:\n"); printf("2:sort:\n"); printf("3:sum:\n"); while(c=='y') { while(1) {printf("please choose :"); scanf("%d",&j); /*问题在这里,这里输入数字后,输入缓冲区中还有一个回车符没有读取,如果没有没有函数中的c=getchar();那么将在主函数中读到c中,显然不满足循环条件而退出*/ if(j>=1&&j<=3) break; else printf("input error!\n"); }

getchar(); /*此处增加这句,就可把回车符读掉,函数中的c=getchar();都可去掉了*/ switch(j) {case 1: max(a,n); break; case 2: sort(a,n); break; case 3: sum(a,n); } printf("do you want continue(y/n?):"); c=getchar();      /*这里还能理解,但如果没有下面的三个,就不能continue*/ } } void max(int a[100],int n) {int i,t;t=a[0]; for(i=1;i<=n;i++) if(t<a[i]) t=a[i]; printf("the max=%d\n",t); c=getchar();   /*这里就不懂了,还有下面的两个*/ } void sort(int a[],int n) {int i,j,t; for(i=1;i<n;i++) for(j=i+1;j<=n;j++) if(a[i]>a[j]) {t=a[i];a[i]=a[j];a[j]=t;} for(i=1;i<=n;i++) {if(i%8==0) printf("\n"); printf("%8d",a[i]); } printf("\n"); c=getchar();     /*这 } void sum(int a[],int n) {int i,s=0; for(i=1;i<=n;i++) s=s+a[i]; printf("the sum=%d\n",s); c=getchar();   /*这

}


¤ ╱◥██◣^^ ╭⌒╮  ^ | 田︱ 田 ︱ぃ╭ ╭ ⌒╮ ????? い??????? ╪╪╪╪╪╪╪╪╪???
2004-07-05 10:02
Knocker
Rank: 8Rank: 8
等 级:贵宾
威 望:47
帖 子:10454
专家分:603
注 册:2004-6-1
收藏
得分:0 
楼上说得对,也可以用fflush(stdin);

九洲方除百尺冰,映秀又遭蛮牛耕。汽笛嘶鸣国旗半,哀伤尽处是重生。     -老K
治国就是治吏。礼义廉耻,国之四维。四维不张,国之不国。   -毛泽东
2004-07-05 19:47
chengstone
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
帖 子:562
专家分:226
注 册:2004-4-3
收藏
得分:0 
这个问题在编程时经常出现 我一般是用fflush(stdin) 来解决的

qq:69558139
2004-07-05 20:11
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

谢谢高手们帮忙,现在明白了!


2004-07-05 21:48
快速回复:[求助]帮我看下这个程序
数据加载中...
 
   



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

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