69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <string.h>
int main()
{
char a[1008];
int m, i, j, count, min;
scanf("%d\n",&m);
while(m--) {
fgets(a, 1007, stdin);
a[strlen(a)-1] = 0;
min=9999999;
for(i=0;a[i]!='\0';i++){
count=0;
for(j=0;a[j]!='\0';j++){
if(a[i]>a[j])
count+=(a[i]-a[j])<(a[j]+26-a[i])?(a[i]-a[j]):(a[j]+26-a[i]);
if(a[i]<a[j])
count+=(a[j]-a[i])<(a[i]+26-a[j])?(a[j]-a[i]):(a[i]+26-a[j]);
}
if(min>count)
min=count;
}
printf("%d\n",min);
}
return 0;
}
用fgets替换gets是想把警告去掉;fgets和gets都会将换行符自动加到字符数组倒数第二个位置,最后一个字符是字符串结束标志。
所以,通过a[strlen(a)-1] = 0就是用字符串结束标记覆盖回车符。这样就把字符数组a中的回车符去掉了。