5

実にシンプルなプログラム。「A」を「a」に変えたいだけですが、出力が「A」になっています。

#include <stdio.h>

int main(void) {
    putchar(lower('A')); 

}

lower(a) 
int a; 
{
    if ((a >= 65) && (a >= 90))
        a = a + 32; 
    return a;  
}
4

10 に答える 10

21

条件の 2 番目の部分を台無しにしましたif。それはする必要がありますa <= 90

また、参考までに、tolower既にこれを行う C ライブラリ関数があります。

#include <ctype.h>
#include <stdio.h>

int main() {
    putchar(tolower('A'));
}
于 2013-03-29T18:02:32.890 に答える
4

私はあなたが望むと信じています <= 90

lower(a) 
int a; 
{
    if ((a >= 65) && (a <= 90))
        a = a + 32; 
    return a;  
}

tolower は、自分でこれをやりたくない限り、おそらく手間を省くことができます。http://www.cplusplus.com/reference/cctype/tolower/

于 2013-03-29T18:02:27.730 に答える
3

ASCII では、大文字と小文字のアルファベットは互いに 0x20 離れているため、これは別の方法です。

int lower(int a) 
{
    if ((a >= 0x41) && (a <= 0x5A))
        a |= 0x20; 
    return a;  
}
于 2013-03-29T18:16:07.627 に答える
2

正しいことを確認する 1 つの方法は、ASCII コードの代わりに文字を使用することです。

if ((a >= 65) && (a <= 90))

あなたが望むのは、ケースを下げることです。のようなものを使用することをお勧めしますif (a >= 'A' && a <= 'Z')。すべてのASCIIコードを思い出す必要はありません:)

于 2013-03-29T18:09:55.290 に答える
1

以下に示すように、ビット操作を使用して、文字を小文字から大文字に、またはその逆に変換できます。

#include<stdio.h>
int main(){
  char c;
  printf("Enter a character in uppercase\n");
  scanf("%c",&c);
  c|=' '; // perform or operation on c and ' '
  printf("The lower case of %c is \n",c);
  c&='_'; // perform 'and' operation with '_' to get upper case letter. 
  printf("Back to upper case %c\n",c);   
  return 0;
}
于 2017-06-30T15:07:55.760 に答える
1

ASCII では大文字と小文字のアルファベットは 0x20 (ASCII では 0x20 はスペース ' ') 離れているため、これは別の方法です。

int lower(int a) 
{
    return a | ' ';  
}
于 2020-06-01T20:30:27.280 に答える
0

コンディションが悪い場合。下位の戻り型も必要です。

#include <stdio.h>

int lower(int a)  
{
    if ((a >= 65) && (a <= 90))
        a = a + 32; 
    return a;  
}

int _tmain(int argc, _TCHAR* argv[])
{

    putchar(lower('A')); 
    return 0;
}
于 2013-03-29T18:06:13.380 に答える
-1
#include <stdio.h>
#include <string.h>

int main()
{
    char string[] = "Strlwr in C";

    printf("%s\n",strlwr(string));

    return  0;
}

大文字と小文字を区別するには strlwr を使用します

于 2013-03-29T18:04:07.687 に答える
-1

このコードを使用

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void main(){
char a[10];
clrscr();
gets(a);
int i,length=0;
for(i=0;a[i]!='\0';i++)
length+=1;
for(i=0;i<length;i++){
a[i]=a[i]^32;
}
printf("%s",&a);
getch();
}
于 2015-07-08T12:24:48.943 に答える