写了两个代码,图一可以小写转大写,但图二不能大写转小写

img

img

你这两个函数都是有问题的,只是因为小写字母的ascii码大于大写字母的ascii码所以在小写转大写那儿看起来能运行。
另外,你的变量声明也有问题,首先声明i后没有赋值,则i会是一个随机值;则后面定义 char a[i]时,这个a数组的大小会是随机的,这是非常危险的;在你这个程序中,并不需要声明char数组来储存输入,只用一个char类型变量就足够。
判断输入的字符是大写字母:if ('A' <= a && a <= 'Z') 判断是小写字母: if ('a' <= a && a <='z')

哈喽,有几个错误,看看代码,有用请点采纳
小写转大写

#include<stdio.h>
int main() {
    int i; 
    char a[100]; // 改这里
    scanf("%s",&a); // 改这里
    for(i=0;a[i]!='\0';i++){
        if(a[i]>='a'&&a[i]<='z') // 改这里
            printf("%c",a[i]-32); 
        else 
            printf("%c",a[i]);
    }
    return 0;
}

大写转小写

#include<stdio.h>
int main() {
    int i; 
    char a[100];   // 改这里
    scanf("%s",&a);  // 改这里
    for(i=0;a[i]!='\0';i++){
        if(a[i]>='A'&&a[i]<='Z') // 改这里
            printf("%c",a[i]+32); 
        else 
            printf("%c",a[i]);
    }
    return 0;
}

第十行把后面a[i] >= 'z'改为a[i] <= 'z'

用tolower(转小写)和toupper(转大写)函数

你这判断条件有问题,第一个应为if(a[i] >= 'a' && a[i] <= 'z'),第二个应为 if(a[i] >= 'A' && a[i] <= 'Z')

你的 变量 i没有初值

会有内存越界风险

第十行 if(a[i] >= 'A' && a[i] <= 'Z')

你的 变量 i没有初值

会有内存越界风险