回复 3楼 mqhz
											
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define N 3
int main(int argc, char *argv[])
{
    int i;
    char c;
    printf("请输入%d个字符:\n", N);
    for(i=0; i<N; i++)
    {
        scanf("%c", &c);
        printf("输入的是:%c,ASCII:%d\n", c,c);//
        if(islower(c))
            c-=32;
        printf("变化后是:%c,ASCII:%d\n", c,c);
    }
    printf("\n");
    system("PAUSE");  
    return 0;
}你输入:a b c回车以后,得到:
输入的是:a,ASCII:97
变化后是:A,ASCII:65
输入的是: ,ASCII:32
变化后是: ,ASCII:32
输入的是:b,ASCII:98
变化后是:B,ASCII:66
造成上述结果的原因是,输入:a b c回车时,' '(空格符)保存在缓冲区内,scanf("%c",&c);第2次读取的是' '(空格符)
解决的办法:
1.输入abc回车
2.一次输入一个字符
3.

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define N 3
int main(int argc, char *argv[])
{
    int i;
    char c;
    printf("请输入%d个字符:\n", N);
    for(i=0; i<N; i++)
    {
        scanf("%c", &c);
        fflush(stdin);///////功能:清除一个流
        printf("输入的是:%c,ASCII:%d\n", c,c);//
        if(islower(c))
            c-=32;
        printf("变化后是:%c,ASCII:%d\n", c,c);
    }
    printf("\n");
    system("PAUSE");  
    return 0;
}