c语言 数组 答案,【第七章 数组】C语言练习题答案

1. 单项选择题

(1)【答】C

(2)【答】B

(3)【答】B

(4)【答】D

(5)【答】D

(6)【答】C

(7)【答】C

(8)【答】C

(9)【答】D

(10)【答】D

(11)【答】C

(12)【答】B

(13)【答】B

(14)【答】C

(15)【答】B

(16)【答】B

(17)【答】D

(18)【答】B

(19)【答】B

2. 填空题

(1)【答】Language

(2)【答】123

(3)【答】s=15

(4)【答】s=45

(5)【答】place=6

(6)【答】a(1,1)=-5

(7)【答】第9个元素(1,3)值是-3

(8)【答】-9是第6个元素

(9)【答】12

(10)【答】①s[j++]=s[i]②s[j]='\0'

3.编程题

(1)编写一个程序,将两个字符串合并成一个字符串。

【解】程序如下:

#include

main()

{

char

s1[20],s2[20],s3[40];

int

i,j;

printf("字符串1:");

gets(s1);

printf("字符串2:");

gets(s2);

for

(i=0;s1[i]!='\0';i++)

s3[i]=s1[i];

for

(j=0;s2[j]!='\0';j++)

s3[i+j]=s2[j];

s3[i+j]='\0';

printf("合并字符串:%s\n",s3);

}

(2)编写一个程序,将一个子字符串插入到主字符串中指定位置。

【解】程序如下:

#include

main()

{

int

n,i,j,k;

char

s1[20],s2[20],s3[40];

printf("主字符串:");

gets(s1);

printf("子字符串:");

gets(s2);

printf("起始位置:");

scanf("%d",&n);

for

(i=0;i

s3[i]=s1[i];

for

(j=0;s2[j]!='\0';j++)

s3[i+j]=s2[j];

printf("i=%d,j=%d\n",i,j);

for

(k=n;s1[k]!='\0';k++)

s3[j+k]=s1[k];

s3[j+k]='\0';

printf("结果字符串:%s\n",s3);

}

(3)编写一个程序,输出一个字符串的逆转串。

【解】程序如下:

#include

main()

{

char

s1[20],s2[20];

int

i,j;

printf("字符串:");

scanf("%s",s1);

for

(i=0;s1[i]!='\0';i++);

for

(j=0;s1[j]!='\0';j++)

s2[i-j-1]=s1[j];

s2[i]='\0';

printf("逆转串:%s\n",s2);

}

(4)编写一个程序,判定一个字符串是否是另一个字符串的子串。

【解】程序如下:

#include

main()

{

int

i,j,k,index;

char

s1[20],s2[20];

printf("主字符串:");

gets(s1);

printf("子字符串:");

gets(s2);

index=0;

for

(i=0;s1[i];i++)

{

for

(j=i,k=0;s1[j]==s2[k];j++,k++)

if (!s2[k+1])

{

index=i;

break;

}

if

(index!=0)

break;

}

printf("位置=%d\n",index);

}

(5)编写一个程序,计算一个字符串中子串出现的次数。

【解】程序如下:

#include

main()

{

int

i,j,k,count=0;

char

s1[20],s2[20];

printf("主字符串:");

gets(s1);

printf("子字符串:");

gets(s2);

for

(i=0;s1[i];i++)

for

(j=i,k=0;s1[j]==s2[k];j++,k++)

if (!s2[k+1])

count++;

printf("出现次数=%d\n",count);

}

(6)编写一个程序,计算一个3×4阶矩阵和一个4×3阶矩阵相乘,并打印出结果。

【解】使用两个二维数组a和b存储两个3×4阶矩阵的元素值,然后用三重for循环进行相乘求值产生二维数组c,最后输出c的各元素值。程序如下:

#include

main()

{

int

a[3][4]={{2,3},{4,2},{1,2,3}};

int

b[4][3]={{1,2,3},{2,3,4},{3,4,5}};

int

c[3][3],i,j,k,s;

for

(i=0;i<3;i++)

for

(j=0;j<3;j++)

{

s=0;

for (k=s=0;k<4;k++)

s+=a[i][k]*b[k][j];

c[i][j]=s;

}

for

(i=0;i<3;i++)

{

for

(j=0;j<3;j++)

printf("M",c[i][j]);

printf("\n");

}

}

(7)已知某班30个学生的姓名、学号,以及英语、程序设计、数学三门课的成绩,编写一个程序,完成下列工作:

·全班每个学生姓名、学号和三门课成绩的输入及总分计算。

·统计各科的总成绩。

·当给出学生姓名或学号时,检索出该生每门功课的成绩及总成绩。

【解】定义一维数组no存储学生学号,二维数组name存储学生姓名,二维数组degree存储学生三门课成绩及总分。程序如下:

#include

#include

#define RS

3 char

name[RS][10]; int

no[RS]; float

degree[RS][4]; void input()

{

int i;

printf("输入数据:\n");

for

(i=1;i<=RS;i++)

{

printf(" 第%d个学生\n",i);

printf(" 姓名:");

scanf("%s",&name[i-1]);

printf(" 学号:");

scanf("%d",&no[i-1]);

printf(" 英语成绩:");

scanf("%f",&degree[i-1][0]);

printf(" 程序设计成绩:");

scanf("%f",&degree[i-1][1]);

printf(" 数学成绩:");

scanf("%f",&degree[i-1][2]);

degree[i-1][3]=degree[i-1][0]+degree[i-1][1]+degree[i-1][2];

}

}

void sum()

{

int i;

float

s1=0,s2=0,s3=0;

printf("\n统计各科总成绩\n");

printf("-------------------------\n");

for

(i=0;i

{

s1+=degree[i][0];

s2+=degree[i][1];

s3+=degree[i][2];

}

printf(" 英语总成绩:%g\n",s1);

printf("程序设计总成绩:%g\n",s2);

printf(" 数学总成绩:%g\n",s3);

printf("--------------------------\n\n");

}

void query()

{

int

sel,bh,i;

char

xm[8];

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值