请C高手进来,c语言改错考试题,谢谢^_^

来源:百度知道 编辑:UC知道 时间:2024/05/29 12:40:11
3.指出以下程序段的错误
1)void main()
2){
3) int x,y;
4) int *const ptr=&x;
5) *ptr=8;
6) ptr=&y;
7) return 0;
8)}
4.改正以下程序段的错误使得程序段可以连续五次输出字符串
char string [ ]=”zhejiang daxue of you”;
char *ptr=string;
for (int loop=0;loop <=4;loop=loop+1){
while(*ptr){
printf(“%c”,*ptr);
ptr=ptr+1;
}
}
5改错题: .比较两个字符串是否相等
#include <stdio.h>
int main()
{
int flag;
char buffer1[10]="hello";
char buffer2[10]="hello";
if(buffer1==buffer2)
flag=0;
else
flage=1;
if(flage=1) printf("%s","not equal\n");
return 1;
else printf("%s","equal\n");
return 0;
}

尽量带些解释,不胜感激!

3. 指针常量和常量指针的区别。
以*为界,const在*右边指指针不能修改,即该指针和这个地址是捆绑的,这个指针再不能指向其他地址;const在*左边指指针指向的内容不能修改。
那么这个题目显然是(6)错了,给一个不能修改的指针赋值了。。。。

4. 在内层循环时改变了指针的值,再次进行外层循环时指针已经不指向原来的字符串了。
在for语句前面加上char *ptr2=ptr;
while语句前面加上ptr=ptr2;

5. 这个现在比较的是两个字符串的地址值,这个根据编译器不同结果是不一样的。如果是为了比较两个字符串,应该用循环对字符串的每个字符进行比较。
#include <stdio.h>
int main()
{
int flag;
char buffer1[10]="hello";
char buffer2[10]="hello";
int i=0;
while(buffer1[i]&&buffer2[i]){
if(buffer1[i]!=buffer2[i]){
flag=1;
break;
}
}
if(flage==1) printf("%s","not equal\n");
return 1;
else printf("%s","equal\n");
return 0;
}

3.prt=&y;错误,不可以修改定义为const的对象
return 0;错误void 类型函数中不能有返回值.
4.for (int loop=0;loop <=4;loop=loop+1){
这行中的int loop=0错误:在C中