鱼C论坛

 找回密码
 立即注册
查看: 4362|回复: 2

为什么每次输入错误那句话都会输出啊??奇了怪了

[复制链接]
发表于 2013-3-29 17:06:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 牡丹花下死做鬼 于 2013-3-29 17:08 编辑

复制代码
就是个冒泡排序诶这该死的问题就是解决不了啊 谁帮帮我啊!!
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. #include<malloc.h>
  4. void max (int* i, int* j)
  5. {
  6.     int t;
  7.     if(*i < *j)
  8.     {
  9.         t = *i;
  10.         *i = *j;
  11.         *j = t;
  12.     }
  13. }


  14. int main()
  15. {
  16.     int j, k, l;
  17.         char ch;
  18. star:        printf("要输入几个数??");
  19.                 scanf("%d",&k);
  20.                 int* i=(int*)malloc(k*sizeof(int));
  21.                
  22.                 printf("请输入%d个整数:",k);
  23.                
  24.                 for(j = 0;j<k;j++)
  25.                 {
  26.                         scanf("%d",i+j);
  27.                 }
  28.                
  29.                 for(j = 0;j<k-1;++j)
  30.                 {
  31.                         for(l = j+1;l < k;l++)
  32.                         {
  33.                                 max(&i[j], &i[l]);
  34.                         }
  35.                 }
  36.                 for(j = 0;j<k;++j)
  37.                 {
  38.                         l = i[j];
  39.                         printf("%d ",l);
  40.                 }
  41.                 printf("\n");
  42.                
  43. star1: printf("是否继续(Y/N):");
  44.           
  45.            scanf("%c",&ch);
  46.           
  47.            if(ch == 89 || ch == 121)
  48.                    goto star;
  49.           
  50.            else if(ch == 78 || ch == 110)
  51.                    system("pause");
  52.            else
  53.                   
  54.                    printf("输入错误,请冲洗输入!!\n\n");
  55.            goto star1;                         
  56.           
  57.           
  58.           
  59.           
  60.            return 0;
  61. }
复制代码

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-29 21:55:25 | 显示全部楼层
应该是前面的scanf语句把"\n"读入缓存中了,所以第一次scanf("%c",&ch);时从缓存读取的字符永远是"\n",改成scanf("\n%d",ch);或者在scanf("%c",&ch);前面加setbuf(stdin, NULL);清空缓存应该就没问题了~~
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-3-29 22:57:25 | 显示全部楼层
  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. #include<malloc.h>
  4. void max (int* i, int* j)
  5. {
  6.     int t;
  7.     if(*i < *j)
  8.     {
  9.         t = *i;
  10.         *i = *j;
  11.         *j = t;
  12.     }
  13. }


  14. int main()
  15. {
  16.     int j, k, l;
  17.         char ch;
  18. star:        printf("要输入几个数??");
  19.                 scanf("%d",&k);
  20.                 int* i=(int*)malloc(k*sizeof(int));
  21.                
  22.                 printf("请输入%d个整数:",k);
  23.                
  24.                 for(j = 0;j<k;j++)
  25.                 {
  26.                        // scanf("%d",i+j);
  27.                                         [color=Red]scanf("%d", &i[j]);[/color]                }
  28.                
  29.                 for(j = 0;j<k-1;++j)
  30.                 {
  31.                         for(l = j+1;l < k;l++)
  32.                         {
  33.                                 max(&i[j], &i[l]);
  34.                         }
  35.                 }
  36.                 for(j = 0;j<k;++j)
  37.                 {
  38.                         l = i[j];
  39.                         printf("%d ",l);
  40.                 }
  41.                 printf("\n");
  42.                
  43. star1: printf("是否继续(Y/N):");

  44.         [color=Red]   fflush(stdin);[/color]          //清除缓冲区  
  45.            scanf("%c",&ch);
  46.                   
  47.            
  48.            if(ch == 89 || ch == 121)
  49.                    goto star;
  50.            
  51.            else if(ch == 78 || ch == 110)
  52.                    system("pause");
  53.            else
  54.                   
  55.                    printf("输入错误,请冲洗输入!!\n\n");
  56.            goto star1;                        
  57.            
  58.            
  59.            
  60.            
  61.            return 0;
  62. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-8-4 22:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表