谢谢大家!一道简单的编程题。变得程序运行乱码。小菜鸟再次感谢啦_百 ...
发布网友
发布时间:2024-09-28 14:22
我来回答
共1个回答
热心网友
时间:2024-10-29 09:08
坦白说,改动的地方还是挺多的,输入输出很有些问题,而且像 if(strcmp(line,"Caps")) cnt++; 语句,你没理解strcmp的用法,如果line和“caps”相等,返回的是0,所以应该改成 if(!strcmp(line,"Caps")) cnt++;
另外一些错误,请对比我给你改的程序!
==============================================
#include<stdio.h>
#include<string.h>
int main(){
int icase,n,len,cnt,i;//分别表示测试数据组数,每组数据中字符串个数,字符串长度,按Caps键次数。
char line[1000],c[2000];
scanf("%d",&icase);
while(icase--){
scanf("%d",&n);
cnt=0; //统计Caps按键次数初始为0
getchar();
for(i=0;i<n;i++){
gets(line);
len=strlen(line);
// cnt=0;//
if(len==1) {//如果串仅含一个字母,根据Caps情况将其存入C数组。
if(cnt%2) c[i-cnt]=line[0]-32;
else c[i-cnt]=line[0];
}
else if(!strcmp(line,"Caps")) cnt++;
//如果串为"Caps",则cnt自加1
else if(cnt%2) c[i-cnt]=line[6];//如Shift+字母,根据情况存入c数组
else if(cnt%2==0) c[i-cnt]=line[6]-32;
}
c[n-cnt]='\0';//字符串结束符
printf("%s\n",c);
}
return 0;
}