以下程序教材基于 谭浩强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列。
/*找出二维数组中的鞍点,规定二维数组大小为3行4列*/
# 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;
}