if(a[i][k]>a[j][k])
flag=0;
if(flag==1)/*若是鞍点,则输出后提前退出循环*/
{printf(“i=%d,k=%d,saddlepoint:
%d\n”,i,k,a[i][k]);
break;
}
}
if(i==N)
printf(“Notexistsaddlepoint.\n”);/*如果正常退出循环,说明无鞍点*/
}
第1次运行结果:
Input12data:
123456789101112<回车>
1234
5678
9101112
i=0,k=3,saddlepoint:
4
第2次运行结果:
Input12data:
1230456789101112<回车>
12304
5678
9101112
Notexistsaddlepoint.
8
#include
#defineM5
#defineN3
voidmain()
{
intsum;
intmax,i,j,s[M][N];/*用数组s存学生的每门课程的成绩*/
doubleavg[M]={0},mean[N]={0};/*avg每个学生的平均分,mean每门课程的平均分*/
/*获取每个学生的每门课程的成绩,并计算学生平均成绩*/
for(i=0;i{
printf("No.%d",i+1);
for(sum=0,j=0;j{
scanf("%d",&s[i][j]);
sum+=s[i][j];
}
avg[i]=1.0*sum/N;
}
max=s[0][0];
/*计算每门课程的平均分*/
for(j=0;j{
for(i=0;imean[j]+=s[i][j];
mean[j]=mean[j]/M;
}
for(i=0;i{
for(j=0;j{
if(max
{
max=s[i][j];
}
}
}
/*输出考试情况*/
printf("学生");
for(i=0;iprintf("课程%d",i+1);
printf("平均分\n");
for(i=0;i{
printf("No.%d",i+1);
for(j=0;jprintf("%5d",s[i][j]);
printf("%6.1f\n",avg[i]);
}
for(i=0;i{
printf("平均:
%5.1f\n",mean[i]);
}
printf("最高分为:
%d\n",max);
}
9
#include
#include
voidmain()
{
charstr[80];
charc;
printf("请输入字符串:
\n");
gets(str);
printf("请输入要删除的开始字符:
");
scanf("%c",&c);
inti,j=0;
for(i=0;str[i]!
='\0';i++)
if(str[i]==c)
{
str[i]='\0';
break;
}
printf("%s\n",str);
}
10
【分析】字符串存入字符数组中,要逆序存放,就要将下标为0的字符串与下标最大的字符交换,下标为1的字符与下标次最大的字符交换......,最大下标应为字符串长度-1.
#include
#include
voidmain()
{
charstr[20],t;
inti,j;
gets(str);
j=strlen(str)-1;
for(i=0;i{
t=str[i];
str[i]=str[j];
str[j]=t}
puts(str);
}
运行结果:
ABCDEFGHIJK
KJIHGFEDCBA
11
voidmain()
{
charstr[254];
charname[4][10]={"Upper","Lower","Digit","Other"};
inti,a[4]={0};
printf("输入一个字符串:
");
gets(str);
for(i=0;str[i]!
='\0';i++)
{
if(str[i]>='A'&&str[i]<='Z')
a[0]++;
elseif(str[i]>='a'&&str[i]<='z')
a[1]++;
elseif(str[i]>='0'&&str[i]<='9')
a[2]++;
else
a[3]++;
}
for(i=0;i<4;i++)
printf("%s:
%d\n",name[i],a[i]);
}
运行结果:
输入一个字符串:
ahjYTBJ^%655@#21
Upper:
4;
Lower:
3;
Digit:
5;
Other:
4;
12
【分析】本题有两个关键:
一是要找到插入的位置,二是要将插入的位置及以后的元素向后平移一个元素,最后才能在插入的位置插入概述,程序如下。
voidmain()
{
inta[11]={3,5,8,11,15,19,23,26,33},i,j,x;/*定义数组预留一个插入位置*/
printf("输入一个数:
");
scanf("%d",&x);
for(i=0;i<10;i++)
if(a[i]>x)
break;
for(j=9;j>=i;j--)
a[j+1]=a[j];
a[i]=x;
for(i=0;i<11,i++)
printf("%3d",a[i]);
printf("\n");
}
运行结果:
输入一个数:
18
3581115161819232633
13
【分析】两个矩阵的乘积必须满足条件:
第一个矩阵的列数要等于第二个矩阵的行数,乘积矩阵元计算公式为
程序如下。
#include
#definem3;
#definen4;
#definep5;
voidmain()
{
inta[m][n]={1,2,3,4,5,6,7,8,9,10,11,12};
intb[n][p]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
intc[m][p],i,j,k;
printf("C=\n");
for(i=0;i{
for(j=0;j
{
c[i][j]=0;
for(k=0;kc[i][j]+=a[i][k]*b[k][j];
printf("%-7d",c[i][j]);
}
printf("\n");
}
}
运行结果:
C=
110120130140150
246272298324350
382424466508550
14
#include
voidmain()
{
charstr1[20],str2[20];
inti=0;
printf("输入第二个字符串:
\n");
gets(str2);
while((str1[i]=str2[i])!
='\0')
i++;
printf("第一个字符串是:
\n");
puts(str1);
}
运行结果:
输入第二个字符串:
ABCDEFG
第一个字符串是:
ABCDEFG
15
源程序:
/*计算字符串的有效长度*/
#include
intmain(void)
{
inti=0,len;
charstr[80]="Happy";//用字符串常量个初始化字符数组
/*计算字符串的有效长度*/
for(i=0;str[i]!
='\0';i++)//循环条件:
str[i]!
='\0'
;//for的循环体语句为空
len=i;
printf("len=%d\n",len);
for(i=0;str[i]!
='\0';i++)
putchar(str[i]);
return0;
}
运行结果:
Len=5
Happy