p=p->next=new IntNode; cin>>p->data; }
p->next =NULL;
p=f; f=f->next; delete p; }
假定IntNode的类型定义为: struct IntNode {
int data; //结点值域 IntNode* next; //结点指针域 };
22. int f(const char *s) {
int i=0;
while(*s++)i++; return i; };
23. char *f(char *s){ int n=strlen(s);
char* r=new char[n+1]; for(int i=0; i if(s[i]>='a' && s[i]<='z') r[i]=s[i]-'a'+'A'; else r[i]=s[i]; r[n]=’\\0’; return r; } 七、程序改错 1. 在下面的定义中,NODE是链表结点的结构,appendToList则是一函数,其功能是:在list所指向的链表的末尾添加一个新的值为x的结点,并返回表头指针。函数中有两处错误,指出错误所在行的行号并提出改正意见。 struct NODE{ int data; NODE *next; }; NODE* appendToList(NODE *list, int x){ //1行 NODE *p=new int; //2行 p->data=x; //3行 p->next=NULL; //4行 if(list==NULL) return p; //5行 NODE *p1=list; //6行 while(p1->next!=NULL) p1=p1->next; //7行,链表非空先找到表尾 p1=p; //8行,让原表尾指针指向新添加的结点 return list; } 错误行的行号为______和________。 分别改正为______________和______________。 2. 在下面的定义中,NODE是链表结点的结构,addToList则是一函数,其功能是:将一个值为x的新结点添加到以plist为表头指针的链表的首部(即第一个结点的前面)并返回表头指针。函数中有两处错误,指出错误所在行的行号并提出改正意见。 struct NODE{ int data; NODE *next; }; NODE* adndToList(NODE * plist, int x){ //1行 NODE *p; //2行 *p=new NODE; //3行 p->data=x; //4行 p->next=NULL; //5行 plist=p; //6行 return p; //7行 } 错误行的行号为______和________。 分别改正为______________和______________。 3. 假定要求下面程序的输出结果为“11/15”,其主函数中存在着三行语句错误,请指出错误语句行的行号并改正错误行。 #include class Franction { //定义分数类 int nume; //定义分子 int deno; //定义分母 public: //把*this化简为最简分数,具体定义在另外文件中实现 void FranSimp(); //返回两个分数*this和x之和,具体定义在另外文件中实现 Franction FranAdd(const Franction& x); //置分数的分子和分母分别0和1 void InitFranction() {nume=0; deno=1;} //置分数的分子和分母分别n和d void InitFranction(int n, int d) {nume=n; deno=d;} //输出一个分数 void FranOutput() {cout< void main() //1行 { //2行 Franction a,b,c; //3行 a.InitFranction(6,15); //4行 b.InitFranction(1); //5行 c.InitFranction(); //6行 c=FranAdd(a,b); //7行 cout< 错误行的行号为______、________和________。 分别改正为____________________、________________和___________________。 4. 假定要求下面程序的输出结果为“23/20”,其主函数中存在着三条语句错误,请指出错误语句行的行号并改正。 #include class Franction { //定义分数类 int nume; //定义分子 int deno; //定义分母 public: //把*this化简为最简分数,具体定义在另外文件中实现 void FranSimp(); //返回两个分数*this和x之和,具体定义在另外文件中实现 Franction FranAdd(const Franction& x); //置分数的分子和分母分别0和1 void InitFranction() {nume=0; deno=1;} //置分数的分子和分母分别n和d void InitFranction(int n, int d) {nume=n; deno=d;} //输出一个分数 void FranOutput() {cout< void main() //1行 { //2行 Franction *a=new Franction; //3行 Franction *b=new Franction; //4行 a->InitFranction(6,15); //5行 b.InitFranction(3,4); //6行 Franction c; //7行 c.InitFranction(); //8行 c=a.FranAdd(b); //9行 cout< 错误行的行号为______、________和________。 分别改正为____________________、________________和___________________。 5. 下面是一个类的定义,存在着3处语法错误,请指出错误行的行号并改正。 class CE { //1行 private: //2行 int a,b; //3行 int getmin() {return (a void SetValue(int x1,int x2, int x3) { //7行 a=x1; b=x2; c=x3; //8行 }; //9行 int GetMin(); //10行 }; //11行 int GetMin() { //12行 int d=getmin(); //13行 return (d 错误行的行号为______、________和________。 分别改正为____________________、________________和___________________。 6. 下面程序段第4-10行中存在着三条语句的语法错误,请指出错误语句的行号并改正。 class A { //1行 int a,b; //2行 const int c; //3行 public //4行 A():c(0);a(0);b(0) {} //5行 A(int aa, int bb) c(aa+bb); {a=aa; b=bb;} //6行 }; //7行 A a,b(1,2); //8行 A *x=&a, &y=b; //9行 A *z=new A, w[10]; //10行 错误行的行号为______、________和________。 分别改正为____________________、_____________________ 和______________________________________。 Public: A():c(0),a(0),b(0) {} A(int aa, int bb): c(aa+bb) {a=aa; b=bb;} 7. 下面程序段第4-9行中存在着三条语句错误,请指出错误语句的行号并说明原因。 class A { //1行 int a,b; //2行 const int c; //3行 public: //4行 A() {a=b=c=0;} //5行 A(int aa, int bb):c(aa+bb) {a=aa; b=bb;} //6行 }; //7行 A a,b(1,2,3); //8行 A x(2,3), y(4); //9行 错误行的行号为______、________和________。 错误原因分别为___________________、__________________和__________________。 8. 下面程序段第10-17行中存在着三条语句错误,请指出错误语句的行号并说明原因。 class A { //1行
相关推荐: