- gitcloud
-
s[1][1] = "d",这个应该没问题吧?第二个字符串的第二个字符。
*++p+2 这个比较有趣,p是一个char*指针,指向字符数组首地址,&s[0][0]。
首先++的优先级更高执行++p得到的是&s[0][1],然后*运算符解引用,得到s[0][1]
s[0][1]的字符是"b",然后"b"+2,得到的就是"d"的ASCII码。
- 余辉
-
首先s[1][1]中存储的是字符‘d"
++p, 这时p指向了字母b的位置,*++p就代表了字母b,字母b+2就是字母d
请指出正确的表达式是()。
请指出正确的表达式是()。 A.byte = 128;B.Boolean = null;C.long l = 0xfffL;D.double = 0.9239d;正确答案:long l = 0xfffL;2023-07-01 09:40:301
按指出正确的表达式A. byte=128; B. Boolean=nullC. long l=0xfffLD. double=0.9239d;;
A2023-07-01 09:40:425
表示正确的C语言表达式
显然选b呀。(注意:是!不能!正确表示数学式子x/yz的c语言表达式是)这不狠明显么:x除以y再乘以z乘法除法运算级别是一样的,所以从左向右运算2023-07-01 09:41:012
正确的c语言表达式
B正确 (A)int(15.8%5) 错误,%是整数运算,并且int()是c++语法,c语言没有这样的强制转换方式 (B)x=y+z+5,++y 正确 (C)x=25%5.0 错误,%是整数运算 (D)x=y*5=x+z y*5是个右值,不可对其赋值2023-07-01 09:41:171
下面计算结果表达式正确的是( )AN=2.152=4.6225BN=2.152=4.622CN=2?
正确的表达式应该是选项 C,即 N = 2.152 = 4.62。这是因为题目中给出了 N=2.152,要求保留两位小数,因此在四舍五入时应该保留到第二位小数,而第三位小数是四舍五入后舍去的,而不是四舍五入后进位的,因此答案应该是 N = 2.152 = 4.62。2023-07-01 09:41:241
java选择题
nafen2023-07-01 09:41:334
C语言:已有声明int x=5,y;float z=2;,则下列表达式正确的是
A . z不能是小数2.0B . y=-x 等价于y=y-x 。y是多少呢,还不知道。C . =左边是变量 不能是这种x/2 .2023-07-01 09:41:423
指出正确的表达式
C2023-07-01 09:41:512
下列表达式中正确的是( )。
【答案】:D本题考查Java中的运算符。“++”和“--”都是-元算术运算符,主要用于自加和自减,在Java中不允许对表达式进行这样的运算,选项B和选项C都是错误的,更不允许对数字进行这样的运算,选项A也错误,只有选项D正确。2023-07-01 09:42:131
下面的表达式哪个是正确的
(s!=null)&&(s.length>0)?s.length():0;这是一个三目运算符表达式(s!=null)&&(s.length>0)为false;所以i=0;2023-07-01 09:43:004
下面的表达式哪个是正确的?
本题应该选A,详细答案还是参考资料。2023-07-01 09:43:124
VB中下列逻辑表达式书写正确的是?
B C D正确,A错2023-07-01 09:43:232
3.指出正确的表达式
回答你的问题在上面的vfp表达式中,不正确的是(c)解释:日期型数据的运算"+"日期与数字相加,表示天数相加,计算结果为新的日期"-"日期与数字相减,表示天数相减,计算结果为新的日期在vfp表达式中,日期与日期可以相减,表示天数相减,计算结果为相差的天数但日期与日期是不可以用”+“相加的。觉得好请采纳谢谢!2023-07-01 09:43:302
判断c语言表达式是否正确
一楼正解2023-07-01 09:43:445
以下条件表达式正确的是( ) A. 1<x<2 B. x><1 C. x<>1 D. x≤1
条件表达式由条件运算符构成,并常用条件表达式构成一个赋值语句,基本的条件表达式条件表达式由“>、>=、<、<>、<=、=”等组成, 故选:C.2023-07-01 09:43:591
JAVA 17.下面的表达式中正确的是( A )
D项 编译都不能通过咧小弟试了一下 它报语法错误:标记"+",应为"++"2023-07-01 09:44:085
C语言表达式正确的是
选择D选择D选择D选择D选择D选择D选择D选择D选择D选择D选择D选择D选择D2023-07-01 09:44:312
下列表达式中正确的有()。 A. (F/P,i,n)(P/F,i,n)=-1 B. (A/P,i,n)(P/A,i,n)=0 C. (F/
C?2023-07-01 09:44:434
数据结构中的表达式语法问题
主要判断方法: 1.先扫描一遍字符串,检查是否有非法字符并清除空格; 2.再次扫描字符串,使用前探法进行语法分析; 3.简单的状态变换; 4.使用栈判断左右括号匹配。 #define CHAR_INVALID -1 #define CHAR_SPACE 0 #define CHAR_LETTER 1 #define CHAR_OP 2 #define CHAR_LB 3 #define CHAR_RB 4 int WhatIsChar(char ch) // -1 非法字符; 0 空格; 1 字母; 2 运算符; 3 左括号; 4 右括号 主要函数如下,如果需要源代码请hi我,VC++6.0编译下通过: bool AnalysisExpression() { int i = 0; char ch; int status = -1; //-1 内容还未开始, 0 变量中, 1 运算符中 stcontext cont; //入栈上下文数据 msg = "表达式正确!!!"; while(i < inputstr.GetLength()) { ch = inputstr.GetAt(i); switch( WhatIsChar(ch) ) { case CHAR_SPACE://空格 i++; break; case CHAR_LETTER://字母变量 status = 0; if( i < inputstr.GetLength() - 1) { if (!(WhatIsChar(inputstr.GetAt(i + 1)) == CHAR_OP || WhatIsChar(inputstr.GetAt(i + 1)) == CHAR_RB))//运算符 { msg.Format("位置:%d, 变量[ %c ]后缺运算符", i + 1, ch); return false; } } i++; break; case CHAR_OP://运算符 if(status == -1) { msg.Format("位置:%d, 操作符[ %c ]前缺变量", i + 1, ch); return false; } status = 1; if (i == inputstr.GetLength() - 1) { msg.Format("位置:%d, 运算符[ %c ]后缺变量", i + 1, ch); return false; } if (!(WhatIsChar(inputstr.GetAt(i + 1)) == CHAR_LETTER || WhatIsChar(inputstr.GetAt(i + 1)) == CHAR_LB)) //运算符 { msg.Format("位置:%d, 运算符[ %c ]后缺变量", i + 1, ch); return false; } i++; break; case CHAR_LB://左括号 cont.pos = i; cont.text = ch; stackB.push( cont ); if( i < inputstr.GetLength() - 1) { if (!(WhatIsChar(inputstr.GetAt(i + 1)) == CHAR_LETTER || WhatIsChar(inputstr.GetAt(i + 1)) == CHAR_LB)) //运算符 { msg.Format("位置:%d, 左括号[ %c ]后缺变量", i + 1, ch); return false; } } i++; break; case CHAR_RB://右括号 if(stackB.size() > 0) { cont = stackB.top(); stackB.pop(); if(cont.text != "(") { msg.Format("位置:%d, 右括号不匹配缺左括号", i + 1); return false; } } else { msg.Format("位置:%d, 右括号不匹配缺左括号", i + 1); return false; } if( i < inputstr.GetLength() - 1) { if (!(WhatIsChar(inputstr.GetAt(i + 1)) == CHAR_OP || WhatIsChar(inputstr.GetAt(i + 1)) == CHAR_RB)) //运算符 { msg.Format("位置:%d, 右括号[ %c ]后缺运算符", i + 1, ch); return false; } } i++; break; case CHAR_INVALID://非法字符 msg.Format("位置:%d, 表达式含非法字符[ %c ]", i + 1, ch); return false; break; } } if(stackB.size() > 0 ) { cont = stackB.top(); stackB.pop(); msg.Format("位置:%d, 左括号不匹配缺右括号", cont.pos + 1); return false; } return true;}2023-07-01 09:45:041
2008年专升本考试就要来了,有关JAVA程序设计那位帮我~!!~
你自己啥也不参考,自己写个学生信息管理系统。就差不多了。然后再写个生产者和消费者的关系,(线程)。神啊 ,,原来是你问的啊。。呵呵。我去找找。简答、论述、程序设计1、请问 ”2” 、"2"、2之间有什么不同?并回答下面程序的输出结果是什么? (提示:‘2"的ASCII码值是50 )(8分)class test{public static void main(String[] args){int a=2;int b="2";System.out.println (a+a);System.out.println (a+b);}}2、你认为java、C、C++他们之间有没有联系和区别?和C、C++相比,java有哪些优点?(10分)3、下面两段代码具有多处错误,请找出你认为错误的地方,作上标记,并说明为何出错。如果你认为该行没有错误,请打上√ (12分)i)public int search (int [10] number) 1、 ______________________{number = new int[10]; 2、 ______________________for (int i=0;i<number.length;i++) 3、_______________________{number[i]=number[i-1]+number[i+1]; 4、_______________________return number; 5、_______________________}}ii)class MyclassOne{public final int A=365;public int b;private float c;private void myMethodOne(int a){b=a;}public float myMethodTwo(){return 36;}}class MyClassMain{public static void main(String[] args){MyClassOne w1=new MyClassOne();w1.A=12; 6、______________________w1.b=12; 7、_______________________w1.c=12; 8、_______________________w1.myMethodOne(12); 9、_______________________w1.myMethodOne(); 10、_____________________System.out.println(w1.myMethodTwo(12)); 11、___________________w1.c=w1.myMethodTwo(); 12、____________________}}请简要说明下面程序的功能1) public class Sum ( 5分 ){ public static void main( String args[ ]){ double sum = 0.0 ;for ( int i = 1 ; i <= 100 ; i + + )sum += 1.0/(double) i ;System.out.println( "sum="+sum );}}程序设计:(10分)编写一个java程序。要求该程序能够具有以下功能:定义一个坐标类coord。坐标类coord必须满足如下要求:a)coord类含有两部分数据:横坐标x和纵坐标y。x和y的类型都是int类型。b)coord类的方法有:coord( ) : 构造函数,将横坐标和纵坐标的值都赋值为0coord( int x , int y ) : 构造函数,形参 x 为横坐标的初值,y为纵坐标的初值。coord coordAdd(int x, int y) : 将当前坐标对象与形参的值相加,所得的结果仍是一个坐标,返回给此方法的调用者。(提示:可以将两个坐标相加定义为横坐标和横坐标相加,纵坐标和纵坐标相加。例如(1,2)+(3,4)=((1+3),(2+4))=(4,6))程序设计:(10分)请编写一个java程序,利用该程序计算并输出 1+2+3+……+100的值答案1、请问 ”2” 、"2"、2之间有什么不同?并回答下面程序的输出结果是什么? (提示:‘2"的ASCII码值是50 )(8分)答:"2"是字符串,"2"算字符。2是数字。class test{public static void main(String[] args){int a=2;int b="2";System.out.println (a+a);System.out.println (a+b);}} 输出结果为:4522、你认为java、C、C++他们之间有没有联系和区别?和C、C++相比,java有哪些优点?(10分)答:java是以c及c++为基础的。许多地方沿用了它们的思想。但最主要的,java是完全面向对象的编程,而c是面向过程,c+则不完全是面向对象。java相对说来,编程更方便,安全,结构,模块化强,易于移植,跨平台性好等。3、下面两段代码具有多处错误,请找出你认为错误的地方,作上标记,并说明为何出错。如果你认为该行没有错误,请打上√ (12分)i)public int search (int 错[10] number) 1、 引用时只能是类型不能带值{number错 = new int[10]; 2、 数组没有下标for (int i=0;i<number.length;i++) 3、对{number[i]=number[i-1]+number[i+1]错; 4、数组在i+1在i=number.length-1是超界return number; 5、对}}ii)class MyclassOne{public final int A=365;public int b;private float c;private void myMethodOne(int a){b=a;}public float myMethodTwo(){return 36;}}class MyClassMain{public static void main(String[] args){MyClassOne w1=new MyClassOne();w1.A=12; 6、错误,试图给final型再次赋值w1.b=12; 7、对Myclassone中b赋值w1.c=12; 8、对myclassone float c赋值w1.myMethodOne(12); 9、调用myclassone的mymethodone形参为int的方法,w1.myMethodOne(); 10、调用myclassone的mymethodone无形参的方法System.out.println(w1.myMethodTwo(12)); 11、输出myclassone的mymethodtwo(12)值w1.c=w1.myMethodTwo(); 12让c引用mymethodtwo方法}}请简要说明下面程序的功能1) public class Sum ( 5分 ){ public static void main( String args[ ]){ double sum = 0.0 ;for ( int i = 1 ; i <= 100 ; i + + )sum += 1.0/(double) i ;System.out.println( "sum="+sum );}} 功能为 求出1/1+1/2+1/3+1/4….+1/100的和程序设计:(10分)编写一个java程序。要求该程序能够具有以下功能:定义一个坐标类coord。坐标类coord必须满足如下要求:a)coord类含有两部分数据:横坐标x和纵坐标y。x和y的类型都是int类型。b)coord类的方法有:coord( ) : 构造函数,将横坐标和纵坐标的值都赋值为0coord( int x , int y ) : 构造函数,形参 x 为横坐标的初值,y为纵坐标的初值。coord coordAdd(int x, int y) : 将当前坐标对象与形参的值相加,所得的结果仍是一个坐标,返回给此方法的调用者。(提示:可以将两个坐标相加定义为横坐标和横坐标相加,纵坐标和纵坐标相加。例如(1,2)+(3,4)=((1+3),(2+4))=(4,6))public class Coord {int x=100;int y=200;public Coord(){this.x=0;this.y=0;}public Coord(int x,int y) {x=this.x;y=this.y;}void coordAdd(int x,int y){this.x+=x;this.y+=y;}public static void main (String[] args) {}}程序设计:(10分)请编写一个java程序,利用该程序计算并输出 1+2+3+……+100的值Sum.javapublic class Sum {public Sum() {int sum=0;for(int i=1;i<=100;i++)sum+=i;System.out.println("1+2+3+...100="+sum);}public static void main (String[] args) {new Sum();}}Java试题(一)一、 选择1.欲构造ArrayList类的一个实例,此类继承了List接口,下列哪个方法是正确的 ?A ArrayList myList=new Object();B List myList=new ArrayList();C ArrayList myList=new List();D List myList=new List();2.paint()方法使用哪种类型的参数?A GraphicsB Graphics2DC StringD Color3.指出正确的表达式A byte=128;B Boolean=null;C long l=0xfffL;D double=0.9239d;4.指出下列程序运行的结果public class Example{ String str=new String("good"); char[]ch={"a","b","c"}; public static void main(String args[]){ Example ex=new Example(); ex.change(ex.str,ex.ch); System.out.print(ex.str+" and "); Sytem.out.print(ex.ch); } public void change(String str,char ch[]){ str="test ok"; ch[0]="g"; }}A good and abcB good and gbcC test ok and abcD test ok and gbc5.运行下列程序, 会产生什么结果public class X extends Thread implements Runable{ public void run(){ System.out.println("this is run()"); } public static void main(String args[]) { Thread t=new Thread(new X()); t.start(); }}A 第一行会产生编译错误B 第六行会产生编译错误C 第六行会产生运行错误D 程序会运行和启动6.要从文件" file.dat"文件中读出第10个字节到变量C中,下列哪个方法适合?A FileInputStream in=new FileInputStream("file.dat"); in.skip(9); int c=in.read();B FileInputStream in=new FileInputStream("file.dat"); in.skip(10); int c=in.read();C FileInputStream in=new FileInputStream("file.dat"); int c=in.read();D RandomAccessFile in=new RandomAccessFile("file.dat"); in.skip(9); int c=in.readByte();7.容器被重新设置大小后,哪种布局管理器的容器中的组件大小不随容器大小的变化而改变?A CardLayoutB FlowLayoutC BorderLayoutD GridLayout8.给出下面代码:public class Person{ static int arr[] = new int[10]; public static void main(String a[]) { System.out.println(arr[1]); }}那个语句是正确的?A 编译时将产生错误;B 编译时正确,运行时将产生错误;C 输出零;D 输出空。9.哪个关键字可以对对象加互斥锁?A transientB synchronizedC serializeD static10.下列哪些语句关于内存回收的说明是正确的?A 程序员必须创建一个线程来释放内存;B 内存回收程序负责释放无用内存C 内存回收程序允许程序员直接释放内存D 内存回收程序可以在指定的时间释放内存对象11.下列代码哪几行会出错:1) public void modify() {2) int I, j, k;3) I = 100;4) while ( I > 0 ) {5) j = I * 2;6) System.out.println (" The value of j is " + j );7) k = k + 1;8) I--;9) }10) }A line 4B line 6C line 7D line 8二、多项选择1.执行下列代码后,哪个结论是正确的 String[] s=new String[10];A s[10] 为 "";B s[9] 为 null;C s[0] 为 未定义D s.length 为102.下面的表达式哪个是正确的?A String s="你好";int i=3; s+=i;B String s="你好";int i=3; if(i==s){ s+=i};C String s="你好";int i=3; s=i+s;D String s="你好";int i=3; s=i+;E. String s=null; int i=(s!=null)&&(s.length>0)?s.length():0;3.选出合理的标识符A _sys1_lllB 2mailC $changeD class4.哪个布局管理器使用的是组件的最佳尺寸( preferred size)A FlowLayoutB BorderLayoutC GridLayoutD CardLayoutE.GridBagLayout5.下列哪个方法可用于创建一个可运行的类?A public class X implements Runable{ public void run(){ ......} }B public class X implements Thread{ public void run(){ ......} }C public class X implements Thread{ public int run(){ ......} }D public class X implements Runable{ protected void run(){ ......} }E.public class X implements Thread{ public void run(){ ......} }6.下面哪个方法可以在任何时候被任何线程调用?A notify()B wait()C notifyAll()D sleep()E.yield()F.synchronized(this)7.构造BufferedInputStream的合适参数是哪个?A BufferedInputStreamB BufferedOutputStreamC FileInputStreamD FileOuterStreamE. File8.下列说法正确的是A java.lang.Clonable是类B java.lang.Runnable是接口C Double对象在java.lang包中D Double a=1.0是正确的java语句9.指出正确的表达式A double a=1.0;B Double a=new Double(1.0);C byte a = 340;D Byte a = 120;10.定义一个类名为"MyClass.java"的类,并且该类可被一个工程中的所有类访问,那么该类的正确声明应为:A private class MyClass extends ObjectB class MyClass extends ObjectC public class MyClassD public class MyClass extends Object11.指出下列哪个方法与方法public void add(int a){}为合理的重载方法。A public int add(int a)B public void add(long a)C public void add(int a,int b)D public void add(float a)12.如果下列的方法能够正常运行,在控制台上将显示什么?public void example(){ try{ unsafe(); System.out.println("Test1"); } catch(SafeException e) {System.out.println("Test 2");} finally{System.out.println("Test 3");} System.out.println("Test 4");}A Test 1B Test 2C Test 3D Test 413.下列哪些情况可以终止当前线程的运行?A 抛出一个例外时。B 当该线程调用sleep()方法时。C 当创建一个新线程时。D 当一个优先级高的线程进入就绪状态时。三、 填空题1.执行下列代码后的结果是什么? int x,a=2,b=3,c=4; x=++a+b+++c++;2. 包包含了Collection的接口和类的API3.main方法的声明格式包括4.下列程序中构造了一个SET并且调用其方法add(),输出结果是public class A{public int hashCode(){return 1;}public Boolean equals(Object b){return true}public static void main(String args[]){ Set set=new HashSet();set.add(new A());set.add(new A());set.add(new A());System.out.println(set.size());}}5.下列程序的运行结果是class A{class Dog{ private String name; private int age; public int step; Dog(String s,int a) { name=s; age=a; step=0; } public void run(Dog fast) { fast.step++; }} public static void main (String args[]) { A a=new A(); Dog d=a.new Dog("Tom",3); d.step=25; d.run(d); System.out.println(d.step); }}四、 编程题1.编写一个输出"Hello World!"的程序,用两种方式实现(Application、Applet)。2.打印输出10行杨晖三角形3.有下面一段Server段程序,目的是能够同时服务多个客户,客户的请求是一句话(一个 String)。如果这个请求的内容是字符串"plain"的话,服务器仅将"hello"字符串返回给用户。否则将用户的话追加到当前目录的文本文件 Memo.txt中(路径为"Memo.txt"),并向用户返回"OK"。注意Server并发的处理多用户,Memo.txt被共享,要求不能出现数据不一致。Server的程序如下文件Server.java: public class Server{ public static void main(String args[]){ MemoController memoController = new MemoController(); try{ ServerSocket ss = new ServerSocket(1999); while (true){ Socket s = ss.accept(); try{ UserThread t = new UserThread(s, memoController); t.start(); }catch(Exception e){ e.printStackTrace(); } } }catch(Exception e){ e.printStackTrace(); }finally{ memoController.close(); } } } 类UserThread程序如下: 文件UserThread.java: public class UserThread extends Thread{ Socket s; MemoController memo; public UserThread (Socket s, MemoController memo){ this.s = s; this.memo = memo; } public void run(){ try{ BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream())); String req = br.readLine(); if (req.equals("plain")){ pw.println("hello"); }else{ memo.append(req); pw.println("OK"); } pw.flush(); pw.close(); br.close(); s.close(); }catch(Exception e){ e.printStackTrace(); } } }请根据题目的要求和现有的Server.java, UserThread.java的程序完成类MemoController.java的程序。4.用输入/输出写一个程序,让用户输入一些姓名和电话号码。每一个姓名和号码将加在文件里。用户通过点"Done"按钮来告诉系统整个列表已输入完毕。 如果用户输入完整个列表,程序将创建一个输出文件并显示或打印出来。 格式如:555-1212,Tom 123-456-7890,Peggy L. 234-5678,Marc 234-5678,Ron 876-4321,Beth&Brian 33.1.42.45.70,Jean-Marc四、 编程题答案1 public class HelloWorld { public static void main(String args[]) { System.out.println("Hello,World!"); } } import java.awt.Graphics; import java.applet.Applet; public class HelloWorld extends Applet{ String s; public void init(){ s="Hello World!"; } public void paint(Graphics g){ g.drawString(s,25,25); }}2 class yanghui { public static void main (String2023-07-01 09:45:151
指出下列Visual Basic表达式中的错误,并写出正确的形式
第一个的 280 的0 有点象是O,不确定(2) (-3)/8+8.INT(24.8)(3) (8+6)^(4/(-2))+SIN(2*丌)(4) ((X+Y)+Z)*80-5*(C+D)2023-07-01 09:45:251
设变量已正确定义并赋值,以下正确的表达式是( ) A x=y*5=x+z B int(15.8%5) C x=y+z+5,++y D x=25%5.0
d2023-07-01 09:45:335
abcd四个表达式是否正确
注:a++表示先运算后+1;++a表示先+1后运算 (A)分解成 a = a + (a++)==> a = (a+1) + a = 9 (B)分解成 a = a + (++a)==> a = (a+1) + (a+1) =10 (C)左值操作错误,a先运算,回来后发现a+1(换地方了) (D)分解成 (a=4+1) = a + (a++)==> a = (a+1) + a =112023-07-01 09:45:511
C语言选择题 设变量已正确定义并赋值,以下正确的表达式是
二楼的回答是错的,表达式没有地址不能赋值而不是因为有个常量,逗比2023-07-01 09:46:015
有几道多选择题急需答案请那位专家告诉下 非常急!!!!!!!!!
1、B D;2、A C D;3、A B C ;4、A D;5、B C D E希望可以帮到你2023-07-01 09:46:221
在c语言中,该变量已正确定义并赋值,以下正确的表达式是() A.x=y*5=x+z
A:c语言样赋值B:因该样:(int)15.8%5C:正确逗号运算符D:求余被除数只能整数----人观点2023-07-01 09:46:321
若变量已经正确定义并赋值,符合C语言语法的表达式是? a=a+7; a=7+b+c,a++;
如果变量已经正确定义并赋值,这三个式子都是C语言中的正确的表达式. 但在它们后面加了分号,就不再是表达式,而是表达式语句了.2023-07-01 09:46:391
有定义:char*p1,*p2;则下列表达式中正确合理的是 C A,p1/=5 B,p1+=5 C,p1=&p2 D,p1*=p2
选b2023-07-01 09:47:134
在C语言中如何用栈检验一个算数表达式的正确
给你一个完整的程序,自己按需要修改吧。这是我2001年使用过的一个段落。编译后,可以直接运行。 编译如下: /************* Compile: gcc $1.c -o $1.e -lm *********/ #include <stdio.h> #include <stdlib.h> #include <math.h> #define TTRUE 0 #define TFALSE 1 #define MY_BUF_SIZ 256 #define WORD_SIZ 32 int A=100; float B=200.002; double C=300.033; struct Variables{ char name[64]; int ty; //int--0,float--1,double--2 double val; }VarTable[]={ {"A",0,0.0}, {"B",1,0.0}, {"C",2,0.0} }; int VarTableLen = 3; int isTheVar(char *tv){ int i = 0; void setVarValue(int); for(i = 0;i<VarTableLen;i++){ if(strcmp(VarTable[i].name,tv) == 0){ setVarValue(i); return i; } } return -1; } double getVarValue(int i){ return VarTable[i].val; } void setVarValue(int i){ if(strcmp(VarTable[i].name,"A") == 0){ VarTable[i].val = A; }else if(strcmp(VarTable[i].name,"C") == 0){ VarTable[i].val = C; }else if(strcmp(VarTable[i].name,"B") == 0){ VarTable[i].val = B; }else{ printf("Out of Var Range! ");; exit(TFALSE); } } struct expr_Cstr{ char var[WORD_SIZ]; int ty; }expr[MY_BUF_SIZ]; int expr_n = 0; int expr_pos = -1; int getWord(char *str,char *wd){ int j = 0; int WDT = 0,WTX = 0; int pos = ++expr_pos; wd[0] = 0; for(;str[pos]!=0 && (str[pos] == " " || str[pos] == " ");pos++); expr_pos = pos; for(;str[pos];pos++){ expr_pos = pos; switch(str[pos]){ case " ": case " ": case "^": case "/": case "*": case "(": case ")": case "+": case "-": if(WDT){expr_pos --;WTX = 1;break;} wd[j++] = str[pos];wd[j] = 0; return 1; default: WDT = 1; wd[j++] = str[pos];wd[j] = 0; } if(WTX)break; } if(WDT)return 2; return 0; } #define NUM_TYPE 0 #define STR_TYPE 1 #define OPR_TYPE 2 int getWordType(char *wd){ printf("wd=%s ",wd); switch(wd[0]){ case "^": case "/": case "*": case "(": case ")": case "+": case "-": return OPR_TYPE; case "0": case "1": case "2": case "3": case "4": case "5": case "6": case "7": case "8": case "9": return NUM_TYPE; default: return STR_TYPE; } return STR_TYPE; } void expParse(char *str){ int t,top=0; char wd[WORD_SIZ]; char stack[MY_BUF_SIZ]; t=0; while(getWord(str,wd)){ switch(getWordType(wd)){ case STR_TYPE: //VariableName expr[t].ty = STR_TYPE; strcpy(expr[t++].var,wd); break; case NUM_TYPE: expr[t].ty = NUM_TYPE; strcpy(expr[t++].var,wd); break; case OPR_TYPE: expr[t].ty = OPR_TYPE; if(strcmp(wd,"(") == 0){ top++; stack[top]=wd[0]; }else if(strcmp(wd,")") == 0){ while(top!=0 && stack[top]!="("){ expr[t].ty = OPR_TYPE; sprintf(expr[t++].var,"%c",stack[top]); top--; } top--; }else if (strcmp(wd,"+") == 0 || strcmp(wd,"-") == 0){ while(top!=0&&stack[top]!="(") { expr[t].ty = OPR_TYPE; sprintf(expr[t++].var,"%c",stack[top]); top--; } top++; stack[top]=wd[0]; }else if (strcmp(wd,"*") == 0 || strcmp(wd,"/") == 0){ while(top!=0 && (stack[top]=="*"||stack[top]=="/")) { expr[t].ty = OPR_TYPE; sprintf(expr[t++].var,"%c",stack[top]); top--; } top++; stack[top]=wd[0]; }else if(strcmp(wd,"^") == 0) { top++; stack[top]=wd[0]; } break; } } while(top!=0) { expr[t].ty = OPR_TYPE; sprintf(expr[t++].var,"%c",stack[top]); top--; } expr_n = t; printf("expression = ["); for(t = 0;t<expr_n;t++)printf("%s",expr[t].var); printf("] "); } //expression over double getNumValue(int t){ return (double)atof(expr[t].var); } double getExpValue(){ int t,top=0; double val_stk[64]; int is_val = -1; t=0; top=-1; for(t = 0;t<expr_n;t++){ switch(expr[t].ty){ case NUM_TYPE: val_stk[++top]=getNumValue(t); break; case OPR_TYPE: switch(expr[t].var[0]){ case "^": val_stk[top-1]=pow(val_stk[top-1],val_stk[top]); break; case "+": val_stk[top-1]=val_stk[top-1]+val_stk[top]; break; case "-": val_stk[top-1]=val_stk[top-1]-val_stk[top]; break; case "*": val_stk[top-1]=val_stk[top-1]*val_stk[top]; break; case "/": if(val_stk[top]!=0){ val_stk[top-1]=val_stk[top-1]/val_stk[top]; }else { printf("ERROR!!! Divide by Zero. "); exit(0); } break; default: printf("ERROR!!! unknown operator <%s>. ",expr[t].var); exit(0); } top--; break; case STR_TYPE: if((is_val = isTheVar(expr[t].var))>=0){ val_stk[++top] = getVarValue(is_val); }else{ if(expr[t].var[0]<"0" || expr[t].var[0] >"9"/*expr[t].var[0]>"F"*/){ printf("Bad Var <%s> ",expr[t].var); exit(TFALSE); } val_stk[++top] = atof(expr[t].var); } //printf("This version does not process [STR_TYPE] "); break; default: printf("ERROR!!! unknown var TYPE <%d>. ",expr[t].ty); exit(0); } } printf("The Result is val_stk[%d]=%g ",top,val_stk[top]); return val_stk[top]; } //getExpValue Over int main(int argc,char *argv[]){ if(argc<2){ printf("Usage: %s expression ",argv[0]); exit(0); } //expression Begin expParse(argv[1]); //getExpValue Begin printf("we got value = %g ",getExpValue()); exit(0); }2023-07-01 09:47:201
C语言.运算符和表达式
1.BD2.BCD3.ACD4.C5.B6.A7.A8.BC9.D10.ACD2023-07-01 09:47:301
C语言小题,表达式是否正确,为什么
BBCC——题目就错了,无法选择。2023-07-01 09:47:432
C语言表达式问题
0‘a">"A">=1<=0==1!=0‘a">"A"真,值为11>=1为真,值11<=0假,值为0.0==1假 值为00!=0假,值为02023-07-01 09:47:533
怎么样判断一个C语言表达式在语法上是正确的?
用VC6.0或者VC2008等编译器来检查,无报错则无语法错误,但是不能检查出逻辑错误2023-07-01 09:48:021
若变量已正确定义并赋值,下面符合C语言要求的表达式是A.a:=b+1 B.a=b=c+2 C.int 18.5%3 D.a=a+7=c+b
【答案】:B本题考查C语言表达式的语法。A选项中“:=”不是C语言中的运算符。C选项中int是定义一个整型变量,后面不能够跟算术表达式。D选项错误地使用了赋值运算符“=”,赋值运算符只能将一个数据赋给一个变量,而不能够对表达式进行赋值。题目中a=a+7或a=c+d都是正确的表达式,a+7=c+d是错误的。2023-07-01 09:48:091
汽车传动路线表达式正确的是
汽车传动路线表达式正确的是?本次答题正确率下次再接再厉哦学习建议刷题是有效提高分数的途径,若是自学能力偏低或时间不够的同学,我们推荐选择网校辅导,在线听课,名师讲解再做一遍查看答案答题卡1确认作答分析图所示传动系统:(1)写出传动路线表达式;(2)计算主轴的转速级数;(3..._考试资料网简答题分析图所示传动系统: (1)写出传动路线表达式; (2)计算主轴的转速级数; (3)写出运动平衡式; (4)计算主轴的最高和最低转速(图中M1为齿式离合器) 参考答案(1)传动路线表达式: (2)主轴转速级数:3*3*2=18(级)2023-07-01 09:48:201
下列函数表达式是否正确?
z-i=(3+i)z(2+i)z=-iz=-i/(2+i)z_ = i/(2-i) = i(2+i)/5=-1/5+2/5 i。选 B2023-07-01 09:48:291
if语句的表达式要表示判断条件"x不等于0",下面表达式写法中正确的是 (A)x=0 (B)x (C)!x (D)x< >0
B正确几乎所有编程语言都有这样的规定:0等价于逻辑假(False),而任何非零值则等价于逻辑真(True),所以要想表示“x不等于0”,只要直接用x作为判断条件即可:if(x){ alert("x不等于0");}else{ alert("x等于0");}2023-07-01 09:48:401
C语言表达式的正确性问题。如何判断??
B第一个 int 后面跟常量,不对。第三个,取整运算不能包含浮点数据;第四个 错的离谱了。2023-07-01 09:49:022
以下表达式中正确的是()。
以下表达式中正确的是()。 A.过滤速率与过滤面积平方A2成正比B.过滤速率与过滤面积A成正比C.过滤速率与所得滤液体积V成正比D.过滤速率与虚拟滤液体积Ve成反比正确答案:过滤速率与过滤面积平方A2成正比2023-07-01 09:49:101
下面表达式正确的是:
回答你的问题在上面的VFP表达式中,不正确的是(C)解释:日期型数据的运算"+"日期与数字相加,表示天数相加,计算结果为新的日期"-"日期与数字相减,表示天数相减,计算结果为新的日期在VFP表达式中,日期与日期可以相减,表示天数相减,计算结果为相差的天数但日期与日期是不可以用”+“相加的。觉得好请采纳谢谢!2023-07-01 09:49:211
以下的表达式中正确的是
A2023-07-01 09:49:321
c语言 指出下面错误的表达式 (多选) A a+b=5 B 56=a11 C
BD。B中=的左值不应该是一个常量。D中%运算符的两遍只能是整数。2023-07-01 09:50:042
以下算术表达式哪些是语法正确的?
3 * ((2 - 9) + 4)) * (2 + (1 - 3)) 正确5 - 1 - 3 - 7 - 0 正确8 / -2 //编程语言正确,数学表述不正确(7 - 2) / (3 ** 2) 不正确9 - (2 - (4 * 3) 正确2023-07-01 09:50:221
下列表达式的值正确的是()。
下列表达式的值正确的是()。 A.10%3的值是1B.1%3的值是3C.4*3的值是15D.“5”+5的值是10正确答案:10%3的值是12023-07-01 09:50:331
c++设d为字符变量,下列表达式正确的是__________?
严格说没有一个选项是正确的。但除了C,其余都能通过编译:A——结果是0,B——结果是n,C错,D结果是2。所以此题无唯一正确选项。2023-07-01 09:50:421
下列测量结果表达式正确的是()
下列测量结果表达式正确的是() A.L=23.68+0.009mB.I=4.09+0.10mAC.T=12.56+0.01sD.Y=(1.67+0.5)×10<sup>11P<sub>a正确答案:C2023-07-01 09:50:521
求解释 int a[10],*p;下列表达式正确的是(C)
应该是A正确吧2023-07-01 09:51:272
下列属于正确的vb表达式解释一下acd选项
A,是VB算术表达式:星号是乘号,斜杠是除号。C,是条件表达式。D,上尖号是乘方运算。2023-07-01 09:51:351
VB中下列逻辑表达式书写正确的是? A .a>b>c b .a>b and a>c c .a
答案是B. 楼上2位先弄清楚什么逻辑表达式再来回答. 只有使用逻辑操作符(And、Or、Xor、Not)的才是逻辑表达式,使用关系操作符(=、、=)的是关系表达式.答案补充 上面已经解释了啊.A是个错误的表达式,正确的应该是a>b and b>c.C和D都是关系表达式.2023-07-01 09:51:431
在下面的测量结果表达式中,正确的应该是()
在下面的测量结果表达式中,正确的应该是() A.D=(4.800±0.020)mB.D=(4.80±0.02)×10<sup>3mmC.D=(4800±20)mmD.D=(480.0±2.0)cm正确答案:B2023-07-01 09:51:521