c语言课后答案_大学c语言课后答案
c语言课后答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“大学c语言课后答案”。
第7章
数组习题解答
一、在以下每一题的四个选项中,请选择一个正确的答案。【题7.1】 C 【题7.2】 D 【题7.3】 D 【题7.4】 D 【题7.5】 C 【题7.6】 C 【题7.7】 C 【题7.8】 C 【题7.9】 B 【题7.10】 B
二、判断下列各叙述的正确性,若正确在()内标记√,若错误在(【题7.11】 √ 【题7.12】 √ 【题7.13】 × 【题7.14】 × 【题7.15】 √ 【题7.16】 × 【题7.17】 × 【题7.18】 × 【题7.19】 √ 【题7.20】 ×
三、填空。请在下面各叙述的空白处填入合适的内容。【题7.21】 字符数组 【题7.22】 0 【题7.23】 4 【题7.24】 按行的顺序存放 【题7.25】 48 【题7.26】 strcat()【题7.27】 6 【题7.28】 10 【题7.29】 strcmp()
×。– 1 –)内标记 C语言程序设计教程实验指导与习题解答
【题7.30】 #include
四、阅读下面的程序,写出程序运行结果。【题7.31】 abcdefg
abcdef
abcde
abcd
abc
ab
a 【题7.32】 1 1
1
1
1 【题7.33】 a[2]*b[1]=2
a[4]*b[4]=16
a[6]*b[7]=42 【题7.34】 10 1 2 3 4 5 6 7 8 9
五、程序填空。请在下面程序空白处填入合适的语句。【题7.35】 a[j++]=a[i] 【题7.36】 array[i]>array[j]
六、编程。对下面的问题编写程序并上机验证。
【题7.37】 编写程序,用冒泡法对20个整数排序(按升序排序)。
/*lx7_1.c*/ #include “stdio.h” #define N 20 void main(){
int data[N];
int i,j,t;
printf(“请输入 %d 个整数:n”,N);
for(i=0;i
scanf(“%d”,&data[i]);
printf(“n”);
for(i=0;i
for(j=0;j
if(data[i]>data[j])
{
t=data[i];data[i]=data[j];data[j]=t;} – 2 – 第一部分 习题解答
printf(“排序后的输出为:n”);
for(i=0;i
printf(“%d ”,data[i]);} 【题7.38】 编写程序,将一个数插入到有序的数列中去,插入后的数列仍然有序。
/*lx7_2.c*/ #include “stdio.h” #define N 5 void main(){
int a[N+1];
int i,j,t,num;
printf(“请输入 %d 个整数:n”,N);
for(i=0;i
scanf(“%d”,&a[i]);
printf(“n”);
for(i=0;i
for(j=i+1;j
if(a[i]>a[j])
{ t=a[i];a[i]=a[j];a[j]=t;}
printf(“第一次输出:n”);
for(i=0;i
printf(“%d ”,a[i]);
printf(“n”);
printf(“请输入一个数:”);
scanf(“%d”,&num);
if(num>=a[N-1])
a[N]=num;
else if(num
{
for(i=N-1;i>=0;i--)
a[i+1]=a[i];
a[0]=num;
}
else
for(i=N-1;i>=0;i--)
if(a[i]>num)
a[i+1]=a[i];
else
{
a[i+1]=num;
break;
– 3 – C语言程序设计教程实验指导与习题解答
}
printf(“第二次输出:n”);
for(i=0;i
printf(“%d ”,a[i]);
printf(“n”);} 【题7.39】 编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found。
/*lx7_3.c*/ #include “stdio.h” #define N 10 void main(){
int a[N];
int num,i;
char ch='n';
printf(“请输入一个数组:n”);
for(i=0;i
scanf(“%d”,&a[i]);
printf(“输出数组:n”);
for(i=0;i
printf(“%d ”,a[i]);
printf(“n”);
printf(“请输入一个数n”);
scanf(“%d”,&num);
printf(“开始查找n”);
for(i=0;i
if(num= =a[i])
{
ch='y';
printf(“%d 在数组的第 %d 位n”,num,i+1);
}
if(ch= ='n')
printf(“no foundn”);} 【题7.40】 若有说明:int a[2][3]={{1,2,3},{4,5,6}};,现要将a的行和列的元素互换后存到另一个二维数组b中,试编程。
/*lx7_4.c*/ #include “stdio.h” void main(){
int a[2][3]={{1,2,3},{4,5,6}},b[3][2];– 4 – 第一部分 习题解答
int i,j;
for(i=0;i
{ for(j=0;j
printf(“%dt”,a[i][j]);
printf(“n”);
}
for(i=0;i
for(j=0;j
b[j][i]=a[i][j];
for(i=0;i
{
for(j=0;j
printf(“%dt”,b[i][j]);
printf(“n”);
} } 【题7.41】 定义一个含有30个整数的数组,按顺序分别赋予从2开始的偶数,然后按顺序每五个数求出一个平均值,放在另一个数组中并输出,试编程。
/*lx7_5.c*/ #include “stdio.h” #define N 30 #define M 5 void main(){
int a[N],sum[N/M];
float s;
int i,j,k=0;
for(i=0;i
{ a[i]=2*(i+1);
printf(“%dt”,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;i
printf(“%dt”,sum[i]);}
– 5 – C语言程序设计教程实验指导与习题解答
【题7.42】 编写程序,在5行7列的二维数组中查找第一次出现的负数。
/*lx7_6.c*/ #include “stdio.h” void main(){
int i,j,a[5][7];
printf(“请输入一个二维数组n”);
for(i=0;i
for(j=0;j
scanf(“%d”,&a[i][j]);
printf(“n”);
for(i=0;i
for(j=0;j
if(a[i][j]
{
printf(“第一次出现的负数被找到!,负数值是%dn”,a[i][j]);
goto end1;
}
end1:
;} 【题7.43】 从键盘上输入60个字符,求相邻字母对(如ab)出现的频率。
/*lx7_7.c*/ #include “stdio.h” #include “string.h” #define N 60 void main(){
int i, len;
char ch[N];
float p,m=0;
printf(“请输入一个字符串:n”);
scanf(“%s”,ch);
len=strlen(ch);
for(i=0;ch[i]!=' ' && i
if(ch[i]= =ch[i+1]+1 || ch[i]+1= =ch[i+1])
m++;
p=m/len;
printf(“相邻字母对出现的频率是 %fn”,p);} 【题7.44】 编写程序,定义数组int a[4][6], b[4][6], c[4][6],并完成如下操作:(1)从键盘上输入数据给数组a、b。
(2)将数组a与数组b各对应元素作比较,如果相等,则数组c的对应元素为0,若前– 6 – 第一部分 习题解答
者大于后者,则数组c的对应元素为1;若前者小于后者,则数组c的对应元素为−1。
(3)输出数组c各元素的值。
/*lx7_8.c*/ #include “stdio.h” void main(){
int i,j;
int a[4][6],b[4][6],c[4][6];
for(i=0;i
for(j=0;j
scanf(“%d”,&a[i][j]);
for(i=0;i
for(j=0;j
scanf(“%d”,&b[i][j]);
for(i=0;i
for(j=0;j
if(a[i][j]==b[i][j])
c[i][j]=0;
else if(a[i][j]>b[i][j])
c[i][j]=1;
else
c[i][j]=-1;
for(i=0;i
{ for(j=0;j
printf(“%dt”,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” #define N 80 void main(){
char a[N],b[N];
int i,j,lena,lenb;
printf(“Please input first string:”);
scanf(“%s”,a);
printf(“Please input second string:”);
– 7 – C语言程序设计教程实验指导与习题解答
scanf(“%s”,b);
lena=strlen(a);
lenb=strlen(b);
if(lenb
{ for(i=lena,j=0;i
a[i]=b[j++];
a[i]=' ';
}
else
{ for(i=lena,j=0;j
a[i++]=b[j];
a[i]=' ';
}
printf(“Output first string:”);
printf(“%sn”,a);} 【题7.46】 编写函数,从一个排好序的整型数组中删去某数。
/*lx7_10.c*/ #define N 10 #include “stdio.h” int dele(int str[ ],int y){
int i, j, p=0;
for(i=0;i
if(str[i]= =y)
{ j=i;p=1;break;}
if(p= =1)
for(;j
str[j]=str[j+1];
return p;} void main(){
int i, j, t, a[N], x;
printf(“Input an array:n”);
for(i=0;i
scanf(“%d”,&a[i]);
for(i=0;i
for(j=i;j
if(a[i]>a[j])
{ t=a[i],a[i]=a[j],a[j]=t;} – 8 – 第一部分 习题解答
printf(“Input a data:”);
scanf(“%d”,&x);
if(dele(a,x))
for(i=0;i
printf(“%d ”,a[i]);
else
printf(“no deleten”);}
【题7.47】 编写函数,它将无符号整数转换成二进制字符表示。
/*lx7_11.c*/ #include “stdio.h” void dtob(unsigned m){
char str[17];
int i,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]=' ';
printf(“n=%dt%sn”,n,str);} void main(){
unsigned num;
printf(“Please input a integer:”);
scanf(“%d”,&num);
dtob(num);} 【题7.48】 编写函数lower()模拟标准函数strlwr(),调用形式为lower(char *st),其作用是将字符串st中的大写字母转换成小写。
/*lx7_12.c*/ #include “stdio.h” #define N 20 void lower(char *st){ int i=0;
while(st[i]!=' ')
– 9 – C语言程序设计教程实验指导与习题解答
{ if(st[i]>'A' && st[i]
st[i]+=32;
i++;
} } void main(){ char s[N];
printf(“Input a string:n”);
scanf(“%s”,s);
lower(s);
printf(“Output: %sn”,s);} 【题7.49】 编写函数replicate()模拟标准函数strset(),调用形式为replicate(char *st,char ch),其作用是将字符串st中的所有字符设置成ch。
/*lx7_13.c*/ #include “stdio.h” #define N 20 void replicate(char *st,char ch){
int i=0;
while(st[i]!=' ')
st[i++]=ch;} void main(){
char s[N],ch;
printf(“Input a string:”);
scanf(“%s”,s);
ch='a';
replicate(s, ch);
printf(“nOutput: %sn”,s);} 【题7.50】 编写函数reverse()模拟标准函数strrev(),调用形式为reverse(char *st),其作用是颠倒字符串st的顺序,即按与原来相反的顺序排列。
/*lx7_14.c*/ #include “stdio.h” #include “string.h” void reverse(char *st){ int i=0,n;
char t;
n=strlen(st);– 10 – 第一部分 习题解答
for(;i
{ t=st[i];
st[i]=st[n-i-1];
st[n-i-1]=t;
} } void main(){ char s[80];
printf(“Input a stringn”);
scanf(“%s”,s);
reverse(s);
printf(“Output: %sn”,s);}
– 11 –