求大神指教(─.─|||
一共有三个小问题题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;
}
题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;
}
问题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]