Napo鱼 发表于 2017-12-2 09:22:43

求大神指教(─.─|||

一共有三个小问题
题1找鞍点
遇到问题:为什么只能比较前两行而已是我算法哪里错了吗
#include<stdio.h>
#define h 3
#define l 3
main()
{int a;
int i,j,k,z,max,min,judge=0;
for(i=0;i<h;i++)
for(j=0;j<l;j++)
scanf("%d",&a);getchar();

for(i=0;i<h;i++)
{for(j=l-1;j>0;j--)
{
if(a>a)
{
max=a;
k=j;}
else
{max=a;
k=j-1;}

for(j=h-1;j>0;j--)
{if(a<a)
{min=a;
z=j;
}
else
{min=a;
z=j-1;
}
}
if(max==min)
{printf("有鞍点,为:%d \n在第%d行,第%d个\n",min,z+1,k+1);
judge=1;}
}
if(judge==1)
break;}
if(judge==0)
printf("没有");
return 0;
}



Napo鱼 发表于 2017-12-2 09:27:32

题2折半法找数
遇到问题:第一个数显示为什么是21,还有输入不在数列的数就不能运行了{:10_245:}
#include <stdio.h>
#include <time.h>
int main()
{
    int a;
    int i,j,min,max,n,site=0;
time_t t;
   srand((unsigned) time(&t));
   for(i=0; i<20; i++)
       printf("%d ", a=rand() % 100);
   printf("\n");

for(i=0;i<20;i++)
    {
      if(max<a)
            max=a;
      if(min>a)
            min=a;
    }
    //printf("最大值%d,最小值%d\n",max,min);

    printf("请输入要找查的数:");
    scanf("%d",&n);getchar();
    max=min=a;


    i=0;
    i<=20;
    while(max>=min)
    {
      j=(max+min)/2;
      a=j;
      i++;
      if(a>n)
            max=j;
      else if(a<n)
            min=j;
      else if(a==n)
      {
            site=i+1;
            break;
      }
    }
    if(site==0)
      printf("该数不在数列中\n");
    else
      printf("该数在数列中第%d个\n",site);
    return 0;
}

Napo鱼 发表于 2017-12-2 09:32:06

问题3strcmp函数比较字符串
遇到问题:根据ASCII码貌似比较不对啊{:10_266:}
emmm因为权限图片没法上传
#include <stdio.h>
#include <string.h>
int main()
{
    char str1,str2;
    printf("请输入第一个句子:");
    gets(str1);

    printf("请输入第二个句子:");
    gets(str2);
    printf("\n");
    strcmp(str1,str2);
    if(strcmp(str1,str2)>0)
      printf("结果:最大的是第一个句子");
    else if(strcmp(str1,str2)<0)
      printf("结果:最大的是第二个句子");
    else if(strcmp(str1,str2)==0)
      printf("结果:一样大\n");
    return 0;
}
页: [1]
查看完整版本: 求大神指教(─.─|||