C语言程序改错,帮帮忙!

作者&投稿:吕古 (若有异议请与网页底部的电邮联系)
C语言程序改错,求各位大神帮帮忙~

for ( int cursor =max+1;cursor<len;++cursor ) {改为

int cursor;for ( cursor =max+1;cursor<len;++cursor ) {

主要是考察把中缀表达式换为后缀表达式
然后运用堆栈求值的运算
我可以提供一点思路——供参考
【将中缀表达式转化为后缀】
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

typedef struct node
{
char data; int code; int pri;
struct node *link;
}NODE;

struct Tb1
{
char data; int code; int pri;
}opchTb1[]={{'*',1,4},{'/',2,4},{'+',3,2},{'-',4,2},{'(',5,5},{')',6,1},{'\0',7,0},{'#',-1,0}};

NODE *optop;
char num[200], *numtop;
char expStr[200];

void push(char x,int c,int p,NODE **toppt)
{
NODE *q=(NODE *)malloc(sizeof(NODE));
q->data=x;
q->code=c;
q->pri=p;
q->link=*toppt;
*toppt=q;
}

int pop(char *op,int *cp, NODE **toppt)
{
NODE *q=*toppt;
if(*toppt==NULL) return 1;
*op=q->data;
*cp=q->code;
*toppt=q->link;
free(q);
return 0;
}

int expr(char *pos)
{
struct Tb1 *op;
char sop;
int type,code,n,m,i,c;
optop=NULL;
numtop=num;
n=m=0;
c=' ';
push('#',0,0,*optop);
while(1){
while(c==' '||c=='') c=*pos++;
if(isalpha(c)){
*numtop++=' ';
while(isalpha(c)||isdigit(c)) {*numtop++=c;c=*pos++;}
if(m) return 1;
m=1;
continue;
}
else {
for(i=0;opchTb1[i].code!=-1&&opchTb1[i].data!=c;i++)
if(opchTb1[i].code==-1) return 3;
op=&opchTb1.[i];
type=opchTb1.[i].code;
c=*pos++;
}
if(type<5){
if(m!=1) return 1;
m=0;
}
if(type==5) n++;
if(type==6){
if(n--==0) return 2;
if(op->pri>optop->pri)
if(op->data=='(') push(op->code,1,*optop);
else push(op->data,op->code,op->pri,*optop);
else{
while(optop!=NULL&&op->pri<=optop->pri) {
pop(&sop,&code,&optop);
if(code<5&&code>0) {
*numtop++=' ';
*numtop++=sop;
}
}
if(op->data=='\0') return(n!=0||(m!=1&&numtop>num))?4:(*numtop='\0');
else if(op->data!=')') push(op->data,op->code,op->pri,&optop);

C语言是大小写敏感语言,例如:a和A,INT和int是不相同的。所以上例中 PRICE和price不一样,修改如下。
#include <stdio.h>
#define PRICE 30
void main( )
{ int x = 5;
int price;//要定义price
price=PRICE*x; //后面的price改为PRICE
print(“x=%d,price=%d\n”,x,price);
}

#include <stdio.h>
#define PRICE 30
void main( )
{ int x = 5,price;
price=PRICE*x;
print(“x=%d,price=%d\n”,x,price);
}
这样就可以了

变量price没有定义.

请不要把#define声明的宏当作变量!另外,C语言中在区分大小写的.

price大小写不一样。
price改成大写应该是对的了。


急!!!请各位大师帮帮我吧,我写的c语言程序到底哪错了,怎么改?谢谢!_百...
switch\/\/关键字都弄错了 void f1(float b[10][5]),f2(float b[10][5]),f3(float b[10][5]),f4(float b[10][5])\/\/这是什么玩意,想写声明么,函数定义在哪 while(ch>'a'&&ch<'e')\/\/这里改while(ch>'a'||ch<'e')基础知识都错了,努力吧 ...

C语言程序编译后正确,但是运行时总有一个 错误是怎么回事啊,,很急啊...
常见原因:输入输出格式不正确、缓冲区溢出、没有为指针分配内存、其他数学错误比如零做除数之类。可以自己用单步进入的方式核对哪里出错

C语言程序 求大家帮帮忙
include <stdio.h> include <string.h> int main(){ char* name[]={"Changhua","Liping","Chenmei", "Gaofeng"};char* t;int i,j;int l=sizeof(name)\/sizeof(char*);for(i=0;i<l-1;i++){ for(j=i+1;j<l;j++){ if(strcmp(name[i],name[j])>0){t=name[i];name[...

这个错误怎么调试啊 我就是想看看c语言里面的goto语句 求求大大帮帮...
你试一下在vc中找到“project”==>"setting"(也可直接alt+f7),找到“c\/c++”==>“Category”,选择“Precom...”,接着选择"Not using ...".如图:另外,你的程序中scanf函数里面a前面要加“&”。scanf("%d",&a)

用友安装后不能打印,提示说是语言程序错误,怎么解决?大神们帮帮忙
软件是正式版的话打印是没有问题的,如果是演示版的话不能进行打印。如果是正式版的不能打印那就要请技术员来处理了。

C语言程序题 从键盘接收5个字符串,然后按字典顺序排序后输出 程序如 ...
已经修改完成:include<stdio.h> include<string.h> main(){ char * str[5], strl[5][80]; \/\/定义字符指针数组,用于指向多个字符串 char *temp;int i, j;for (i = 0; i < 5; i++){ gets(strl[i]); \/\/从键盘上接收多个字符串 str[i] = strl[i]; \/\/让指针数组中的字符串...

pascal语言的程序的调试
先按F9看程序是否有手误等问题,若没有则按Ctrl+F9运行,看结果和答案是否相符。若不相符则Ctrl+F7添加你想观察它怎么变化的变量,按f7或f8一步步跟踪(F7整个程序都走一遍,F8子程序直接运行了得出结果,不进入子程序跟踪)

计算机二级c语言试题类型有哪些
时间为90分钟了,笔试有点赶,上机时间绝对够了。笔试有选择加填空 选择一共40个 70分 前十个公共基础知识 20分 2分\/题 11-20是基础的C知识 10分 1分\/题 20-40是一些C的程序题 40分 2分\/题 填空 15个(有可能一题中会让你填两个空) 30分 都是2分\/题 前5题是 ...

懂汇编语言的帮帮忙??
INT 21h 09号调用不是像你这样的DX放的是你要显示的字符串的首地址而不是你要显示的字符,你要想显示单个字符可以用2号,要显示的字符放在AL里。手机里只能说这么多了。我感觉你这程序离你的题目要求还挺远的,因为你还得把数字该成ASCII码才能正长显示,就是说你要显示1时DL中放的不是1而是...

用易语言程序怎么修改和编写从酷Q社区下载的插件?先谢谢大家了,帮帮忙...
插件应该是成品 dll文件 不能修改了的。你只能搜索.e 源码文件 给自己打打个小广告。。。我可以收费定制插件的。。

额尔古纳市14794396030: C语言程序改错,帮帮忙! -
召君康复: C语言是大小写敏感语言,例如:a和A,INT和int是不相同的.所以上例中 PRICE和price不一样,修改如下. #include <stdio.h> #define PRICE 30 void main( ) { int x = 5; int price;//要定义price price=PRICE*x; //后面的price改为PRICE print(“x=%d,price=%d\n”,x,price); }

额尔古纳市14794396030: c语言程序改错,求大神帮助,急,在线等 -
召君康复: #include<stdio.h> void main() { char ch; ch=getchar();/**********ERROR**********/ if(ch>='0' && ch<='9')/**********ERROR**********/ printf("%d\n",ch);//ch是字符类型,你输出的类型是%d是整型,这样输出的是字符ch对应的ASCII码值,如果想输出...

额尔古纳市14794396030: C语言程序改错 -
召君康复: 1:函数f的形参没有定义2:形参和实参的类型不一致3:函数f头部分就跟了一个;号 这样就和函数体分离了4:既然函数f没有返回值(void型),把函数f的返回值赋给m就没有意义 还有不明白的地方你可以写再问题补充里.

额尔古纳市14794396030: C语言改错! -
召君康复: 正确代码如下:#include<stdio.h> int sum(int a,int b) { return(a+b); } main() { int x,y; scanf("%d%d",&x,&y); printf("%d\n",sum(x,y)); } 错误有:1、第一行要写#include<stdio.h>2、函数不能嵌套定义,要写在main() 之外.这里写在mian(...

额尔古纳市14794396030: C语言,帮忙改错. -
召君康复: else sum+=sum; 改为sum++; 否则sum=sum+sum;初始值为零,再怎么运算还是零 最后加上结果输出printf("Result is %d\n",sum);

额尔古纳市14794396030: C语言程序改错求解... -
召君康复: #include {stdio.h} include int i,j,a[N,N];int i,j,a[N][N]; for(i=1,i<N;i++)printf("%6f",a[i][j]);printf("%6d",a[i][j]);...

额尔古纳市14794396030: C语言程序改错 -
召君康复: main中调用 input(num[],name);//注意num是数组 sort(num[],name);你的错误提醒你num没定义说明你使用num数组有问题

额尔古纳市14794396030: C语言改错,急``` -
召君康复: * scanf(“%d,%d”,a,b);改为 scanf(“%d,%d”,&a,&b); * for(num=a;num

额尔古纳市14794396030: C语言编程,麻烦高手帮忙改错.谢谢 -
召君康复: 那句 if(j%"%d"==0&&j%"%d"==0 ,a ,b) 应该改成 if(j % a == 0 && j % b == 0)这是因为 取模 % 运算要求两边是 int 整型,但是你却把 "%d" 给放上去了.因为 "%d" 是一个3个字符的字符串,所以类型为 const char[3],这样就会出现 “invalid operands of types `int' and `const char[3]' to binary `operator%'” 这个错误了.小力庭 2013-4-20 欢迎到我微博上切磋交流 weibo.com/litingsoft

额尔古纳市14794396030: C语言程序改错
召君康复: 已调试成功:完全符合要求 #include"stdio.h" main() { int a,b,c,s,v; printf("input a,b,c:"); scanf("%d%d%d",&a,&b,&c); s=a*b; v=a*b*c; printf("a=%d,b=%d,c=%d\n",a,b,c); printf("s=%d v=%d\n",s,v); }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网