printf("%d",a[i]);
printf("\n");
}
【题7.39】编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出nofound。
/*lx7_3.c*/
#include"stdio.h"
#defineN10
voidmain()
{inta[N];
intnum,i;
charch='n';
printf("请输入一个数组:
\n");
for(i=0;iscanf("%d",&a[i]);
printf("输出数组:
\n");
for(i=0;iprintf("%d",a[i]);
printf("\n");
printf("请输入一个数\n");
scanf("%d",&num);
printf("开始查找\n");
for(i=0;iif(num==a[i])
{ch='y';
printf("%d在数组的第%d位\n",num,i+1);
}
if(ch=='n')
printf("nofound\n");
}
【题7.40】若有说明:
inta[2][3]={{1,2,3},{4,5,6}};,现要将a的行和列的元素互换后存到另一个二维数组b中,试编程。
/*lx7_4.c*/
#include"stdio.h"
voidmain()
{inta[2][3]={{1,2,3},{4,5,6}},b[3][2];
inti,j;
for(i=0;i<2;i++)
{for(j=0;j<3;j++)
printf("%d\t",a[i][j]);
printf("\n");
}
for(i=0;i<2;i++)
for(j=0;j<3;j++)
b[j][i]=a[i][j];
for(i=0;i<3;i++)
{for(j=0;j<2;j++)
printf("%d\t",b[i][j]);
printf("\n");
}
}
【题7.41】定义一个含有30个整数的数组,按顺序分别赋予从2开始的偶数,然后按顺序每五个数求出一个平均值,放在另一个数组中并输出,试编程。
/*lx7_5.c*/
#include"stdio.h"
#defineN30
#defineM5
voidmain()
{inta[N],sum[N/M];
floats;
inti,j,k=0;
for(i=0;i{a[i]=2*(i+1);
printf("%d\t",a[i]);
}
printf("\n");
for(i=0;i{s=0;
for(j=i;j
s=s+a[j];
sum[k++]=s/M;
}
for(i=0;iprintf("%d\t",sum[i]);
}
【题7.42】编写程序,在5行7列的二维数组中查找第一次出现的负数。
/*lx7_6.c*/
#include"stdio.h"
voidmain()
{inti,j,a[5][7];
printf("请输入一个二维数组\n");
for(i=0;i<5;i++)
for(j=0;j<7;j++)
scanf("%d",&a[i][j]);
printf("\n");
for(i=0;i<5;i++)
for(j=0;j<7;j++)
if(a[i][j]<0)
{printf("第一次出现的负数被找到!
负数值是%d\n",a[i][j]);
gotoend1;
}
end1:
;
}
【题7.43】从键盘上输入60个字符,求相邻字母对(如ab)出现的频率。
/*lx7_7.c*/
#include"stdio.h"
#include"string.h"
#defineN60
voidmain()
{inti,len;
charch[N];
floatp,m=0;
printf("请输入一个字符串:
\n");
scanf("%s",ch);
len=strlen(ch);
for(i=0;ch[i]!
='\0'&&iif(ch[i]==ch[i+1]+1||ch[i]+1==ch[i+1])
m++;
p=m/len;
printf("相邻字母对出现的频率是%f\n",p);
}
【题7.44】编写程序,定义数组inta[4][6],b[4][6],c[4][6],并完成如下操作:
(1)从键盘上输入数据给数组a、b。
(2)将数组a与数组b各对应元素作比较,如果相等,则数组c的对应元素为0,若前者大于后者,则数组c的对应元素为1;若前者小于后者,则数组c的对应元素为−1。
(3)输出数组c各元素的值。
/*lx7_8.c*/
#include"stdio.h"
voidmain()
{inti,j;
inta[4][6],b[4][6],c[4][6];
for(i=0;i<4;i++)
for(j=0;j<6;j++)
scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
for(j=0;j<6;j++)
scanf("%d",&b[i][j]);
for(i=0;i<4;i++)
for(j=0;j<6;j++)
if(a[i][j]==b[i][j])
c[i][j]=0;
elseif(a[i][j]>b[i][j])
c[i][j]=1;
else
c[i][j]=-1;
for(i=0;i<4;i++)
{for(j=0;j<6;j++)
printf("%d\t",c[i][j]);
printf("\n");
}
}
【题7.45】编写程序,从键盘上输入两个字符串a和b,要求不用strcat()函数把串b的前五个字符连接到串a中,如果b的长度小于5,则把b的所有元素都连接到a中。
/*lx7_9.c*/
#include"stdio.h"
#include"string.h"
#defineN80
voidmain()
{chara[N],b[N];
inti,j,lena,lenb;
printf("Pleaseinputfirststring:
");
scanf("%s",a);
printf("Pleaseinputsecondstring:
");
scanf("%s",b);
lena=strlen(a);
lenb=strlen(b);
if(lenb<=5)
{for(i=lena,j=0;ia[i]=b[j++];
a[i]='\0';
}
else
{for(i=lena,j=0;j<5;j++)
a[i++]=b[j];
a[i]='\0';
}
printf("Outputfirststring:
");
printf("%s\n",a);
}
【题7.46】编写函数,从一个排好序的整型数组中删去某数。
/*lx7_10.c*/
#defineN10
#include"stdio.h"
intdele(intstr[],inty)
{inti,j,p=0;
for(i=0;iif(str[i]==y)
{j=i;p=1;break;}
if(p==1)
for(;j<=N-1;j++)
str[j]=str[j+1];
returnp;
}
voidmain()
{inti,j,t,a[N],x;
printf("Inputanarray:
\n");
for(i=0;iscanf("%d",&a[i]);
for(i=0;ifor(j=i;jif(a[i]>a[j])
{t=a[i],a[i]=a[j],a[j]=t;}
printf("Inputadata:
");
scanf("%d",&x);
if(dele(a,x))
for(i=0;iprintf("%d",a[i]);
else
printf("nodelete\n");
}
【题7.47】编写函数,它将无符号整数转换成二进制字符表示。
/*lx7_11.c*/
#include"stdio.h"
voiddtob(unsignedm)
{charstr[17];
inti,n;
n=m;
for(i=15;i>=0;i--)
{if(m%2==1)
str[i]='1';
else
str[i]='0';
m=m/2;
}
str[16]='\0';
printf("n=%d\t%s\n",n,str);
}
voidmain()
{unsignednum;
printf("Pleaseinputainteger:
");
scanf("%d",&num);
dtob(num);
}
【题7.48】编写函数lower()模拟标准函数strlwr(),调用形式为lower(char*st),其作用是将字符串st中的大写字母转换成小写。
/*lx7_12.c*/
#include"stdio.h"
#defineN20
voidlower(char*st)
{inti=0;
while(st[i]!
='\0')
{if(st[i]>'A'&&st[i]<='Z')
st[i]+=32;
i++;
}
}
voidmain()
{chars[N];
printf("Inputastring:
\n");
scanf("%s",s);
lower(s);
printf("Output:
%s\n",s);
}
【题7.49】编写函数replicate()模拟标准函数strset(),调用形式为replicate(char*st,charch),其作用是将字符串st中的所有字符设置成ch。
/*lx7_13.c*/
#include"stdio.h"
#defineN20
voidreplicate(char*st,charch)
{inti=0;
while(st[i]!
='\0')
st[i++]=ch;
}
voidmain()
{chars[N],ch;
printf("Inputastring:
");
scanf("%s",s);
ch='a';
replicate(s,ch);
printf("\nOutput:
%s\n",s);
}
【题7.50】编写函数reverse()模拟标准函数strrev(),调用形式为reverse(char*st),其作用是颠倒字符串st的顺序,即按与原来相反的顺序排列。
/*lx7_14.c*/
#include"stdio.h"
#include"string.h"
voidreverse(char*st)
{inti=0,n;
chart;
n=strlen(st);
for(;i{t=st[i];
st[i]=st[n-i-1];
st[n-i-1]=t;
}
}
voidmain()
{chars[80];
printf("Inputastring\n");
scanf("%s",s);
reverse(s);
printf("Output:
%s\n",s);
}