鱼C论坛

 找回密码
 立即注册
查看: 1469|回复: 3

[已解决]求助

[复制链接]
发表于 2020-10-17 22:52:16 | 显示全部楼层 |阅读模式

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

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

x
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
   char a ,b ;
  
                   while(1)
                   {
                           printf("请输入一个字符:");
                           scanf("%c",&a);
                           if('a'<=a&&a<='z')
                           {
                                   b = a - 32;
                                   printf("%c的大写字母是%c\n",a,b);
                                   getchar();
                                   printf("\n");
                                  
                           }
                           else if ('A'<=a&&a<='Z')
                           {
                                   printf("%c它不是一个小写字母\n",a);
                                   getchar();
                                   printf("\n");
                                  
                           }
                           else
                           {
                                   printf("%c它不是一个小写字母\n",a);
                                   getchar();
                                   printf("\n");
                                  
                           }
                          
                   }
   
}
这段代码,如何在输入ii的时候只读取首字符
最佳答案
2020-10-18 03:13:44
利用数组,完美取出第一个字符



  1. #include<stdio.h>
  2. void main()
  3. {
  4.       char ch,cha;
  5.       char b[10] = "";
  6.       while(1)
  7.       {
  8.             printf("请输入一个字符,");
  9.             scanf("%c",&ch);
  10.             getchar();
  11.             b[0] = ch;                // 将接收到的字符存入字符数组
  12.             ch = b[0];                // 将数组的第一个元素赋给变量 ch;
  13.             fflush(stdin);            // 清除键盘缓冲区
  14.             if('a' <= ch && ch <= 'z')
  15.             {
  16.                   cha = ch - 32;
  17.             }
  18.             else
  19.             {
  20.                   printf("%c它不是一个小写字母\n",ch);
  21.                   printf("\n");
  22.                   continue;
  23.             }
  24.             printf("%c的大写字母是:%c\n",ch,cha);
  25.             printf("\n");
  26.       }
  27. }
复制代码

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-18 03:13:44 | 显示全部楼层    本楼为最佳答案   
利用数组,完美取出第一个字符



  1. #include<stdio.h>
  2. void main()
  3. {
  4.       char ch,cha;
  5.       char b[10] = "";
  6.       while(1)
  7.       {
  8.             printf("请输入一个字符,");
  9.             scanf("%c",&ch);
  10.             getchar();
  11.             b[0] = ch;                // 将接收到的字符存入字符数组
  12.             ch = b[0];                // 将数组的第一个元素赋给变量 ch;
  13.             fflush(stdin);            // 清除键盘缓冲区
  14.             if('a' <= ch && ch <= 'z')
  15.             {
  16.                   cha = ch - 32;
  17.             }
  18.             else
  19.             {
  20.                   printf("%c它不是一个小写字母\n",ch);
  21.                   printf("\n");
  22.                   continue;
  23.             }
  24.             printf("%c的大写字母是:%c\n",ch,cha);
  25.             printf("\n");
  26.       }
  27. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-18 18:36:27 From FishC Mobile | 显示全部楼层
ffulsh这个没懂是什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-18 22:41:38 | 显示全部楼层
我是第一名 发表于 2020-10-18 18:36
ffulsh这个没懂是什么

看一个简单的程序:

  1. #include <stdio.h>
  2. int main()
  3. {
  4.         char c;
  5.         scanf("%c", &c);
  6.         printf("%d\n", c);

  7.         scanf("%c", &c);
  8.         printf("%d\n", c);
  9.        
  10.         return 0;

  11. }
复制代码


运行这个程序,输入1, 并按enter键,结果为:

49
10

这个结果是正常的,字符 1 对应的 ASCII 值为 49, enter 键对应的 ASCII 值为 10, 所以就有这样的结果。由此可以看出,第二个 scanf 函数执行了,从缓冲区中得到了回车键的值(当然,这个值不是我们想要的),那么我们如何在读取到我们所需要的值之后,就需要将缓冲区里的废弃数据冲掉,正业下次的键盘输入作好准备,就得用 fflush 函数就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-28 19:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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