C语言第七次作业练习

以下程序教材基于 谭浩强C程序设计(第四版)

第1题 完成例6.9,有3个字符串,要求找出其中最大者。

# include  
# include  

int main(void)  
{  
    char str[3][20];//定义二维数组(存放三个字符串)  
    char string[20];//定义一维数组  
    int i;  
    for(i=0;i<3;i++)  
    {  
        gets(str[i]);//每换行输入一个字符串  
    }  
    if(strcmp(str[0],str[1])>0)  
        strcpy(string,str[0]);  
    else  
        strcpy(string,str[1]);  

    if(strcmp(str[2],string)>0)  
        strcpy(string,str[2]);  

    printf("输入的三个字符串中最大的字符串是%s\n",string);  

    return 0;  
}  

第2题 教材P.169习题10。

# include
# include

int main(void)
{
    char a[3][80];
    int i,j,daxie,xiaoxie,num,space,other;
    daxie=xiaoxie=num=space=other=0;

    for(i=0;i<3;i++)
    {
        printf("请输入一行字符\n");
        gets(a[i]);
        for(j=0;j<80&&a[i][j]!='\0';j++)
        {
            if(a[i][j]>='A'&&a[i][j]<='Z')
                daxie++;
            else if(a[i][j]>='a'&&a[i][j]<='z')
                xiaoxie++;
            else if(a[i][j]>='0'&&a[i][j]<='9')
                num++;
            else if(a[i][j]==' ')
                space++;
            else
                other++;
        }
    }
    printf("\n大写字母:%d\n小写字母:%d\n数字:%d\n空格:%d\n其他字符:%d\n",daxie,xiaoxie,num,space,other);

    return 0;
}

第3题 教材P.169习题13。

# include
# include

int main(void)
{
    char a[100],b[50];
    int i=0,j=0;

    printf("请输入第一行字符串:\n");
    gets(a);
    printf("请输入第二行字符串:\n");
    gets(b);

    while(a[i]!='\0')
        i++;
    while(b[j]!='\0')
    a[i++]=b[j++];
    a[i]='\0';
    printf("字符串相连的结果为:%s\n",a);

    return 0;
}

第4题 教材P.169习题15。

# include
# include

int main(void)
{
    char a[100],b[100];
    int i;

    printf("请输入第二个字符数组内容:");
    gets(b);
    for(i=0;i<100;i++)
        a[i]=b[i];
    printf("第一个字符数组内容为:%s\n",a);

    return 0;
}

第5题 实现顺序查找算法,规定数组长度为10。

/*实现顺序查找算法*/

# include
# include

int main(void)
{
    int i,val,a[10],ret;
    char ch;

    for(i=0;i<10;i++)
        a[i]=rand()%100;  //产生100以内的随机整数//
    for(i=0;i<10;i++)
        printf("%3d",a[i]);  //输出产生的随机整数//

    do
    {
        printf("\n请输入所要查找的元素:");
        scanf("%d", &val);

        for(i=0;i<10;i++)
        if(val==a[i])
            ret=1;

        if(1 == ret)
            printf ("匹配成功,存在该元素!\n");
        else
            printf ("匹配失败,不存在该元素!\n");

        printf("您想继续么(Y/N): ");
        scanf(" %c", &ch);  

    }
    while ('y'==ch || 'Y'==ch);

    return 0;
}

第6题 教材P.169习题9。实现折半查找算法,规定数组长度为11。

# include

int main(void)
{
    int i,number,top,bott,mid,loca,a[11],flag=1,sign;
    char c;printf("由大到小输入11个数 :\n");

    for(i=0;i<11;i++)
    {
        scanf("%d",&a[0]);
        i++;
        while(i!=-1&&i<11)
        {
            scanf("%d",&a[i]);
            if(a[i]1])
                i++;
            else
            {
                printf("输入有误,请重新输入:\n");
                i=-1;
            }
        }
    }
    printf("\n");
    for(i=0;i<11;i++)
        printf("%4d",a[i]);
    printf("\n");
    while(flag)
    {
        printf("寻找:");
        scanf("%d",&number);
        sign=0;
        top=0;
        bott=11-1;
        if((number0])||(number>a[11-1]))
            loca=-1;
        while((!sign)&&(top<=bott)){mid=(bott+top)/2;
        if(number==a[mid])
        {
            loca=mid;
            printf("已找到%d,它是第%d个数\n",number,loca+1);
            sign=1;}
        else if(number>a[mid])
            bott=mid-1;
        else
            top=mid+1;
        }
        if(!sign||loca==-1)
            printf("无此数\n");
        printf("如继续寻找,请输入数字;否则按n/N结束");
        scanf("%c",&c);
        if(c=='N'||c=='n')
            flag=0;
    }
    return 0;
}

第7题 教材P.169习题8。找出二维数组中的鞍点,规定二维数组大小为3行4列。

/*找出二维数组中的鞍点,规定二维数组大小为34*/

# include

int main(void)
{
    int i,j,k,a[3][4],b,c,d;
    printf("请输入3*4数组:\n");
    for(i=0;i<3;i++)
        for(j=0;j<4;j++)
            scanf("%d",&a[i][j]);
        for(i=0;i<3;i++)
        {
            b=a[i][0];
            c=0;
            for(j=0;j<4;j++)
                if(a[i][j]>b)
                {
                    b=a[i][j];
                    c=j;
                }
            d=1;
            for(k=0;k<3;k++)
                if(b>a[k][c])
                {
                    d=0;
                    continue;
                }
                if(d)
                {
                    printf("第%d行,第%d列的%d是鞍点\n",i+1,c+1,b);
                    break;
                }
        }
        if(!d)
            printf("不存在鞍点!\n");

        return 0;
}

你可能感兴趣的:(作业练习)