天天看點

ACM俱樂部 字元串數制轉換分數: 2統計單詞分數: 1.5最長&最短文本分數: 1.5首字母大寫分數: 1.5字元串的反碼分數: 1.2統計字元分數: 1

數制轉換分數: 2

時間限制:1 秒 記憶體限制:32 兆 特殊判題: 否 送出:59 解決: 24

标簽

  • 進制轉換

題目描述

求任意兩個不同進制非負整數的轉換(2進制~16進制),所給整數在long所能表達的範圍之内。

不同進制的表示符号為(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

輸入格式

輸入隻有一行,包含三個整數a,n,b。a表示其後的n 是a進制整數,b表示欲将a進制整數n轉換成b進制整數。a,b是十進制整數,2 =< a,b <= 16。

輸出

可能有多組測試資料,對于每組資料,輸出包含一行,該行有一個整數為轉換後的b進制數。輸出時字母符号全部用大寫表示,即(0,1,...,9,A,B,...,F)。

樣例輸入

4 123 10

樣例輸出

27

提示[+]

*** 提示已隐藏,點選上方 [+] 可顯示 ***

分類

  • 北京大學研究所學生複試上機真題
  • 1 #include <iostream>
     2 #include <string>
     3 #include <algorithm>
     4 using namespace std;
     5   string shuzi="0123456789ABCDEF";//用來 根據整數查找字元串中字元的位置
     6   int ch[128]={0};//根據字元存放該字元所對應的整數值
     7 long toshi(string str,int a)
     8 {
     9 int sum=0;
    10 for(int i=0;i<str.length();i++)
    11 {
    12   sum=sum*a+ch[str[i]];
    13 }
    14 return sum;
    15 }
    16 string change(int sum,int b)
    17 {
    18     string change="";
    19 if(sum==0)  change="0";//"0"不要忘掉
    20 while(sum>0)
    21 {
    22   change=change+shuzi[sum%b];
    23   sum=sum/b;
    24 }
    25 reverse(change.begin(),change.end());
    26 return change;
    27 }
    28 int main()
    29 {
    30   for(int i=0;i<10;i++)
    31  ch['0'+i]=i;
    32   for(int i=0;i<7;i++)
    33   {
    34       ch['A'+i]=10+i;
    35  ch['a'+i]=10+i;
    36   }
    37   int a,b;
    38   string str;
    39   while(cin>>a>>str>>b)
    40   {
    41        int sum=toshi(str,a);
    42   string cha=change(sum,b);
    43   cout<<cha<<endl;
    44   }
    45 }      

統計單詞分數: 1.5

時間限制:1 秒 記憶體限制:32 兆 特殊判題: 否 送出:95 解決: 44

标簽

  • 字元串處理
  • 統計單詞數

題目描述

編一個程式,讀入使用者輸入的,以“.”結尾的一行文字,統計一共有多少個單詞,并分别輸出每個單詞含有多少個字元。

(凡是以一個或多個空格隔開的部分就為一個單詞)

輸入格式

輸入包括1行字元串,以“.”結束,字元串中包含多個單詞,單詞之間以一個或多個空格隔開。

輸出

可能有多組測試資料,對于每組資料,

輸出字元串中每個單詞包含的字母的個數。

樣例輸入

hello how are you.

樣例輸出

5 3 3 3

提示[+]

*** 提示已隐藏,點選上方 [+] 可顯示 ***

分類

  • 華中科技大學究生複試上機真題
  • 1 #include <iostream>
     2 #include <string>
     3 using namespace std;
     4 int main()
     5 {
     6   string ss;
     7   while(getline(cin,ss))
     8   {
     9      int n=0;int sum=0;
    10 while(ss[n]!='.')
    11 {
    12    if(ss[n]==' ')
    13 if(sum!=0)
    14 {
    15   cout<<sum<<" ";
    16   sum=0;
    17 }
    18 if(ss[n]!=' ')
    19 sum++;
    20 n++;
    21 }
    22 cout<<sum<<endl;
    23   }
    24 }      

字元串的查找删除

時間限制:1 秒

記憶體限制:32 兆

特殊判題:否

送出:2798

解決:1101

題目描述:
給定一個短字元串(不含空格),再給定若幹字元串,在這些字元串中删除所含有的短字元串。
輸入:

輸入隻有1組資料。

輸入一個短字元串(不含空格),再輸入若幹字元串直到檔案結束為止。

輸出:
删除輸入的短字元串(不區分大小寫)并去掉空格,輸出。
樣例輸入:
in#include int main(){printf(" Hi ");}
樣例輸出:
#cludetma(){prtf("Hi");}
提示:
注:将字元串中的In、IN、iN、in删除。
來源:
2009年北京航空航天大學計算機研究所學生機試真題

天勤給出的答案是錯的,沒有考慮到“i      nwdqwd”的情況,應該先删空格,然後在删“in”

這題我的代碼天勤自己的OJ AC不了,九度的可以

1  #include<iostream>
 2 
 3 #include<string>
 4 using namespace std;
 5  
 6      
 7 string low(string str)
 8 {
 9     for(int i=0;i<str.length();i++)
10         if(str[i]<='Z'&&str[i]>='A') str[i]=str[i]+'a'-'A';
11     return str;
12 }
13  
14 int main()
15 {
16     int n=0;
17     string s1,s2;
18     getline(cin,s1);
19     while(getline(cin,s2))
20     {
21          
22        string temp=low(s1);
23         int j=0;
24         while(j<s2.length())
25         {
26             if(s2[j]==' ')
27                 s2=s2.substr(0,j)+s2.substr(j+1,s2.length());
28             else
29                 j++;
30         }
31         j=0;
32         while(j<s2.length())
33         {
34              if(low(s2.substr(j,s1.length()))==s1)
35                 s2=s2.substr(0,j)+s2.substr(j+s1.length(),s2.length());
36              else
37                 j++;
38         }
39         cout<<s2<<endl;
40     }
41     return 0;
42 }
43 /**************************************************************
44     Problem: 1168
45     User: 2009declan
46     Language: C++
47     Result: Accepted
48     Time:0 ms
49     Memory:1520 kb
50 ****************************************************************/      

最長&最短文本分數: 1.5

時間限制:1 秒 記憶體限制:32 兆 特殊判題: 否 送出:92 解決: 43

标簽

  • 字元串處理
  • 字元串長度

題目描述

輸入多行字元串,請按照原文本中的順序輸出其中最短和最長的字元串,如果最短和最長的字元串不止一個,請全部輸出。

輸入格式

輸入包括多行字元串,字元串的長度len,(1<=len<=1000)。

輸出

按照原文本中的順序輸出其中最短和最長的字元串,如果最短和最長的字元串不止一個,請全部輸出。

樣例輸入

hello

she

sorry

he

樣例輸出

he

hello

sorry

提示[+]

*** 提示已隐藏,點選上方 [+] 可顯示 ***

分類

  • 華中科技大學究生複試上機真題
  • 1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 int main()
     5 {
     6 string s1[1000];
     7 int n=0;
     8 while(getline(cin,s1[n]))
     9 {
    10 n++;
    11 }
    12 int max=s1[0].length();
    13 int min=s1[0].length();
    14 for(int i=1;i<n;i++)
    15 {
    16 if(s1[i].length()>max) max=s1[i].length();
    17 if(s1[i].length()<min) min=s1[i].length();
    18 }
    19 for(int i=0;i<n;i++)
    20 {
    21 if(s1[i].length()==min) cout<<s1[i]<<endl;;
    22 }
    23 for(int i=0;i<n;i++)
    24 {
    25 if(s1[i].length()==max) cout<<s1[i]<<endl;;
    26 }
    27 return 0;
    28 }
    29        

首字母大寫分數: 1.5

時間限制:1 秒 記憶體限制:32 兆 特殊判題: 否 送出:95 解決: 48

标簽

  • 字元串處理

題目描述

對一個字元串中的所有單詞,如果單詞的首字母不是大寫字母,則把單詞的首字母變成大寫字母。

在字元串中,單詞之間通過空白符分隔,空白符包括:空格(' ')、制表符('\t')、回車符('\r')、換行符('\n')。

輸入格式

輸入一行:待處理的字元串(長度小于100)。

輸出

可能有多組測試資料,對于每組資料,

輸出一行:轉換後的字元串。

樣例輸入

if so, you already have a google account. you can sign in on the right.

樣例輸出

If So, You Already Have A Google Account. You Can Sign In On The Right.

提示[+]

*** 提示已隐藏,點選上方 [+] 可顯示 ***

分類

  • 北京大學研究所學生複試上機真題
  •  WS  :測試檔案:/test0.out 結果:答案錯誤=======原因======當參考答案輸出:wang Is A String-------時---------你的程式輸出:Wang Is A String=================測試檔案:/sample.out 結果:答案正确 
  •  想不通為什麼會有第一個是小寫的w的情況,估計是OJ錯了
  • 天勤上面的答案沒有考慮到标點符号 
  • 給出自己的代碼
  • 1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 int main()
     5 {
     6 string s;
     7 int n=0;
     8     while(getline(cin,s))
     9 {
    10 if(s[0]>='a'&&s[0]<='z')  s[0]=s[0]-('a'-'A');//先檢查第一個
    11 for(int i=0;i<s.length()-1;i++)
    12 {
    13 if(s[i]<'A'||(s[i]>'Z'&&s[i]<'a')||s[i]>'z')
    14 if(s[i+1]>='a'&&s[i+1]<='z')
    15                       s[i+1]=s[i+1]-('a'-'A');
    16 }
    17 cout<<s<<endl;
    18 }
    19   return 0;
    20 }      

字元串的反碼分數: 1.2

時間限制:1 秒 記憶體限制:32 兆 特殊判題: 否 送出:143 解決: 47

标簽

  • 字元轉換

題目描述

一個二進制數,将其每一位取反,稱之為這個數的反碼。下面我們定義一個字元的反碼。如果這是一個小寫字元,則它和字元'a’的距離與它的反碼和字元'z’ 的距離相同;如果是一個大寫字元,則它和字元'A’的距離與它的反碼和字元'Z’的距離相同;如果不是上面兩種情況,它的反碼就是它自身。

舉幾個例子,'a’的反碼是'z’;'c’的反碼是'x’;'W’的反碼是'D’;'1’的反碼還是'1’;'$'的反碼還是'$'。

一個字元串的反碼定義為其所有字元的反碼。我們的任務就是計算出給定字元串的反碼。

輸入格式

輸入每行都是一個字元串,字元串長度不超過 80 個字元。如果輸入隻有!,表示輸入結束,不需要處理。

輸出

對于輸入的每個字元串,輸出其反碼,每個資料占一行。

樣例輸入

Hello 

JLU-CCST-2011 

!

樣例輸出

Svool 

QOF-XXHG-2011

提示[+]

*** 提示已隐藏,點選上方 [+] 可顯示 ***

分類

  • 吉林大學究生複試上機真題
  • 1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 int main()
     5 {
     6 string s;
     7     while(getline(cin,s))
     8 {
     9 if(s[0]=='!'&&s.length()==1) break;//注意:隻有一個“!”
    10   string s1=s;//目的是複制長度
    11   for(int i=0;i<s.length();i++)
    12   {
    13      if('a'<=s[i]&&s[i]<='z')
    14  s1[i]='z'-(s[i]-'a');
    15  else if('A'<=s[i]&&s[i]<='Z')
    16  s1[i]='Z'-(s[i]-'A');
    17  else s1[i]=s[i];
    18   }
    19   cout<<s1<<endl;
    20 }
    21   return 0;
    22 }      

統計字元分數: 1

時間限制:1 秒 記憶體限制:32 兆 特殊判題: 否 送出:138 解決: 78

标簽

  • 字元串處理
  • 統計字元

題目描述

統計一個給定字元串中指定的字元出現的次數。

輸入格式

測試輸入包含若幹測試用例,每個測試用例包含2行,第1行為一個長度不超過5的字元串,第2行為一個長度不超過80的字元串。注意這裡的字元串包含空格,即空格也可能是要求被統計的字元之一。當讀到'#'時輸入結束,相應的結果不要輸出。

輸出

對每個測試用例,統計第1行中字元串的每個字元在第2行字元串中出現的次數,按如下格式輸出:

c0 n0

c1 n1

c2 n2

... 

其中ci是第1行中第i個字元,ni是ci出現的次數。

樣例輸入

I

THIS IS A TEST

i ng

this is a long test string

#

樣例輸出

I 2

i 3

  5

n 2

g 2

提示[+]

*** 提示已隐藏,點選上方 [+] 可顯示 ***

分類

  • 浙江大學研究所學生複試上機真題
  • 1 #include<iostream>
     2 #include<string>
     3 using namespace std;
     4 int main()
     5 {
     6 string a,b;
     7 while(getline(cin,a)&&(a[0]!='#'))//getline(cin,str)讀取一行
     8 {
     9  getline(cin,b);
    10  int count[128]={0};//ASCII碼有128種
    11  for(int i=0;i<b.length();i++)
    12     count[b[i]]++;
    13   for(int i=0;i<a.length();i++)
    14     cout<<a[i]<<" "<<count[a[i]]<<endl;
    15 }
    16   return 0;
    17 }
    18        

轉載于:https://www.cnblogs.com/xiaoyesoso/p/4271468.html