high=mid-1;
else
{
found=1;
break;
}
}
if(found==1)
printf("SearchSuccessful!
Theindexis:
%d\n",mid);
else
printf("Cannotserach!
\n");
6\
运行结果
6、
#include"stdio.h"
inta=1,b=2;
main()
{
inti,a=2;
for(i=0;i<2;i++)
printf("%d,",f(a));
printf(“%d\n",a+b);
}
intf(inta)
}
intb=1;
staticc=2;
b++;c++;
return(a+b+c);
}
运行结果
7、
#include"stdio.h"
main()
{
staticchara[]=”language”,b[]="pargram";
char*p1,*p2;
intk;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(pl+k)==*(p2+k)!
='\0')
printf(“%c”,*(pl+k));
}
运行结果
8、
#include"stdio.h"
#defineM5
main()
{
inta[M]={1,2,3,4,5};
inti,j,k;
i=0;
j=M-1;
while(i{
t=*(a+i);
*(a+i)=*(a+j);
*(a+j)=t;
i++;
j--;
}
for(i=0;iprintf(“%d”,*(a+i));
}
运行结果
9、
#include"stdio.h"
structs
{
intx;
charc;
};
main()
{f(structs);
structsa={10,’@’};
if(a);
printf(“%d,%c”,a.x,a.c);
}
f(structsb)
{
b.x=20;
b.c=’y’;
}
运行结果
10、
#include"stdio.h"
intf(inta[][4],intm)
{
inti,j,k;
k=0;
for(i=0;i<3;i++)for(j=0;j<4;j++)
if(a[i][j]k=k+a[i][j];
return(k);
}
main()
{
staticinta[3][4]={{1,13,5,7},{2,1,26,18},{10,1,3,12}};
inti,j,m;
m=10;
printf(“%d”,f(a,m));
}
运行结果
四、完善程序题
1、下面程序接受从键盘输入的数据a,b,按从小到大顺序输出,输入数据相等时执行结束。
#include"stdio.h"
main()
{inta,b,t;
do
{;
if(a>b)
{
t=a;
a=b;
b=t;
}
printf(“%d,%d\n”,a,b);
}while(a!
=b);
}
2、等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项之和小于100的最大n。
#include"stdio.h"
main()
{inta,q,n,s;
a=1;q=2;n=s=0;
do
{
s+=a;
n++;
a*=q;
}while(s<100);
printf(“%d\n”,n);
}
3、下面程序的功能是将从键盘输入的偶数写成两个素数之和。
#include"stdio.h"
#include"math.h"
main()
{inta,b,c,d;
scanf(“%d”,&a);
for(b=3;b<=a/2;b+=2)
{
for(c=2;c<=sqrt(b);c++)
if(b%c==0)break;
if(c>sqrt(b))d=a-b;
elsebreak;
for(c=2;c<=sqrt(d);c++)
if(d%c==0)break;
if()
printf(“%d=%d+%d\n”,a,b,d);
}
}
4、下面程序的功能是根据公式e=1+1/1!
+1/2!
+1/3!
+……计算e的近似值,精确度要求是10-6。
#include"stdio.h"
main()
{inti;
doublee,new;
;
new=1.0;
for(i=1;new>=1e-6;i++)
{new/=(double)i;
e+=new;
}
printf(“e=%f\n”,e);
}
5、下面程序的功能是检查一个二维数组是否对称。
(对所有i和j,都有a[i][j]与a[j][i]相等)。
#include"stdio.h"
main()
{inta[4][4]={1,2,3,4,2,2,5,6,3,5,3,7,4,6,7,4};
inti,j,found=1;
for(j=0;j<4;j++)
for(i=j+1;i<4;i++)
if(a[j][i]!
=a[i][j])
{;
break;
}
if(!
found)printf(“No”);
elseprintf(“Yes”);
}
6、下面程序的功能是计算函数F(x,y,z)=(x+y)*(x+y)+(z+y)*(z-y)的值并输出。
#include"stdio.h"
#include"math.h"
floatf(float,float);
main()
{floatx,y,z,sum;
scanf(“%f%f%f”,&x,&y&z);
sum=;
printf(“sum=%f\n”,sum);
}
floatf(floata,floatb)
{
return(a*b);
}
7、下面程序把从键盘读入的一个十进制整数转换成二进制数,并把二进制数(倒序)的每一位放在一维数组中输出。
#include"stdio.h"
#include"string.h"
main()
{chars[81],*p1,*p2;
intn;
gets(s);
n=strlen(s);
p1=s;
p2=s+n-1;
while(p1{if(*p1!
=*p2)
break;
else
{p1++;
p2--;
}
}
if()
printf(“No\n”);
else
printf(“Yes\n”);
}
8、下面程序把从键盘读入的一个十进制整数转换成二进制数,并把二进制数(倒序)的每一位放在一维数组中输出。
#include"stdio.h"
main()
{intb[16],x,k,r,i;
scanf(“%d”,&x);
k=-1;
do
{
r=x%2;
k++;
*(b+k)=r;
x=x/2;
}while();
for(i=k;i>=0;i--)
printf(“%d”,b+i);
printf(“\n”);
}
9、下面程序可逐行输出数组中的5个字符串。
#include"stdio.h"
main()
{char*s[]={“man”,”woman”,”girl”,”boy”,”sister”};
char**q;
intk;
for(k=0;k<5;k++)
{
;
printf(“%s\n”,*q);
}
}
10、下面程序完成a,b值的交换。
#include"stdio.h"
main()
{voidswap();
inta=2,b=3;
int*p1,*p2;
p1=&a;
p2=&b;
;
printf(“%d,%d”,*p1,*p2);
printf(“%d,%d”,a,b);
}
voidswap(int*p1,int*p2)
{
intp;
p=*p1;
*p1=*p2;
*p2=p;
}
11、下面程序输出三人中最年长者的姓名和年龄。
#defineN3
#include“stdio.h”
staticstructman
{charname[20];
intage;
}person[N]={“li”,18,”wang”,19,”zhang”,20};
main()
{structman*p,*q;
inti,m=0;
p=person;
for(i=0;i{if(mage)
;
m=q->age;}
printf(“%s,%d,”,(*q).name,(*q).age);
}
12、猴子吃桃。
猴子第一天摘下若干个桃子,当即吃了一半,又多吃了一个;第二天又将剩下的桃子吃掉一半,又多吃一个;以后每天如此。
到第10天想吃时只剩下一个桃子。
下面程序求第一天共摘多少个桃子。
#include“stdio.h”
main()
{intday=9,x1,x2=1;
while(day>0)
{x1=(x2+1)*2;
x2=x1;
;
}
printf(“%d\n”,x1);
}
13、下面程序中的数组a从第二项开始分别将后项减前项之差存入数组b并输出。
#include“stdio.h”
main()
{inta[10],b[10];
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
for()
;
for(i=0;i<10;i++)
printf(“%d\n”,b[i]);
}
扫描二维码立即获取答案