1. 程式人生 > >電話號碼翻譯(華為上機試題8_31_3)

電話號碼翻譯(華為上機試題8_31_3)

下面的程式碼借鑑了華為上機試題中所給出原始碼的一點思路:

在貼程式碼前先看下這段不完善的程式碼:

..........

int i = 0;

char temp[100];

char ch;

while(ch != '\n')
{

scanf("%s%c",temp,&ch);
i++;
}

當從鍵盤輸入one two three['  five按下回車鍵後,通過除錯(黑體字為斷點)可以發現

i = 0  ;temp = one,ch = ' '

i = 1  ;temp = two, ch = ' '

i = 2  ;temp = three['  , ch = ' ' 

i = 3  ;temp = five, ch = ' \n'

這樣輸入的目地就是為了順利的取出空格作為分隔符所產生的字串。

注意:scanf("%s%c",temp,&ch)與scanf("%s,%c",temp,&ch)的區別。

...........

/*

 * Author :zhuang_569 
 * Time : 2014/9/9  
 * description : 翻譯電話號碼
 * 題目:
 *  將電話號碼one two ...nine zero翻譯成1 2 9 0
 *  例如輸入:one two three輸出:123
 *  輸入:one two double Two輸出:1222
 *  輸入:1 two 2輸出:ERROR
 *  輸入:double double two輸出:ERROR
*/


#include "iostream"
#include "string"
using namespace std;




typedef  unsigned short int  INT16U;
/**************函式宣告*******************/
void handle(void);


/**************全域性變數宣告*******************/
const char code[11][7] = {"zero","one","two","three","four","five","six","seven","eight","nine","double"};




char temp[100];
char end_sign= ' ';
int main(void)
{
handle();

return 0;
}




void handle(void)
{

int i = 0;
int double_flag = 0;//double符號的標誌位

//當出現兩個double當出錯處理
int back_up_val = 255;
intindex = 0;//統計輸入的待翻譯的電話號碼的數量


int decode[100];//存放翻譯後的電話號碼
int num = 0; //翻譯後的電話號碼數量 


int match_flag = 0;//輸入的待翻譯的電話號碼是否正確標誌位


cout<<"請輸入待翻譯的電話號碼:";
while(end_sign!= '\n')
{

//輸入一串字元用空分割可以得到被分割的字元
//輸入一串字元one two three.temp可以分別等於one two three 
scanf("%s%c",&temp,&end_sign);
index++;

for(i=0; i<11;i++)
{

if((strcmp(temp,code[i])==0))
{
match_flag = 1;//輸入匹配

if(i < 10)
{
if(double_flag == 1)
{
double_flag = 0;
decode[num++] = i;
decode[num++] = i;
}
else
{
decode[num++] = i;
}
}
else if(i == 10)
{
double_flag = 1;
if((index-back_up_val) == 1)
{
cout<<"ERROR";
return;
}


back_up_val = index;
}


break; //匹配後就跳出迴圈,節約時間
}
}


if(match_flag == 1)
{
match_flag = 0;
}
else
{
cout<<"ERROR";
return;
}
}


if(double_flag == 1)//輸入最後帶翻譯的電話號碼為double
{
cout<<"ERROR";
return;
}


cout<<"翻譯後的電話號碼是:";
//輸出譯碼後的電話號碼
for(i=0; i<num; i++)
{
cout<<decode[i];
}


cout<<endl;
}

測試結果:


相關推薦

電話號碼翻譯上機試題8_31_3

下面的程式碼借鑑了華為上機試題中所給出原始碼的一點思路: 在貼程式碼前先看下這段不完善的程式碼: .......... int i = 0; char temp[100]; char ch; while(ch != '\n') { scanf("%s%c",temp,&a

上機試題java找出一個字串中出現次數最多的字元

 Java求字串中出現次數最多的字元,如String Str = "aaabbcddddee";那麼輸出:d 4 ;若String Str = "aaabbcddddeexxxxxx";那麼輸出:x 6 import java.util.*; import java.uti

整型陣列處理演算法十三求出用1,2,5這三個數不同個數組合的和100的組合個數校園招聘題

寫一個程式, 要求功能:求出用1,2,5這三個數不同個數組合的和為100的組合個數。 如:100個1是一個組合,5個1加19個5是一個組合。。。。 請用C++語言寫。        下面用2中方法來

《Linux作業系統-系統移植》第8章 USB-4G/LTE移植 -第1節 USB-4G移植CE392u­924G移植

1.3 PPP編譯 1.獲取原始碼 PPP官網下載:https://download.samba.org/pub/ppp/ 下載解壓ppp-2.4.7.tar.gz原始碼,存放在/home/farsig

計算字串最後一個單詞的長度,單詞以空格隔開。線上程式設計題目

import java.util.Scanner; import java.lang.String; public class Main {     public static void main(String[] args){       Scanner sc = new

《Linux作業系統-系統移植》第8章 USB-4G/LTE移植 -第1節 USB-4G移植 FE392u­924G移植

1.6啟動撥號指令碼 $mkdir shell_script $cd /shell_script $ vi usb.sh 輸入以下內容,然後儲存退出。 usb_modeswitch -W -c /etc

試題練習

目錄 1、選秀節目打分 2、奇偶排序 3、作業系統任務排程問題。 4. 列印陣列中最大的2個數 5.迴文數字判斷。  6.中級題:亮著電燈的盞數   7.高階題:地鐵換乘 8.判斷if語句括號是否合法 9. 列印 楊輝三角形

試題8分鐘寫出程式碼 有兩個陣列a,b,大小都n,陣列元素的值任意,無序; 要求:通過交換a,b中的元素,使陣列a元素的和與陣列b元素的和之間的差最小

先上程式碼 java程式碼: public class MinDiff { public static void main(String[] args){ int[] aa={2,5,4,3,1,0}; int[] bb={7,9,8,10,6,11}

牛客試題刷題筆記

馬上華為提前批開始了,嚇得我趕緊上牛客網刷題,記錄如下: 所有程式碼都在github 1.字串最後一個單詞的長度 一段英文字串中最後一個單詞的長度。 題目比較簡單,做法有很多: 比如, 可以放到stringstream裡面split,拿到最後一個單詞

試題--高鐵換乘Floyed演算法

題目: 已知2條地鐵線路,其中A為環線,B為東西向線路,線路都是雙向的。經過的站點名分別如下,兩條線交叉的換乘點用T1、T2表示。編寫程式,任意輸入兩個站點名稱,輸出乘坐地鐵最少需要經過的車站數量(含

上機試題之約瑟夫環

/* 題目描述 有一個數組a[N]順序存放0~N-1,要求每隔兩個數刪掉一個數,到末尾時迴圈至開頭繼續進行,求最後一個被刪掉的數的原始下標位置。以8個數(N=7)為例:{0,1,2,3,4,5,6,

上機考試注意事項及程式設計技巧精品

華為機試主要考察對程式語言的運用和簡單的演算法設計,雖說真金不怕火煉,但一些細小的問題可能會浪費很多時間,這在機試過程中是致命的,因此總結一下在機試中的一些注意事項。 1、時間安排。華為機試一共兩個小時,題量為三道題,如果將難度按照星等來劃分的話大體可分為兩種模式,第一種為一星或二星、三星、五星,第二種為二

試題 最高分是多少

老師想知道從某某同學當中,分數最高的是多少,現在請你程式設計模擬老師的詢問。當然,老師有時候需要更新某位同學的成績. 輸入描述: 輸入包括多組測試資料。 每組輸入第一行是兩個正整數N和M(0 <

試題2016 簡單錯誤記錄

一:簡單錯誤記錄 開發一個簡單錯誤記錄功能小模組,能夠記錄出錯的程式碼所在的檔名稱和行號。 處理: 1.記錄最多8條錯誤記錄,對相同的錯誤記錄(即檔名稱和行號完全匹配)只記錄一條,錯誤計數增加;(檔案所在的目錄不同,檔名和行號相同也要合併) 2.超過16個字元的檔名稱,只

試題——約瑟夫問題的C++簡單實現迴圈連結串列

/*     author:jiangxin     Blog:http://blog.csdn.net/jiangxinnju     Function:method of Josephus question */ #include <iostream> us

2015 年 9月份試題 2幸運號

// HUAWEI_2.cpp : 定義控制檯應用程式的入口點。 ////找幸運號,petr是否存在,是否是幸運號,詳細描述見華為機試題(2)幸運號描述 #include"stdafx.h" #include<iostream> #include<asse

刪數字 -- 2016試題

for delet pub count 初始化 現在 || lin 答案 題目: 有一個整型數組a[n]順序存放0 ~ n-1,要求每隔兩個數刪掉一個數,到末尾時循環至開頭繼續進行,求最後一個被刪掉的數的原始下標位置。 以 8 個數(n=8)為例:{0,1,2,3,4,5,

個人作業——軟件產品案例分析軟件開發雲

開發人員 顯示 主界面 lock log 很多 第一次 印象 添加 個人作業——軟件產品案例分析(華為軟件開發雲) 第一部分調研、評測 一、評測 1.第一次使用體驗: 功能多,主界面很簡潔。 對於新手而言,第一次接觸華為軟件開發雲,沒有註冊登錄的話,就很難找到自己

進行hybrid鏈路配置交換機實驗

nal 1.4 日誌 erl def mar edit dex 運維 網絡運維 hybrid 實驗報告 姓名: 任永輝 班

如何實現私有地址訪問外網

src perm 分享 配置 5.0 其中 rip oss 9.png 操作步驟及思路:一.分別給pc1,pc2配上ip地址,子網掩碼,網關#pc1ip:192.168.1.1子網掩碼:255.255.255.0網關:192.168.1.254pc2ip:192.168.1