if(a[i][col]>a[j][col])
break;
if(j==m)
{
flag=1;//有鞍点
printf("i=%d,j=%d,saddlepoint:
%d\n",i,col,a[i][col]);
}
}
if(flag==0)
printf("Nosaddlepoint!
\n");
}
三、字符串实验
1.以下程序功能为:
输入一个字符串,将其逆序输出。
找出并改正以下源程序中错误,通过调试得出正确的运行结果。
源代码(有错误的程序)
#include
#include
voidmain()
{
inti,j;
chars[80],result[80];
printf("Enterastring:
\n");
gets(s);
for(i=strlen(s)-1,j=0;i>=0;i--,j++)
{
result[j]=s[i];
}
result[j]='\0';//必须给字符串加上串结束标志
printf("Thisisreversestring:
\n");
puts(result);
}
运行结果(改正后的程序)
Enterastring:
asdfg
Thisisthereversestring:
gfdsa
2.编程:
任意输一个字符串保存在一维字符数组中,求其长度(不用strlen函数)。
例如:
Inputastring:
aadfdg
length=6
提示:
字符串的有效长度就是有效字符的个数,即数组中第一个‘\0’前面的字符个数。
#include
voidmain()
{
inti,len=0;
chars[80];
printf("请输入字符串,以回车键结束:
");
gets(s);
for(i=0;s[i]!
='\0';i++)
len++;
printf("字符串%s的长度为:
%d\n",s,len);
}
3.编程:
任意输入两个字符串分别保存在一维字符数组中,把第二个字符串连接到第一个字符串末尾(不用strcat函数)。
例如:
Inputtwostring:
asdfg
erty
afterstrcat:
asdfgerty
#include
voidmain()
{
inti,j;
chars1[80],s2[80];
printf("请输入字符串1以回车键结束:
\n");
gets(s1);
printf("请输入字符串2以回车键结束:
\n");
gets(s2);
for(i=0;s1[i]!
='\0';i++);/*定位第一个字符串的结束标志*/
for(j=0;s2[j]&&i<80;i++,j++)/*将s2接到s1后*/
s1[i]=s2[j];
s1[i]='\0';
printf("两个串连接后:
%s\n",s1);
}
4.编程:
从键盘读入两个字符串分别保存在一维字符数中,比较两个字符串大小(不用strcmp函数),输出较大的字符串。
#include
voidmain()
{
inti;
chara[80],b[80];
printf("请输入字符串1以回车键结束:
\n");
gets(a);
printf("请输入字符串2以回车键结束:
\n");
gets(b);
//逐个比较直到两个字符不同或其中一个字符串结束
for(i=0;a[i]&&b[i];i++)
{
if(a[i]!
=b[i])
break;
}
if(a[i]>b[i])
printf("第一个字符串%s大!
\n",a);
elseif(a[i]==b[i])
printf("两字符串相同!
\n");
else
printf("第二个字符串%s大!
\n",b);
}
5.编程:
任意输入一个字符串保存在一维字符数组中,判断里面数字字符的个数。
例如:
Inputastring:
adg4521gadg4adg
number:
5
#include
voidmain()
{
inti,n=0;
chars[80];
printf("请输入一个字符串以回车键结束:
\n");
gets(s);
for(i=0;s[i];i++)
if(s[i]>='0'&&s[i]<='9')
n++;
printf("字符串中包含的数字个数为:
%d\n",n);
}
6.编程:
从一个字符串中删除从某个特定字符开始的所有字符。
例如原字符串为"abcdefg",特定字符为'd',删除后的字符串为"abc"。
#include
voidmain()
{
inti,flag=0;
charc,s[80];
printf("请输入一个字符串以回车键结束:
\n");
gets(s);
printf("请输入特定字符:
");
c=getchar();
for(i=0;s[i];i++)
if(s[i]==c)
{
s[i]='\0';
flag=1;
break;
}
if(flag==0)
printf("输入字符中没有特定字符!
\n");
else
puts(s);
}
7.编程:
编写程序,从一个输入的字符串中抽取一部分(从第n个字符开始,抽取m个字符)构成一个新的字符串,并输出。
要求:
n和m都由用户输入。
#include
#include
voidmain()
{
unsignedinti,j,m,n;
chars1[80],s2[80];
printf("请输入一个字符串以回车键结束:
\n");
gets(s1);
printf("请输入子串的起始位置和长度:
");
scanf("%d%d",&n,&m);
if(n>0&&n<=strlen(s1))
{
if(m>0&&n+m<=strlen(s1)+1)
{
for(i=n-1,j=0;s1[i]&&is2[j]=s1[i];
s2[j]='\0';
puts(s2);
}
else
printf("长度超出范围!
\n");
}
else
printf("起始位置超出范围!
\n");
}
8.编程:
利用字符串库函数puts,gets,strcat,strcmp,strcpy,strlen完成下述操作:
●读入三个字符串str1,str2,str3
●输出