c语言课后答案_大学c语言课后答案

2020-02-28 其他范文 下载本文

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 –

《c语言课后答案.docx》
将本文的Word文档下载,方便收藏和打印
推荐度:
c语言课后答案
点击下载文档
相关专题 大学c语言课后答案 课后 答案 语言 大学c语言课后答案 课后 答案 语言
[其他范文]相关推荐
    [其他范文]热门文章
      下载全文