实验七 数组与字符串Word格式文档下载.docx
《实验七 数组与字符串Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验七 数组与字符串Word格式文档下载.docx(16页珍藏版)》请在冰豆网上搜索。
![实验七 数组与字符串Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-1/22/240a6d1e-a5f6-49ef-9f5d-43044118badc/240a6d1e-a5f6-49ef-9f5d-43044118badc1.gif)
inta[10][10],i,j,sum=0;
{
for(j=0;
j<
j++)
{
a[i][j]=i+j;
printf("
%4d"
a[i][j]);
//显示各元素
}
putchar('
\n'
);
}
sum=sum+a[i][i]+a[i][9-i];
//计算两对角线上元素的累加和
printf("
sum=%d\n"
sum);
3,
voidfunc(inta[],intn)
inti;
n;
a[i]=a[i]+a[n-i-1];
intc[10],i;
c[i]=2*i+1;
c[i]);
putchar('
func(c,10);
4.调试下面程序,使之具有如下功能:
从键盘输入10个数,然后按从大到小的顺序输出.
stdlib.h>
time.h>
intmain()
inta[10],i,j,temp,k;
srand((unsigned)time(NULL));
//初始化rand()函数
a[i]=rand()%100;
//用随机数为数组元素赋值
Beforesorted:
\n"
%d"
9;
i++)//选择法排序
k=i;
for(j=i+1;
j++)//讲议(p53)有误
if(a[k]<
a[j])k=j;
temp=a[i];
a[i]=a[k];
a[k]=temp;
}
Aftersorted:
return0;
5.任意输入两个字符串,并存放在a,b两个数组中,然后把短串存入a数组,长串存入b数组。
string.h>
chara[10],b[10],ch;
intc,d,k;
scanf("
%s"
a);
b);
a=%s\nb=%s\n"
a,b);
c=strlen(a);
d=strlen(b);
if(c>
d)
=c;
ch=a[k];
a[k]=b[k];
b[k]=ch;
6.调试下面程序,使之具有如下功能:
删除字符串s中的空格.
chars[]="
ChongqingJiaotongUniversity"
;
inti,j=0;
s[i]!
='
\0'
i++)//讲议(p54)有误
if(s[i]!
'
)
s[j++]=s[i];
s[j]='
puts(s);
7.输出整型数组中的素数和素数之和。
intisprime(intn)
inti,flag=1;
for(i=2;
if(n%i==0)flag=0;
returnflag;
ints[]={3,5,7,9,11,13,15,17,19},i;
intsum=0;
sizeof(s)/sizeof(int);
if(isprime(s[i]))
s[i]);
sum=sum+s[i];
\n%d\n"
8.下面程序的功能:
输入10个字符串,找出每个字符串的最大字符,并依次存入一维数组中,然后输出该一维数组.请填空完成程序.
charstr[5][80],str1[11];
inti,j,k;
5;
gets(str[i]);
;
//k=i;
str1[k]=str[i][0];
str[i][j]!
if(str1[k]<
str[i][j])
;
//str1[k]=str[i][j];
;
//str1[i]='
puts(str1);
9.在主函数中读入一字符串,再读入一字符串,然后调用函数delete在字符串中查找并删除该字符,最后输出该字符串.请填空完善程序.
voiddlt(charp[],charch)
inti=0,j;
while()//p[i]!
if(p[i]==ch)
for(j=i;
=;
j++)//(int)strlen(p)
p[j]=p[j+1];
//讲议中j误为i
else
i++;
charp[80],ch;
inti=0;
Inputacharacter:
//为正常运行本程序应先输入单个字符
ch=getchar();
Inputastring:
p);
dlt(p,ch);
puts(p);
}
注:
函数可以用6题的方法实现:
inti=0,j=0;
while(p[i])
if(p[i]!
=ch)
p[j++]=p[i];
i++;
p[j]='
10.编写程序将键盘输入的20个整数按从小到大进行排序,并输出排序前、后的数据。
要求:
数据输入、输出和排序分别用函数完成;
在主函数中分别调用数据输入函数、数据输出函数和排序函数。
voidsort(intp[],intn)//排序
inti,k,j,t;
n-1;
if(p[k]>
p[j])k=j;
t=p[i];
p[i]=p[k];
p[k]=t;
voidinput(intp[],intn)//数据输入
p[i]=rand()%100;
voidoutput(intp[],intn)//数据输出
p[i]);
inta[10];
input(a,10);
output(a,10);
sort(a,10);
11.输入5*5的数组,编写程序实现:
求出对角线上各元素的和;
求出对角线上行、列下标均为偶数的各元素的积;
找出对角线上其最大的元素和它在数组中的位置。
inti,j,q,s=0;
inta[5][5];
a[i][j]=rand()%100;
%3d"
i++)s+=a[i][i];
s=%d\n"
s);
//输出对角线各元素之和
s=1;
i+=2)s*=a[i][i];
//输出对角线上偶数下标元素之积
s=a[0][0];
q=0;
for(i=1;
if(s<
a[i][i])
s=a[i][i];
q=i;
%d,%d:
max=%d\n"
q,q,s);
12.已知A是一个3*4矩阵,B是一个4*5矩阵,编写程序,从键盘输入矩阵A、B的值,求C=A*B,并输出矩阵C。
inta[3][4],b[4][5],c[3][5]={0};
3;
i++)//初始化A矩阵
4;
a[i][j]=rand()%10;
i++)//初始化B矩阵
b[i][j]=rand()%10;
b[i][j]);
for(k=0;
c[i][j]+=a[i][k]*b[k][j];
i++)//输出C矩阵
%5d"
c[i][j]);
}
13.设某班有20个学生,每个学生选修了三门课,编写程序,输入20个学生三门课的成绩,计算每个学生的平均成绩,最后输出每个学生三门课的成绩及平均成绩.
doubles[20][4];
inti,j,ss;
doubleav;
srand((unsigned)time(NULL));
20;
av=0;
s[i][j]=((ss=rand()%100)>
40?
ss:
ss+40);
//随机数作为成绩
av+=s[i][j];
s[i][3]=av/3;
%6.2lf"
s[i][j]);
14.编写程序找出一个二维数组的鞍点,即该位置上的元素在该行上最大,在该列小最小.一个二维数组也可以没有鞍点.并用下面的两组数据进行测试.
98020540
90-60961
210-310189
90-601961
45541567
voidf(inta[][4],intn)//找鞍点函数
inti,j,k,max,flg,m=0;
max=a[i][0],k=0;
j++)//找某行的最大值
if(max<
a[i][j])
{
max=a[i][j];
k=j;
}
flg=1;
//鞍点标致
j++)//测试max是否是k列的最小值
if(max>
a[j][k])
flg=0;
//不是标致置0
break;
if(flg)
i,k,a[i][k]);
//输出i行k列的鞍点
m++;
if(m==0)
NoA_point\n"
inti,j;
inta[3][4],b[4][4];
b[i][j]=rand()%100;
f(a,3);
f(b,4);