麻烦懂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);
}
展开
 我来答
piestkj
推荐于2016-05-31 · TA获得超过928个赞
知道小有建树答主
回答量:820
采纳率:0%
帮助的人:611万
展开全部
/* 第一题 */
/* 小毛病:应为#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; */
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式