麻烦懂C语言的大神帮忙看下代码纠错
麻烦大神将错的地方标注下,把正确的写在后面,谢谢!有三道题。1、下面程序的功能时将已个字符串续接到另一个字符串上,至少包含10处错误,请纠错#include"string...
麻烦大神将错的地方标注下,把正确的写在后面,谢谢!有三道题。
1、下面程序的功能时将已个字符串续接到另一个字符串上,至少包含10处错误,请纠错
#include "string.h"
#include "stdio.h"
void main()
{
char str1[4];
char *str2="4567";
void StringCat(char s1:char * s2)
str1="123";
StringCat(str1,str2);
printf("%s",str1);
}
void StringCat(char s1:char *s2)
{
char *p1,p2;
p1 = s1;
p1+=strlen(s1);
p2=s2;
while(p2)
*p1++=*p2++;
*p1=0;
}
2、下面程序的功能是将已个数字字符串转换为整数,至少包含有10处错误,请纠错
long StrToNum(char * str)
{int k,result=0;
k=0;
while(str[k] != 0)
result = result*10+str[k];
}
void main()
{char * str;
long 1;
for(i=0,i<6,i++)
*(str+i)="1"+i;
1=StrToNum(str);
printf("%d",1);
}
3、下面程序根据用户输入的学生数量动态分配一块内存,用来存放学生的学习成绩,最后程序将学生的成绩显示出来,其中至少包含8处错误,请纠错
#include <stdio.h>
#include <malloc.h>
void GetScore(int *pscore,int num)
{pscore=(int * )malloc(num*sizeof(int));
int k;
for(k=0;k<num;k++)
scanf("%d",&pscore[k]);
}
void main()
{int *p;
int *k;
scanf("%d",k);
GetScore(p,k);
while(m,k)
printf("%d\n",p+m);
} 展开
1、下面程序的功能时将已个字符串续接到另一个字符串上,至少包含10处错误,请纠错
#include "string.h"
#include "stdio.h"
void main()
{
char str1[4];
char *str2="4567";
void StringCat(char s1:char * s2)
str1="123";
StringCat(str1,str2);
printf("%s",str1);
}
void StringCat(char s1:char *s2)
{
char *p1,p2;
p1 = s1;
p1+=strlen(s1);
p2=s2;
while(p2)
*p1++=*p2++;
*p1=0;
}
2、下面程序的功能是将已个数字字符串转换为整数,至少包含有10处错误,请纠错
long StrToNum(char * str)
{int k,result=0;
k=0;
while(str[k] != 0)
result = result*10+str[k];
}
void main()
{char * str;
long 1;
for(i=0,i<6,i++)
*(str+i)="1"+i;
1=StrToNum(str);
printf("%d",1);
}
3、下面程序根据用户输入的学生数量动态分配一块内存,用来存放学生的学习成绩,最后程序将学生的成绩显示出来,其中至少包含8处错误,请纠错
#include <stdio.h>
#include <malloc.h>
void GetScore(int *pscore,int num)
{pscore=(int * )malloc(num*sizeof(int));
int k;
for(k=0;k<num;k++)
scanf("%d",&pscore[k]);
}
void main()
{int *p;
int *k;
scanf("%d",k);
GetScore(p,k);
while(m,k)
printf("%d\n",p+m);
} 展开
1个回答
展开全部
/* 第一题 */
/* 小毛病:应为#include <...>,因为是标准头 */
#include "string.h"
#include "stdio.h"
void main() /* 1. 应该为int main() */
{
char str1[4]; /* 11. 根据程序来看,数组空间不够,应为 char str1[8]; */
char *str2="4567";
/* 下面这句有3处错误: *
* 2. char *s1 *
* 3. :改为, *
* 4. 语句末尾缺分号 */
/* 应为void StringCat(char *s1, char *s2); */
void StringCat(char s1:char * s2)
str1="123"; /* 5. 不能直接给数组赋值,应为strcpy(str1, "123"); */
StringCat(str1,str2);
printf("%s",str1);
/* 6. 此处添加return 0; */
}
/* 7. char s1改为char *s1 */
/* 8. ":"改为"," */
void StringCat(char s1:char *s2)
{
char *p1,p2; /* 9. char *p1, *p2 */
p1 = s1;
p1 += strlen(s1);
p2 = s2;
while (p2) /* 10. while (*p2) */
*p1++=*p2++;
*p1=0;
}
/* 第二题 */
/* 13. #include <stdio.h> */
long StrToNum(char * str) {
int k,result=0;
k=0;
while(str[k] != 0)
/* 1. k没有递增,造成无限循环。*
* 2. 逻辑错误:不应该加str[k] */
/* 应为 result = result * 10 + str[k++] - '0' */
result = result*10+str[k];
/* 3. 添加 return result; */
}
void main() { /* 4. int main() */
char * str; /* 5. 应为str预留数组空间, char str[100]; */
long 1; /* 6. 应为long l; */
for(i=0,i<6,i++) /* 7. 中间是分号 for(i=0; i<6; i++) */
*(str+i)="1"+i; /* 8. 单引号不是双引号 *(str+i)='1'+i; */
1=StrToNum(str); /* 9. l = StrToNum(str); */
/* 10. 格式字符串错误 *
* 11. 变量名错误 */
/* 应为 printf("%ld", l); */
printf("%d",1);
/* 12. return 0; */
}
/* 第三题 */
#include <stdio.h>
#include <malloc.h>
/* 1. 应为int **pscore,传入指针的指针 */
void GetScore(int *pscore,int num) {
/* 2. *pscore = ...... */
pscore=(int * )malloc(num*sizeof(int));
int k; /* C89标准中,这一句应该放在函数开头 */
for(k=0;k<num;k++)
scanf("%d",&pscore[k]); /* 3. 应为scanf("%d", *pscore + k); */
}
void main() { /* 4. int main() */
int *p;
int *k; /* 5. int k; */
scanf("%d",k);
GetScore(p,k); /* 6. GetScore(&p, k); */
/* 7. 下面的m未声明,在main函数开头添加int m = 0; */
while(m,k) /* 8. while (m < k) */
printf("%d\n",p+m); /* 9. *(p+m)或p[m] */
/* 10. return 0; */
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询