[英]i am not getting the exact output for my C program
問題是:編寫一個 C 程序將字符串 S 的小寫字母轉換為大寫字母,反之亦然。 1<=S<=100
例子:
輸入
HelloWORLD
預計OUTPUT
hELLOworld
輸入
RanDoM
預計OUTPUT
rANdOm
我的代碼
#include<stdio.h>
#include<string.h>
int main()
{ char s[100];
int i;
for (int j=0; j<=100 ; j++)
{
scanf("%s",&s[j]) ;
}
for (i=0; s[i]!='\0'; i++)
{
if (s[i]>='a' && s[i]<='z')
{
s[i] = s[i] - 32;
}
else
{
s[i] = s[i] +32;
}
}
for (int k=0; k<=100 ; k++)
{
if (s[k]!='\0')
{ printf("%c",s[k]) ; }
}
return 0;
}
我得到的 OUTPUT 是:
輸入
HelloWORLD
當前 OUTPUT
hELLOworldԯ@ _�"����ԯ8_�"�>sn�"�
輸入
RanDoM
當前 OUTPUT
rANdOm�
�$@0�������$H����>s�
我需要對代碼進行哪些更改才能去掉單詞末尾的符號?
在所有建議和幫助之后,我找到了給出預期 output 的代碼:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{ char str[100];
scanf("%s",str);
int i;
for (i=0; i<sizeof(str); i++)
{
if (str[i]>='a' && str[i]<='z'&& str[i]!='\0')
{
str[i] = str[i] - 32;
}
else if(str[i]>='A' && str[i]<='Z'&& str[i]!='\0')
{
str[i] = str[i] +32;
}
}
printf("%s",str);
return 0;
}
嗨,您的程序中有一些額外的代碼,也有一些錯誤。 我正在對您的程序進行一些更正以完成您的任務。
#include<stdio.h> #include<string.h> int main() { char s[100]; int i,j,k; //Loop not required //for (j=0; j<=100; j++) //{ scanf("%s",&s[j]); //} for (i=0; s[i];= '\0'; i++) { //You should have to compare with ASCII or use string methods like islower //if (s[i]>='a' && s[i]<='z') if (s[i]>= 97 && s[i]<= 122) // ASCII for a-97 and z-122 { s[i] = s[i] - 32; } else //u may put a check here for upper case to handle errors { s[i] = s[i] + 32; } } //No loop or if statement required // for (k=0; k<=100, k++) //{ // if (s[k];='\0') // { printf("%s";s) ; // } //} return 0; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.