鱼C论坛

 找回密码
 立即注册
查看: 2655|回复: 7

写的查电话号码,但是总是跳过一些步骤呢?

[复制链接]
发表于 2012-4-6 00:08:07 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 sc3297 于 2012-4-6 10:40 编辑



  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4. {
  5. struct
  6. {
  7. char name[20]
  8. char num[11];
  9. }x[20];
  10. int s,i;
  11. char j;
  12. char a[20];
  13. for(i=0;i<20;i++)
  14. {
  15. printf("输入姓名:\n");
  16. scanf("%s",x[i].name); //为什么我编辑的时候是 x[i].name 保存过后又变成了x.name呢??? 网站的问题?
  17. printf("输入电话号码:\n");
  18. scanf("%s",x[i].num);
  19. printf("是否继续存入新的联系薄:Y为是|任意键为否\n");
  20. getchar();
  21. j=getchar();
  22. if(j!='Y'&&j!='y')
  23. {
  24. break;
  25. }
  26. }
  27. do
  28. {
  29. printf("输入要查询的姓名:\n");
  30. getchar();
  31. gets(a);
  32. s=0;
  33. for(i=0;i<20;i++)
  34. {
  35. if(strcmp(a,x[i].name)==0)
  36. {
  37. printf("姓名: %s\n",x[i].name);
  38. printf("号码:%s\n",x[i].num);
  39. s=1;
  40. break;
  41. }
  42. }
  43. if(s==0)
  44. {
  45. printf("没有你要查找的电话号码!!!");
  46. }
  47. printf("还要继续查找吗?\n");
  48. printf("输入Y继续,输入任意键退出\n");
  49. getchar();
  50. j=getchar(); // 这一句输入后 不执行赋值了 直接 j='10'; 搞不清楚为什么 求解释
  51. if(j!='Y'&&j!='y')
  52. {
  53. s=0;

  54. }else s=1;
  55. }while(s);
  56. }
复制代码


  1. ......用代码复制好了 , 用文本 [i]不显示
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-6 08:53:22 | 显示全部楼层
本帖最后由 莫名其妙 于 2012-4-6 09:11 编辑

新手在看看!~

我的vc6.0 x.name 和x.num 都编译不过 要改成 x->name x->num 才能编译过!~
我前面输入的是   ( 姓名,号码)     a ,1     b,2    c,3   d ,4   
然后查询的姓名我输入的是'a' 这里调试了下   
if(strcmp(a,x.name)==0)
这里对比的是 输入的'a'  和最后一次输入的 'd'   做的对比 是不是这里找错对象了!~

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-6 10:41:24 | 显示全部楼层
  1. ......用代码复制好了 , 用文本 [i]不显示
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-6 14:51:42 | 显示全部楼层
跟你修改了一下,可以输入带空格的名称
  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4. {
  5. struct dianhuaben
  6. {
  7. char name[20];
  8. char num[11];
  9. }x[20];

  10. int s,i;
  11. char j;
  12. char a[20];
  13. for(i=0;i<20;i++)
  14. {
  15. printf("输入姓名:\n");
  16. gets(x[i].name);
  17. printf("输入电话号码:\n");
  18. gets(x[i].num);
  19. printf("是否继续存入新的联系薄:Y为是|任意键为否\n");
  20. j=getchar();
  21. getchar(); //去掉'10'
  22. if(j!='Y'&&j!='y')
  23. {
  24. break;
  25. }

  26. }
  27. do
  28. {
  29. printf("输入要查询的姓名:\n");
  30. gets(a);
  31. s=0;
  32. for(i=0;i<20;i++)
  33. {
  34. if(strcmp(a,x[i].name)==0)
  35. {
  36. printf("姓名: %s\n",x[i].name);
  37. printf("号码:%s\n",x[i].num);
  38. s=1;
  39. break;
  40. }
  41. }
  42. if(s==0)
  43. {
  44. printf("没有你要查找的电话号码!!!\n");
  45. }

  46. printf("还要继续查找吗?\n");
  47. printf("输入Y继续,输入任意键退出\n");
  48. j=getchar();
  49. getchar(); //去掉'10'
  50. if(j!='Y'&&j!='y')
  51. {
  52. s=0;
  53. }
  54. else
  55. {
  56. s=1;
  57. }
  58. }while(s);
  59. }




复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-6 15:45:32 | 显示全部楼层
hkcx3000 发表于 2012-4-6 14:51
跟你修改了一下,可以输入带空格的名称

多谢........但是我还是没明白他为什么会不执行赋值啊.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-6 16:44:25 | 显示全部楼层
主要就是你的那些getchar()用的不太好,仔细对比一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2012-4-6 16:48:38 | 显示全部楼层
现在明白了 scanf不读入回车 直接把回车给后面的getchar了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-4-6 16:57:40 | 显示全部楼层
要不干脆就不用getchar(),用gets()
  1. #include <stdio.h>
  2. #include <string.h>
  3. void main()
  4. {
  5. struct dianhuaben
  6. {
  7. char name[20];
  8. char num[11];
  9. }x[20];
  10. char jj[1];
  11. int s,i;
  12. char *j=jj;
  13. char a[20];
  14. for(i=0;i<20;i++)
  15. {
  16. printf("输入姓名:\n");
  17. gets(x[i].name);
  18. printf("输入电话号码:\n");
  19. gets(x[i].num);
  20. printf("是否继续存入新的联系薄:Y为是|任意键为否\n");
  21. gets(j);
  22. // j=getchar();
  23. // getchar(); //去掉'10'
  24. if((*j)!='Y'&&(*j)!='y')
  25. {
  26. break;
  27. }

  28. }
  29. do
  30. {
  31. printf("输入要查询的姓名:\n");
  32. gets(a);
  33. s=0;
  34. for(i=0;i<20;i++)
  35. {
  36. if(strcmp(a,x[i].name)==0)
  37. {
  38. printf("姓名: %s\n",x[i].name);
  39. printf("号码:%s\n",x[i].num);
  40. s=1;
  41. break;
  42. }
  43. }
  44. if(s==0)
  45. {
  46. printf("没有你要查找的电话号码!!!\n");
  47. }

  48. printf("还要继续查找吗?\n");
  49. printf("输入Y继续,输入任意键退出\n");
  50. gets(j);
  51. //j=getchar();
  52. //getchar(); //去掉'10'
  53. if((*j)!='Y'&&(*j)!='y')
  54. {
  55. s=0;
  56. }
  57. else
  58. {
  59. s=1;
  60. }
  61. }while(s);
  62. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-29 03:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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