输入一个字符串,将其中所有大写字母改为小写字母,而所有小写字母全部改为大写字母,其它字符不动。最后请输出新的字符串。
#include<stdio.h>
void main()
{ int i;
char s[99];
printf("please input str:\n");
gets(s);
for(i=0;s[i]!='\0';i++)
{if(s[i]<='z'&&s[i]>='a')
s[i]=s[i]-32;
if(s[i]<='Z'&&s[i]>='A')
s[i]+=32;}
printf("out put str:\n");
puts(s);
}
楼主你好!
错误主要在于第一个if如果成立就应该,进入下一次循环,不然你转换后,到第二if又判断,到时有转换回来,所以你怎么转,都是第二if在起作用,导致一直都是转换成小写!
下面你改后的代码:
#include<stdio.h>
main()
{ int i;
char s[99];
printf("please input str:\n");
gets(s);
for(i=0;s[i]!='\0';i++)
{
if(s[i]<='z'&&s[i]>='a'){
s[i]=s[i]-32;
continue;
}
if(s[i]<='Z'&&s[i]>='A')
s[i]+=32;
}
printf("out put str:\n");
puts(s);
}
希望我的回答对你有帮助!
是逻辑出了点问题,上边吧小写变大写了,又执行下边的判断,又变回小写了,加个continue跳出当次循环就可以了,或者是在之后的if语句换成else if就不会重复判断,下边贴出continue的方法作为参考吧,希望对你有帮助。
#include<stdio.h>C语言 输入一数组求最大 最小 方差 求改错...求帮助啊
其次,您提到的s没有初始化。在C语言中,未初始化的变量可能包含任意值,这在进行计算时可能导致意外的结果。确保在使用变量前进行初始化是非常必要的。在您的代码中,s的初始化为零,这是一个良好的实践。当定义数组a[100]时,您使用了单精度数据类型(float)。然而,在输入数据时,应该使用%f格式...
C语言代码改错!求助
回答:#include<stdio.h> int main ( ) { char str[2][20]; char string[20]; int i; for(i=0;i<2;i++) scanf("%s",str[i]); if(strcmp(str[0],str[1])) strcpy(string,str[0]); else strcpy(string,str[1]); printf("\\nthe largest:\\n%s\\n",string); return 0...
C语言,求改错。连续的1个或多个字母表示单词
18行: if ((c>='a' && c<='z')||(c>='A'&&c<='Z')) \/* z改为大写 *\/ 46行: len=0; \/* 每次循环都需要把len重新置零 *\/
C语言求改错
一、denominator=denominator+3 (- -||| 这也太粗心了吧)二、错在判断while()上,当item为负数,如-1\/4时就退出循环了。可以考虑加个if判断 while(1.0*item>=eps){ item=flag*1.0\/denominator;flag=-flag;s=s+item;denominator=denominator+3;if(item<0) \/\/加这两句,相当于把负数变...
改错c语言
并且n是float型的输出应该是n = %f c、n*100也应该对应为%f.2、a、abc是double型,却以整形输入。b、第一个输出,也是输出的类型也应该是double型。却以整形输出。c、第二个输出,没有这种形式的输出,格式化输出字符只能在前面一次写完,不能分割。第二个输出字符格式也错了,应该是double型。
c语言改错题
改错后,源代码如下:include<conio.h>#include<stdio.h>\/\/int found(int a[10][30],int n) \/\/错误,弹出错误 [Error] type of formal parameter 1 is incomplete int found(int a[10][30],int n) \/\/改错 { int i, j, s, k, x;\/\/for(i=0, k=1; k<=n; k++) \/\/修改 ...
c语言求100以内的同构数改错?
int isTongGou(int num){ int bFlage=0;if(num>=0&&num<=9){ if((num*num)%10==num){ bFlage=1;} }else if(num>=10&&num<=99){ if((num*num)%100==num){ bFlage=1;} }else if(num>=10&&num<=99){ if((num*num)%100==num){ bFlage=1;} } return bFlage;} voi...
大神求c语言代码改错TAT
void zfc(int,char *);void jia(char *,char *,char *);int main(){ char a[40001]={0},t[40001]={0},c[40001]={0};int n,i;scanf("%d",&n);if(n>=2){ a[0]='1';for(i=2;i<=n;i++){ jia(a,a,t);zfc(2*i-1,c);jia(t,c,a);} for(i=1;a[i]!=0...
C语言,程序改错,要求用数组:输出15-100之间能被3整除的数且至少有一位...
int main(){ int i, j, n = 0, m, k, a[100], b[5];for (i = 15; i <= 100; i++)if (i % 3 == 0){ m = i;j = 0;k = 0;do { b[j] = m % 10;m \/= 10;if (b[j] == 5)k++;j++;} while (m > 0);if (k > 0)a[n++] = i;} for (i ...
c语言求平均值改错
include <stdio.h> main(){ float x,y,a;\/\/第一个错误将int更改成float scanf("%f%f",&x,&y);\/\/加上取地址符& a=(x+y)\/2;printf("The average is %f",a);\/\/Printf改成printf;The average is 后需加上格式控制符%f并在a前加逗号 } 就这些了。。希望对你有帮助 ...