华为编程样题
华为c编程规范试题答案

华为c编程规范试题答案一、选择题1. 在C语言中,若要声明一个具有静态存储期的变量,应使用哪个关键字?A. staticB. registerC. volatileD. const答案:A2. 下列哪种数据类型在C语言中是不被支持的?A. 布尔型B. 双精度浮点型C. 长整型D. 短整型答案:A3. 在C语言中,函数的返回值类型必须与函数声明时的返回类型一致,除了哪种函数?A. main函数B. void类型函数C. int类型函数D. char类型函数答案:B4. 以下哪个选项是正确的字符串常量表示?A. "Hello, World!"B. 'Hello, World!'C. `Hello, World!`D. ("Hello, World!")答案:A5. 在C语言中,动态内存分配可以使用哪个标准库函数?A. mallocB. freeC. callocD. realloc答案:A6. 下列哪个选项正确地定义了一个指向整型的指针变量?A. int *ptr;B. int ptr;C. *int ptr;D. ptr: int;答案:A7. 在C语言中,switch语句的表达式类型可以是以下哪种类型?A. 整型常量表达式B. 浮点型常量表达式C. 字符型常量表达式D. 所有上述类型答案:A8. 下列哪个选项是C语言中的合法标识符?A. 2nd_valueB. first-valueC. _1st_nameD. value.1答案:C9. 在C语言中,哪个关键字用于定义一个不执行任何操作的宏?A. #defineB. #ifdefC. #ifndefD. #endif答案:A10. 在C语言中,哪个函数用于获取字符串的长度?A. strlenB. strcmpC. strcpyD. strrev答案:A二、填空题1. 在C语言中,使用________关键字可以将一个变量的值限制在一定范围内。
华为编程大赛题目

cin>>src>>des;
cout<<str_str(src,des)<<endl;
rቤተ መጻሕፍቲ ባይዱturn 0;
}
unsigned int str_str(char * src, char *dst)
{
unsigned int loc=0;
返回:如果dst是src的子串 则返回起始位置 如果不是 则返回0
输入:src 指向母串的指针; dst 指向子串的指针
示例
src->akrsd5859 dst->rsd
则返回3
src->Rstsawerst36ds dst->rst
则返回8
src->dfsge dst-> dfsgesa
{
loc_point=src_tmp;
loc=src_tmp-src+1;
src_tmp++;
dst_tmp++;
}else
输入:n 游戏总人数 s 报数的起始编号 m 报数的数值
输出:p 指向长度为n的数组,出圈次序保存在p指向的数组中
示例
n=7 s=2 m=3 出圈次序为:4 7 3 1 6 2 5
n=3 s=1 m=2 出圈次序为:2 1 3
#include<iostream>
*temp=-1;
if(n1==1)
break;
while(m1)
{
if(temp==end)
temp=p;
else
C++笔试题(华为)

1. 写出判断ABCD四个表达式是否正确,若正确,写出经过表达式中a的值(3分)int a = 4;(A) a += (a++); (B) a += (++a); (C) (a++) += a; (D) (++a) += (a++);a = ?答:C错误,左侧不是一个有效变量,不能赋值,可改为(++a) += a;改后答案依次为9,10,10,112. 某32位系统下,C++程序,请计算sizeof的值(5分)char str[] = "ALLEN";char *p = str;int n = 10;请计算(1) sizeof(str) = ?(2) sizeof(p) = ?(3) sizeof(n) = ?(4) void *pp = malloc(100);sizeof(pp) = ?答:(1) 6 (2) 4 (3) 4 (4) 43. 回答下面的问题. (4分)(1) 头文件中的ifndef/define/endif干什么用?答:防止头文件被重复引用。
(2) #include <filename.h>和#include "filename.h"有什么区别?答:前者用来包含开发环境提供的库头文件,后者用来包含自己编写的头文件。
(3) 在C++程序中调用被C编译器编译后的函数,为什么要加extern "C"声明?答:函数和变量被C++编译后在符号库中的名字与C语言的不同,被extern "C"修饰的函数和变量是按照C语言方式编译和连接的。
由于编译后的名字不同,C++程序不能直接调用C函数。
C++提供了一个C连接交换指定符号extern "C"来解决这个问题。
(4) switch()中不允许的数据类型是?答:实型。
4. 回答下面的问题(6分)(1) void GetMemory(char **p, int num){*p = (char *)malloc(num);}void Test(void){char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);}请问运行Test函数会有什么样的结果?答:输出“hello”。
华为笔试题——编程题及答案.doc

问题:输入一个字符串,用指针求出字符串的长度。
答案:ttinclude <stdio. h>int main (){char str[20], *p;int length=0;printf (''Please input a string: 〃);gets(str);p=str;while (*p++)(length++;}printf (''The length of string is %d\n〃,length);return 0;}问题:使用c语言实现字符串中子字符串的替换描述:编写一个字符串替换函数,如函数名为StrReplace(char* strSrc, char* strFind, char* StrReplace), strSrc为原字符串,strFind是待替换的字符串,StrReplace为替换字符串。
举个直观的例子吧,如:“ABCDEFGHIJKLMNOPQRSTUVWXYZ”这个字符串,把其中的“RST”替换为“ggg”这个字符串,结果就变成了:ABCDEFGHIJKLMNOPQgggUVWXYZ答案一:ftinclude <stdio. h>ftinclude <string. h>void StrReplace(char* strSrc, char* strFind, char* StrReplace); ftdefine M 100;void main ()(char s口二〃ABCDEFGHIJKLMNOPQRSTUVWXYZ〃;char sl[]=〃RST〃;char s2[]=〃ggg〃;StrReplace(s, si, s2);printf (/z%s\n,z, s);}void StrReplace(char* strSrc, char* strFind, char* StrReplace){int i=0;int j;int n=strlen (strSrc);int k=strlen(strFind);for (i=0;i<n;i++){if (* (strSrc+i) =*strFind){for(j=0;j<k;j++){if (* (strSrc+i+j) =* (strFind+j))(* (strSrc+i+j)=*(strReplace+j);}else continue;}}}}答案二:ftinclude <stdio. h>ftdefine MAX 100StrReplace(char *s, char *sl, char *s2) {char *p;for(; *s; s++) {for(p = si; *p && *p !二*s; p++);if (*p) *s 二*(p - si + s2);int main ()char s[MAX]; 〃s是原字符串char si [MAX], s2[MAX] ; 〃sl 是要替换的//s2是替换字符串puts (,z Please input the string for s:〃);scanf (〃%s〃,s);puts (,z Please input the string for sl:〃);scanf(〃%s〃,si);puts (/z Please input the string for s2:〃);scanf(〃%s〃,s2);StrReplace(s, si, s2);puts (z,The string of s after displace is:〃);printf (〃%s\n〃,s);return 0:答案三:ftinclude <stdio. h>ftinclude <stdlib. h>ftinclude <string. h>ftdefine M 100void StrReplace(char* strSrc, char* strFind, char* StrReplace);int main ()(char s [] =,Z ABCDEFGHIJKLMNOPQRSTUVWXYZ";char si □二〃RST〃;char s2 □=〃gggg〃;StrReplace(s, si,s2);printf(〃%s\n〃,s);return 0:}void StrReplace(char* strSrc, char* strFind, char* StrReplace)if(^strSrc = *strFind){if(strncmp(strSrc, strFind, strlen(strFind)) = 0 ){int i 二strlen(strFind);int j 二strlen(strReplace);printf (z/i 二%d, j 二%d\n〃,i, j);char *q = strSrc + i;printf(〃*q 二%s\n〃, q);while((*strSrc++ = *strReplace++) != ' \0');printf (/z strSrc - 1 = %s\n,/, strSrc - 1);printf(〃*q = %s\n〃, q);while((*strSrc++ = *q++) != '\0');}else{strSrc++;}}else{strSrc++;}}}问题:编写一个程序实现功能:将字符串” Computer Secience”赋给一个字符数组,然后从第一个字母开始间隔的输出该串,用指针完成。
华为研发编程试题及答案

华为研发编程试题及答案1. 编程题:编写一个函数,实现字符串反转的功能。
答案:```pythondef reverse_string(s):return s[::-1]```2. 编程题:实现一个函数,计算给定整数数组中所有元素的和。
答案:```pythondef sum_of_elements(arr):return sum(arr)```3. 编程题:编写一个程序,判断一个整数是否为素数。
答案:```pythondef is_prime(n):if n <= 1:return Falsefor i in range(2, int(n0.5) + 1):if n % i == 0:return Falsereturn True```4. 编程题:实现一个函数,用于计算斐波那契数列的第n项。
答案:```pythondef fibonacci(n):if n <= 1:return na, b = 0, 1for _ in range(2, n + 1):a, b = b, a + breturn b```5. 编程题:编写一个函数,实现二分查找算法。
答案:```pythondef binary_search(arr, target):low, high = 0, len(arr) - 1while low <= high:mid = (low + high) // 2if arr[mid] < target:low = mid + 1elif arr[mid] > target:high = mid - 1else:return midreturn -1```6. 编程题:实现一个函数,用于检测一个链表是否为回文结构。
答案:```pythonclass ListNode:def __init__(self, val=0, next=None):self.val = valself.next = nextdef is_palindrome(head):if not head or not head.next:return Trueslow, fast = head, headwhile fast and fast.next:slow = slow.nextfast = fast.next.nextprev, curr = None, slowwhile curr:next_temp = curr.nextcurr.next = prevprev = currcurr = next_templeft, right = head, prevwhile left and right:if left.val != right.val:return Falseleft = left.nextright = right.nextreturn True```7. 编程题:编写一个函数,实现冒泡排序算法。
华为JAVA编程规范试题

华为JAVA编程规范试题JAVA编程规范试题一、判断题(每题2分,共28分)1、if, for, do, while, case, switch, default 等语句自占一行,且if, for,do, while, switch, case等语句的执行语句无论多少都要加括号{}。
2、包的注释内容要求包括:简述本包的作用、详细描述本包的内容、产品模块名称和版本、公司版权、生成日期等。
3、类注释部分,描述部分说明该类或者接口的功能、作用、使用方法和注意事项,每次修改后增加作者、新版本号和当天的日期,@since 表示从那个版本开始就有这个类或者接口,@deprecated 表示不建议使用该类或者接口。
4、对于方法内部用throw语句抛出的异常,必须在方法的注释中标明;对于所调用的其他方法所抛出的异常,在注释中要求说明所有的异常;对于非RuntimeException,即throws子句声明会抛出的异常,必须在方法的注释中标明。
5、类名和接口使用完整的英文单词描述,每个英文单词的首字母使用大写、其余字母使用小写的大小写混合法。
6、com.huawei.四级部门名称.项目名称,符合包命名规范。
7、不能用异常来做一般流程处理的方式,不要过多地使用异常,异常的处理效率比条件分支低,而且异常的跳转流程难以预测。
8、划分类的时候,应该尽量把逻辑处理、数据和显示分离,实现类功能的多样化。
9、一个方法不应抛出太多类型的异常,如果程序中需要分类处理异常,则将异常根据分类组织成继承关系。
10、switch 语句中的case 关键字要和后面的常量保持一个空格;如果有特殊的需要要在switch语句中定义case以外的标签,需要在注释中说明。
11、没有被覆盖的友好方法和没有子类的友好类应该定义成final。
12、简单的类可以通过名字比较两个对象的类,推荐使用getClass()或者instanceof()。
13、不要调用 Thread 类的 resume(), suspend(),sleep(), stop() 方法。
华为编程大赛

华为编程大赛一、单选题(每题1分,共10题)1、下列那种不是任务间通讯的方式____A)信号量B)消息队列C)共享内存D)中断2、以下叙述中不正确的是____A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量在本函数范围内有效(复合语句指函数中的成对括号构成的代码)3、若整型变量a的值为50,则c语言表达式a>>2的值为____A)50B) 25C) 12.5D) 124、下面方法中,哪一个不能很好解决死锁问题?____A) 给每一个进程不同的优先级,并按照优先级的大小决定在资源队列中的顺序。
B) 让进程开始运行时获得全部的资源,在不能获得全部资源时重新启动。
C) 给资源编号,并要求进程按照编号的顺序申请资源。
D) 提供超时机制,在进程进入资源等待后一段随机时间内重起进程。
5、下面的程序是对二叉树的前序遍历,请写出下面空格中的语句____其中,Visit函数表示访问节点数据。
void PreOrder(BinaryTreeNode *t){// 对* t进行前序遍历if (t){(_1_);(_2_);(_3_);}}A) PreOrder(t->LeftChild) Visit(t) PreOrder(t->RightChild)B) PreOrder(t->LeftChild) PreOrder(t->RightChild) Visit(t)C) Visit(t) PreOrder(t->RightChild) PreOrder(t->LeftChild)D) Visit(t) PreOrder(t->LeftChild) PreOrder(t->RightChild)6、已知int a[]={10,9,8,7,6}; int *p = a;则(*(p+1))*(p+2)[2]的值是____A)72B)80C)54D)有语法错误7、下面关于new 和delete操作符的说法,哪个是不正确的____A)使用new操作符,可以动态分配全局堆中的内存资源B)若p的类型已由A*强制转换为void *,那么执行语句delete p;时,类A的析构函数不会被调用C)new和delete通常成对地使用D)执行语句A * p=new A[100];时,类A的构造函数只会被调用1次8、如下代码,正确的是____class CExample{public:static void Func( void* pobj );private:char m_cTest;};A) void CExamle::Func( void* pobj ){m_cTest = ( char )0;}B) 在Func内部不能访问类的私有成员m_cTest;C) void CExample::Func( void* pobj ){CExample *pThis;pThis = dynamic_cast< CExample* >( pobj );ASSERT( NULL != pThis );pThis->m_cTest = ( char )0;}D) void CExample::Func( void* pobj ){CExample::m_cTest = ( char )0;}9、对于下面的类CA,在32位计算机、4字节对齐的情况下,sizeof(CA) = ____class CA{public:CA();virtual ~CA();private:int m_iTime;public:int GetTime();int SetTime(int iTime);};A)16B)12C)8D)410、对于下面的代码,描述正确的是____ class A{public:virtual void test(); };class B: public A {public:void test(); ...};class C: public B {public:void test(); ...};A) B类的test函数是虚函数,而C类的也是B) B类的test函数不是虚函数,C类的是C) B类的test函数是虚函数,而C类的不是D) C类的test函数不是虚函数二、多选题(每题2分,共10题,少选可得1分)11、关于变量定义,下列说法正确的有____A)公共变量是增大模块间耦合的原因之一,故应减少没必要的公共变量以降低模块间的耦合度B)命名中若使用特殊约定或缩写,则要有注释说明C)变量名的命名要清晰、明了,有明确含义D)除非必要,不要用数字或较奇怪的字符来定义标识符12、请找出以下程序中的错误,不考虑命名规范和排版的问题____long strlen(char *p ){ASSERT(p);long i = 0;while (*p){i++;p++;}return i;}ShowErrMsg(char *msg){if (msg == NULL) return;char *pBuf = (char *)malloc(256); -------Bif (pBuf == NULL) return;if ( strlen(msg) > 256 ){strncpy(pBuf, msg, 256);pBuf[256] = ‘\0’;}else{strcpy( pBuf, msg); -------C}printf( "No. %d: This message is: %s\n", nCount, pBuf ); nCount++;}13、下列代码中对const关键字的使用是正确并有意义的____ class SomeClass{private:int m_nValue;char* m_pszName;public:SomeClass(int id);int GetValue() const; //---------------- Avoid SetValue(const int value); //------ Bconst char* GetName(); //---------------- Cvoid SetName(const char* pszName); //--- Dvoid DoSomething(char* const p); //------ E}14、多任务系统中,任务所具有的基本状态有____A)就绪B)执行C)阻塞D)挂起15、下列说明哪些是正确的____A)一个类必须至少提供一个构造函数B)缺省构造函数是指不用指定任何实参就能被调用的构造函数,这并不意味着它不能接受实参C)父类的构造函数肯定在子类的构造函数之前被调用D)如果一个类不显式地提供缺省构造函数则编译器会自动生成一个以初始化其数据成员E)子类的析构函数中要调用父类的析构函数以确保父类的成员被释放F)构造和析构函数中不应该调用虚函数16、在一个老版本代码中已经声明了myfunc函数:int myfunc(int a,double b),小李在开发新版本时增加了如下几个函数声明,请问哪些不是对老版本函数的重载声明____A)int myfunc(int c, double d)B)int myfunc(int a,double b=0.5)C)double myfunc(int , double )D)int myfunc(double b,int a)17、类B的析构函数不为virtual,类D是类B的子类,并且是public继承的,B和D都定义了缺省的构造函数,下面正确代码段有____A)B* pb = new B;delete pb;B)D* pd = new D;delete pd;C)B* pb = new D;delete pb;D)D d;B* pb = &d18、假定类CA的声明如下, 下面哪些语句声明了a是CA的对象____class CA{public:CA ();CA (int iValue);... ...};A)CA a;B)CA a();C)CA a(100);D)CA a = 100;19、下面关于指针和引用的说法正确的是____A)指针变量存放的是内存地址,并且可以置为0B)定义引用变量时,必须同时指明具体被引用的对象或变量C)使用取地址操作符,可以取得指针变量自身的地址,但取不到引用变量自身的地址D)类中的数据成员可以是指针变量,但不能是引用变量20、下列代码中正确的有____A)char* p = malloc(100); free(p);B)char* p = malloc(100); delete p;C)char* p = new char[100]; delete p;D)char* p = new char[100]; delete[] p;E)char p[100]; delete[] p;F)char p[100]; delete p[100];三、编程题(共2题,第1题40分,第2题30分。
华为软件编程题:简单的四则运算

华为软件编程题:简单的四则运算 1/* calculate.cpp2 * 问题描述:3 * 输⼊⼀个只包含个位数字的简单四则运算表达式字符串,4 * 计算该表达式的值5 * 注:6 * 1、表达式只含 +, -, *, / 四则运算符,不含括号7 * 2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况8 * 3、要考虑加减乘除按通常四则运算规定的计算优先级9 * 4、除法⽤整数除法,即仅保留除法运算结果的整数部分。
10 * ⽐如8/3=2。
输⼊表达式保证⽆0作为除数情况发⽣11 * 5、输⼊字符串⼀定是符合题意合法的表达式,12 * 其中只包括数字字符和四则运算符字符,13 * 除此之外不含其它任何字符,不会出现计算溢出情况14 * 要求实现函数:int calculate(int len,char *expStr)15 * 【输⼊】16 * int len: 字符串长度;17 * char *expStr: 表达式字符串;18 * 【输出】⽆19 * 【返回】20 * 计算结果21 * ⽰例22 * 1)输⼊:char *expStr = “1+4*5-8/3”23 * 函数返回:1924 * 2)输⼊:char *expStr = “8/3*3”25 * 函数返回:626*/2728 #include <stdio.h>29 #include <stdlib.h>30 #include <string.h>31 #include <stack>3233//判断运算符的优先级函数34int Precede(char a, char b)35 {36switch (a)37 {38case'*':39case'/':40if ((b == '+') || (b == '-'))41 {42return1; //a的优先级⾼于b43 }44else45 {46return0; //a的优先级等于b47 }48case'+':49case'-':50if ((b == '*') || (b == '/'))51 {52return -1; //a的优先级低于b53 }54else55 {56return0;57 }58default:59 printf("运算符错误!\n");60break;61 }62 }6364int Operate(int j, int k, char operater)65 {66//int temp = 0;67switch (operater)68 {69case'+':70return k + j;71//break;72case'-':73return k - j;74//break;75case'*':76return k * j;77//break;78case'/':79//temp = k / j;81//break;82default:83 printf("运算错误!\n");84break;85 }86 }8788int calculate(int len, char *expStr)89 {90//表达式异常处理,注意len <= 0要加括号91if ((len <= 0 ) || (expStr == NULL))92 {93 printf("表达式为空!\n");94 }9596int i = 0, j = 0, k = 0;97 std::stack<int> date;98 std::stack<char> operate;99100while (i < len)101 {102if ((expStr[i] >= '0') && (expStr[i] <= '9'))103 {104 date.push(expStr[i] - '0');105 i++;106 }107else if ((expStr[i] == '+') || (expStr[i] == '-')108 || expStr[i] == '*' || expStr[i] == '/')109 {110if (operate.empty())111 {112 operate.push(expStr[i]);113 i++;114 }115else116 {117//与栈顶运算符判断优先级118switch (Precede(expStr[i], operate.top())) 119 {120case0:121case -1: //栈顶运算符优先级⾼122 j = date.top();123 date.pop();124 k = date.top();125 date.pop();126//date.push(Operate(j, k , expStr[i])); 127 date.push(Operate(j, k , operate.top())); 128 operate.pop();129//i++;130break;131//case 0:132case1: //栈运算符顶优先级低133 operate.push(expStr[i]);134 i++;135break;136default:137 printf("优先级判断错误!\n");138break;139 }140 }141 }142else143 {144 printf("表达式⽆法识别!\n");145break;146 }147 }148149while (!operate.empty())150 {151 j = date.top();152 date.pop();153 k = date.top();154 date.pop();155 date.push(Operate(j, k , operate.top()));156 operate.pop();157 }158159return date.top();160 }161162int main()163 {165int i= 0, input_flag = 0;166167//为了提⾼程序的鲁棒性,写了下⾯⼀段循环168//此处关键是flushall()的使⽤,如果不使⽤169//由于键盘输⼊缓存的存在使得程序陷⼊死循环170//关于flush()参见我的下⼀篇博客171while (!input_flag)172 {173 printf("请输⼊表达式的长度:");174 input_flag = scanf("%d", &len);175if (!input_flag)176 {177 printf("输⼊有误,仅可输⼊数字!\n");178//flushall();179 }180 flushall();181 }182183char *expStr = (char *)malloc(len * sizeof(char));184 input_flag = 0;185while (!input_flag)186 {187 printf("请输⼊表达式:");188for (i = 0; i < len; i++)189 {190 input_flag = scanf("%c", &expStr[i]);191//scanf("%c", &expStr[i]);192/*if ((i < len) && (expStr[i] == '\n'))193 {194 printf("长度不够,请重新输⼊:");195 i = 0;196 }*/197if (!input_flag)198 {199 printf("表达式输⼊有误!\n");200 flushall();201break;202 }203 }204 }205206 printf("表达式的计算结果为:%d\n", calculate(len, expStr)); 207return0;208 }209210//#include <iostream>211//212//using namespace std;213//214//int calculate(int len, char *expStr)215//{216////定义操作符栈217// struct218// {219// char opdate[200];220// int top;221// }opstack;222//223////定义栈操作符224// opstack.top = -1;225// int i = 0; //遍历字符串的下标226// int t = 0; //当前后缀表达式的长度227// char ch = expStr[i];228// while (ch != '\0')229// {230// switch (ch)231// {232// case '+':233// case '-':234// while (opstack.top != -1)235// {236// expStr[t] = opstack.opdate[opstack.top];237// opstack.top--;238// t++;239// }240// opstack.top++;241// opstack.opdate[opstack.top] = ch;242// break;243// case '*':244// case '/':245// while (opstack.top != -1 &&246// (opstack.opdate[opstack.top] == '*' ||247// opstack.opdate[opstack.top] == '/'))249// expStr[t] = opstack.opdate[opstack.top]; 250// opstack.top--;251// t++;252// }253// opstack.top++;254// opstack.opdate[opstack.top] = ch;255// break;256// default:257// expStr[t] = ch;258// t++;259// break;260// }261// i++;262// ch = expStr[i];263// }264//265// while (opstack.top != -1) //将栈中所有剩余的运算符出栈266// {267// expStr[t] = opstack.opdate[opstack.top];268// opstack.top--;269// t++;270// }271// expStr[t] = '\0';272//273// struct274// {275// int numeric[200];276// int top;277// }date;278// date.top = -1;279// i = 0;280// ch = expStr[i];281// while (ch != '\0')282// {283// if (ch >= '0' && ch <= '9')284// {285// date.top++;286// date.numeric[date.top] = ch - '0';287// }288// else if ('+' == ch)289// {290// int tmp = date.numeric[date.top - 1] +291// date.numeric[date.top];292// date.top--;293// date.numeric[date.top] = tmp;294// }295// else if ('-' == ch)296// {297// int tmp = date.numeric[date.top - 1] -298// date.numeric[date.top];299// date.top--;300// date.numeric[date.top] = tmp;301// }302// else if ('*' == ch)303// {304// int tmp = date.numeric[date.top - 1] *305// date.numeric[date.top];306// date.top--;307// date.numeric[date.top] = tmp;308// }309// else if ('/' == ch)310// {311// if (date.numeric[date.top] == 0)312// {313// printf("cannot be zero of the divide\n");314// exit(1);315// }316// int tmp = date.numeric[date.top - 1] /317// date.numeric[date.top];318// date.top--;319// date.numeric[date.top] = tmp;320// }321// i++;322// ch = expStr[i];323// }324// return date.numeric[date.top];325//}326//327//void main()328//{329// char expStr[] = "9/3*5";330// printf("%s\n", expStr);331// int result = calculate(strlen(expStr), expStr);333//} 334。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
树判断
Time Limit:3000MS Memory Limit:65536K
(输入:1.in )
树是一种重要的非线性数据结构,直观地看,它是数据元素(在树中称为结点)按分支关系组织起来的结构,很象自然界中的树那样。
树(tree )是包含n (n>0)个结点的有穷集合,其中: (1)每个元素称为结点(node );
(
2)有一个特定的结点被称为根结点或树根(root
)。
(3)除根结点之外的其余数据元素被分为m (m≥0)个互不相交的结合T1,T2,……Tm -1,其中每一个集合Ti (1<=i<=m )本身也是一棵树,被称作原树的子树(subtree )。
树形结构示例如下,圆表示节点,节点之间的连线表示边,下图中前面的两个是树形结构,第3个不是。
接下来你将得到图的描述,然后需要你通过程序验证该图是否是树形结构。
输入
输入包含多个测试样例,每个样例使用一对数字表示两个有边的节点,如果两个节点为0表示样例结束。
-1 -1 表示全部测试样例结束
Output
每个测试样例输出 "Case k is a tree." 或者 "Case k is not a tree.", k对应与测试样例的序号 (1).
Sample Input
6 8
5 3
5 2
6 4
5 6
0 0
8 1
7 3
6 2
8 9
7 5
7 4
7 8
7 6
0 0
3 8
6 8
6 4
5 3
5 6
5 2
0 0
-1 -1 Sample Output
Case 1 is a tree. Case 2 is a tree. Case 3 is not a tree.
荒岛求生
Time Limit:3000MS Memory Limit:65536K
(输入:2.in )
有五个人带着一只猴子在海上漫无目的地航行,突然遇到了狂风暴雨。
他们的船沉了,幸运的是船是在一个荒岛附近沉的。
而且这个岛上到处都是椰子。
第一天的时候这几个人都忙着采椰子,并且把椰子堆了一大堆,放在营地的旁边。
那天夜里,其中一人睡不着,他想天亮的时候他们几个就会因为椰子而打起来的。
于是他悄悄起身,来到椰子堆旁,开始数椰子,除了余下一个外,其余的正好可以平均分成五份。
这时他感觉有什么在扯他的衣服,他认出了是猴子。
于是他就把多余的一个分给了猴子,然后把他那份埋了起来就回去睡觉了。
第二个人也是带着同样的想法起来到了椰子旁。
在他分椰子的时候也余下了一个椰子,也把那个椰子给了猴子,然后埋起自己的那份回去睡觉了。
一个接着一个,其余的人都如法炮制。
早上,他们把剩余的椰子平均分成五份,这次没有剩余。
上述故事的问题是“他们最初得到了多少个椰子?”,问题答案是无限多个,最小的答案是3121,但这不是我们要的问题。
我们的问题是假设知道了椰子的数目,如果上述故事同样能够发生的话,那么这个岛上最多有几个人和一个猴子。
Input
输入包括一系列的整数表示采集到的椰子,-1表示测试样例结束。
Output
针对每一个测试数字,给出故事能够发生的最多的人数,并输出相应的信息如样例输出。
Sample Input
25
30
3121
-1Sample Output
25 coconuts, 3 persons and 1 monkey 30 coconuts, no solution
3121 coconuts, 5 persons and 1 monkey
又见皇后
Time Limit:3000MS Memory Limit:65536K
(输入:3.in )
Description
国际象棋中,皇后能攻击同一横线、同一竖线、同一斜线(45度)的敌人。
众所周知,有一个非常著名的算法问题,是求在一个n×n的国际象棋棋盘中最多能摆放多少个皇后,使其不能相互攻击。
今天我们暂且不要让问题如此理想化。
假设棋盘上有一些障碍物,皇后不能摆在障碍物上,同时也不能穿过障碍物攻击别人。
在此条件之下,棋盘上最多又能放多少个皇后?
图中黑色方块表示障碍物,圆点表示皇后
图2是一种最优摆法;图4、图5属于违规摆法
Input
输入包含多组数据。
每组数据的第一行是一个整数n(1≤n≤8),表示棋盘的边长。
之后的n行将描述棋盘,其中’X’表示该单元格有障碍物,’.’则表示没有。
n=0表示输入结束。
Output
对于每组数据,请输出一个整数表示最多能在棋盘上放几个皇后,使它们相互不能攻击。
每个答案占一行。
Sample Input Sample Output
4
.X.. ...X XXX. ..X. 2
XX
.X
3
.X. X.X .X. 0 4 1 2
编辑距离
Time Limit:1000MS Memory Limit:65536K
(输入:4.in )
Description
俄罗斯科学家Vladimir Levenshtein在1965年提出了编辑距离概念。
编辑距离,又称Levenshtein距离,是指两个字符串之间,由一个转成另一个所需的最少编辑操作次数。
许可的三种编辑操作包括插入一个字符、删除一个字符、将一个字符替换成另一个字符。
至今,编辑距离一直在相似句子检索的领域中发挥着不可忽视的作用。
我们不妨来设计一个程序,计算两个字符串的编辑距离。
Input
输入数据的第一行是一个正整数,表示一共有几组数据。
每组数据有两行,每行一个字符串。
* 每个字符串长度不超过1000
* 字符串中只含小写英文字母
Output
对于每组数据,请输出一个整数表示两个字符串的编辑距离。
每个答案占一行。
Sample Input Sample Output
2
david vivian abc aabbcc 4 3
迷宫与宝藏
Time Limit:2000MS Memory Limit:65536K
(输入:5.in )
Description
机器人要在一个矩形迷宫里行动(不能原地停留,只能走向上/下/左/右),每移动一格花费1个单位时间。
迷宫有以下几种元素:
【*】机器人的起点
【#】墙。
机器人不能走过这些格子
【.】平地。
机器人可以在上面自由行走
【0-9】宝藏。
当机器人走到此处会立刻获得该数字相应的宝藏,宝藏不会消失,可以反复获取(但不能停留)
若机器人要恰好获得总和为x的宝藏,它最少需要多少时间?
Input
第一行输入任务数量T, 接下来有T个任务
每块第一行有两个整数, n(0 < 100), m(0 < 100), 表示迷宫有n+1行和m+1列
接下来n行输入迷宫
最后一行输入你要收集的宝藏的总价值x(x ≤100)
Output
对于每个任务,输出最少花费的时间,如果完成不了该任务则输出-1
Sample Input Sample Output
3
2 3 1.#2 #..# *.#. 8 -1 6
3
2 3 2.#2 #..# *.#. 5
2 3 2.#2 #.3# *.#. 5。