scanf,gets,getchar的區(qū)別
三者都是從標(biāo)準(zhǔn)輸入流stdio (標(biāo)準(zhǔn)輸入設(shè)備叉信,一般指向鍵盤(pán))中讀取內(nèi)容蔗崎。
1.scanf輸入字符串的時(shí)候不會(huì)接收Space空格逐哈,回車(chē)Enter吗冤,Tab鍵侮腹,則認(rèn)為輸入結(jié)束嘲碧。
2.gets能接收空格鍵,回車(chē)鍵父阻,Tab鍵愈涩,回車(chē)則認(rèn)為輸入結(jié)束
3.getchar只能接受一個(gè)字符望抽,遇到回車(chē)結(jié)束輸入,可接受回車(chē)鍵履婉。常用來(lái)吸收回車(chē)符煤篙。
#include <stdio.h>
#include<string.h>
#include<string>
#define INF 0x7fffffff
int abs(int x){
return x>0 ? x:-x;
}
int main( ){
? int t,sum,dis,min;
? ? char n;
? ? char str[1000];
? ? int len;
? ? scanf("%d",&t);
? ? while(t--){
? ? ? ? min=INF;
? ? ? ? scanf("%s",str);
? ? ? ? len=strlen(str);
? ? ? ? for(char i='a';i<='z';i++){
? ? ? ? ? ? sum=0;
? ? ? ? ? ? for(int j=0;j<len;j++){
? ? ? ? ? ? dis=abs(str[j]-i);
? ? ? ? ? ? ? ? if(dis>13)
? ? ? ? ? ? ? ? ? ? dis=26-dis;
? ? ? ? ? ? ? ? sum=sum+dis;
? ? ? ? ? ? }if(sum<min)
? ? ? ? ? ? ? ? ? ? min=sum;
? ? ? ? }
? ? ? ? printf("%d\n",min);
? ? }
return 0;
}
這道題真的得用暴力破解(挨個(gè)試),實(shí)在想不出方法谐鼎。
不要忘記 char str【】 scanf("%c",str)// 數(shù)組可以直接這樣輸入