从小到大*/
printf("pleaseenterthenumbertobelocated:
");
scanf("%d",&k);/*输入要查找的数据*/
h=0;t=n-1;
while(t>=h)
{mid=(h+t)/2;
if(a[mid]==k){point=mid;break;}
elseif(a[mid]>k)h=mid+1;
elset=mid-1;}
if(h<=t)
printf("Theindexofdatais:
",point+1);
else
printf("Thedataisnotinthearray!
");
}
二维数组:
11、有一个4×4的矩阵,编程将行和列的元素互换,输出互换后的矩阵。
main()
{inta[4][4],i,j,t;
for(i=0;i<4;i++)
for(j=0;j<4;j++)scanf("%d",&a[i][j]);
printf("outputarraya:
beforechange:
\n");
for(i=0;i<4;i++)
{for(j=0;j<4;j++)printf("%5d",a[i][j]);
printf("\n");}
for(i=0;i<4;i++)
for(j=0;j
{t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;}
printf("outputarraya:
afterchange:
\n");
for(i=0;i<4;i++)
{for(j=0;j<4;j++)printf("%5d",a[i][j]);
printf("\n");}
}
12、初始化一个4×4矩阵,结果如下:
100-1
01-10
0-110
-1001
即主对角线元素值为1,副对角线元素值为-1,其余元素为零。
main()
{inta[4][4],i,j;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
if(i==j)a[i][j]=1;
elseif(i+j==3)a[i][j]=-1;
elsea[i][j]=0;
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
printf("%5d",a[i][j]);
printf("\n");}
}
13、假如数组a有4行4列的整数,请输出每行的最大者。
main()
{inta[4][4],i,j,max;
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
printf("outputarraya:
\n");
for(i=0;i<4;i++)
{for(j=0;j<4;j++)
printf("%5d",a[i][j]);
printf("\n");}
for(i=0;i<4;i++)
{max=a[i][0];
for(j=1;j<4;j++)
if(a[i][j]>max)max=a[i][j];
printf("maxofline%dis%d\n",i+1,max);}
}
14、使用上述数组,计算每行的平均值,保留2位小数。
main()
{inta[4][4],i,j,s;
floatave;
for(i=0;i<4;i++)
{s=0;
for(j=0;j<4;j++)
{scanf("%d",&a[i][j]);
s=s+a[i][j];}
ave=s*1.0/4;
printf("averofline%dis%.2f\n",i+1,ave);}
}
字符数组:
15、P153习题7.3,7.6,7.8,7.10。
(见习题解答)
用户从键盘输入一个字符串(不包含空格),当输入回车时认为输入结束,统计输入字符串中小写英文字母、大写英文字母、数字字符、其他字符的个数。
#include"stdio.h"
main()
{chara[80],i,c1=0,c2=0,c3=0,c4=0;
gets(a);i=0;
while(a[i]!
='\0')
{if(a[i]>='a'&&a[i]<='z')c1+=1;
elseif(a[i]>='A'&&a[i]<='Z')c2+=1;
elseif(a[i]>='0'&&a[i]<='9')c3+=1;
elsec4+=1;
i++;}
printf("numberoflowerlettersare:
%d\n",c1);
printf("numberofupperlettersare:
%d\n",c2);
printf("numberofdigitare:
%d\n",c3);
printf("numberofotherlettersare:
%d\n",c4);
}
16、将字符串s1从第m个字符开始剩余的所有字符,送入字符数组s2中。
#include"stdio.h"
main()
{chars1[80],s2[80],i,j,m;
gets(s1);
scanf("%d",&m);
i=m-1;j=0;
while(s1[i]!
='\0')
{s2[j]=s1[i];
j++;i++;}
s2[j]='\0';
puts(s1);
puts(s2);
}
17、输入两个字符串,比较大小。
#include"stdio.h"
main()
{chars1[80],s2[80],i;
gets(s1);gets(s2);
i=0;
while(s1[i]==s2[i]&&s1[i]!
='\0'&&s2[i]!
='\0')
i++;
if(s1[i]elseif(s1[i]>s2[i])printf("s1>s2\n");
elseprintf("s1=s2\n");
}
18、输入一个字符串,将其中的小写字母转换成大写字母,输出转换后的字符串。
#include"stdio.h"
main()
{chars[80],i;
gets(s);
i=0;
while(s[i]!
='\0')
{if(s[i]>='a'&&s[i]<='z')
s[i]=s[i]-32;
i++;}
puts(s);
}
19、输入一个字符串,删除其中的空格后输出。
#include"stdio.h"
#include"string.h"
main()
{chars[80],i,j,length;
gets(s);
length=strlen(s);
i=0;
while(i{if(s[i]=='')
{for(j=i;js[j]=s[j+1];
s[length-1]='\0';
length-=1;}
i++;}
puts(s);
}
20、输入一行字符,统计其中有多少个单词,单词之间用空格分隔。
#include"stdio.h"
main()
{chars[80],i,num;
gets(s);i=0;num=0;
while(s[i]!
='\0')
{if(i==0&&s[i]!
='')num=num+1;
elseif(s[i]==''&&s[i+1]!
=''&&s[i+1]!
='\0')
{num+=1;}
i++;}
printf("%d\n",num);
}
21、P154习题7.15。
参见习题解答。