| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 594 人关注过本帖
标题:初学者求捉虫
只看楼主 加入收藏
外线
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-11-8
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:8 
初学者求捉虫
刚开始学C语言,题目是编写连接字符串、拷贝字符串、比较字符串、转换大小写等函数并测试,下面是我写的代码,求各位捉虫OTZ

#include<stdio.h>

void strcpy(char str[],char cpy[]);
void strcat(char str1[],char str2[]);
void strlwr(char str[]);
void strupr(char str[]);
int strcmp(char str1[],char str2[]);

int main()
{
    char a[20],b[20],cpy[20];
    printf("a:");
    gets(a);
    printf("b:");
    gets(b);
    strcpy(a,cpy);    //拷贝字符串
    puts(cpy);
    printf("\n");
    strcat(a,b);     //连接字符串
    puts(a);
    printf("\n");
    printf("a:");
    gets(a);
    strlwr(a);      //大小写转换
    puts(a);
    strupr(a);    //大小写转换
    puts(a);
    strcmp(a,b);  //字符串比较
    return 0;
}

void strcpy(char str[],char cpy[])
{
    int i;
    for(i=0;(str[i]=cpy[i])!='\0';i++)
        cpy[i]=str[i];
    cpy[i]='\0';
}

void strcat(char str1[],char str2[])
{
    int rear,i,j;
    for(rear=0;str1[rear]!='\0';rear++);
    i=rear;
    for(rear=0;str2[rear]!='\0';rear++);
    for(j=0;j<=rear;j++)
        str1[i]=str2[j];
}

void strlwr(char str[])
{
    int rear,i;
    for(rear=0;str[rear]!='\0';rear++);
    for(i=0;i<rear;i++)
    {
        if(str[i]>'A'&&str[i]<'Z')
            str[i]=str[i]-'A'+'a';
    }
}

void strupr(char str[])
{
    int rear,i;
    for(rear=0;str[rear]!='\0';rear++);
    for(i=0;i<rear;i++)
    {
        if(str[i]>'a'&&str[i]<'z')
            str[i]=str[i]-'a'+'A';
    }
}

int strcmp(char str1[],char str2[])
{
    int i,j,rear1,rear2;
    for(rear1=0;str1[rear1]!='\0';rear1++);
    for(rear2=0;str2[rear2]!='\0';rear2++);
    rear1--;
    rear2--;
    for(i=0;;i++)
    {
        if(i==rear1)
        {
            if(i==rear2)
                return 0;
            else
                return -1;
        }
        if(i==rear2)
            return 1;
        if(str1[i]!=str2[i])
            return str1[i]-str2[i];
    }
}
2015-11-08 19:48
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
char a[20],b[20],cpy[20];
看見這行就知道必定有蟲

授人以渔,不授人以鱼。
2015-11-08 20:03
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
別的不說,那兩個gets()的蟲子已經夠大了。

授人以渔,不授人以鱼。
2015-11-08 20:06
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:5 
你衹要把a、b輸入的字符串輸入時敲長一點試試。你可以試a長b短,也可以試a、b均長。程序寫好之後,自己運行多次,反復用不同的輸入試試,自己也能發現蟲子。

授人以渔,不授人以鱼。
2015-11-08 21:10
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:2 
溢出虫


莫问前尘有愧,但求今生无悔
2015-11-09 10:41
外线
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2015-11-8
收藏
得分:0 
谢谢上面两位的回复,下面是求每门课的平均成绩、最高分还有各科总平均,运行提示有一个错误,还请各位帮看看

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i,j;
    float average,max[3]={},ave[3]={};
    flaot a[][3]={{81,76,92},{66,68,74},{59,61,70},{90,87,95},{75,79,85}};

    for(i=0;i<3;i++)
    {
        for(j=0;j<5;j++)
        {
            if(max[i]<a[j][i])max[i]=a[j][i];
            ave[i]+=a[j][i];
        }
        ave[i]=ave[i]/5;
    }
    average=(ave[0]+ave[1]+ave[2])/3;
    printf("每门课程的最高分:\n");
    printf("English:%5.2f  ,Math:%5.2f   ,C:%5.2f  \n",max[0],max[1],max[2]);
    printf("每门课程的平均分:\n");
    printf("English:%5.2f  ,Math:%5.2f   ,C:%5.2f  \n",ave[0],ave[1],ave[2]);
    printf("总平均成绩:%f  \n",average);
    return 0;
}
2015-11-09 16:20
hellovfp
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:禁止访问
威 望:30
帖 子:2976
专家分:7697
注 册:2009-7-21
收藏
得分:8 
    float average,max[3]={},ave[3]={};
    flaot a[][3]={{81,76,92},{66,68,74},{59,61,70},{90,87,95},{75,79,85}};

我们都在路上。。。。。
2015-11-10 13:24
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
主樓的問題解決了沒有就問別的問題?

授人以渔,不授人以鱼。
2015-11-10 15:12
a974723617
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2015-10-20
收藏
得分:5 
回复 6楼 外线
main()函数的第三行float写错了。细心点应该能看出来。
2015-11-12 13:26
快速回复:初学者求捉虫
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023329 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved