数组答案.docx

上传人:b****5 文档编号:6654708 上传时间:2023-01-08 格式:DOCX 页数:26 大小:21.77KB
下载 相关 举报
数组答案.docx_第1页
第1页 / 共26页
数组答案.docx_第2页
第2页 / 共26页
数组答案.docx_第3页
第3页 / 共26页
数组答案.docx_第4页
第4页 / 共26页
数组答案.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

数组答案.docx

《数组答案.docx》由会员分享,可在线阅读,更多相关《数组答案.docx(26页珍藏版)》请在冰豆网上搜索。

数组答案.docx

数组答案

/*

(1)反向输出有5个元素的int数组中各元素的值。

*/

#include

voidmain()

{

intnumber[5];

inta[5];

inti;

//输入

for(i=0;i<5;i++)

{

printf("请输入第%d个数:

",i+1);

scanf("%d",&number[i]);

}

//反向

for(i=0;i<5;i++)

{

a[i]=number[5-i-1];

}

//输出

printf("反向输出为:

\n");

for(i=0;i<5;i++)

{

printf("%d\t",a[i]);

}

printf("\n");

}

/*

(2)在一个二维数组中形成并输出如下矩阵:

11111

211l1

A=321ll

43211

54321

*/

#include

voidmain()

{

inta[5][5];

inti,j;

for(i=0;i<5;i++)

{

for(j=0;j<5;j++)

{

if(i<=j)

{

a[i][j]=1;

}

else

a[i][j]=i+1-j;

printf("%d\t",a[i][j]);

}

printf("\n");

}

}

/*

(3)求矩阵A(2×3)的转置矩阵B(3×2)。

12314

A=B=25

45636

*/

#include

voidmain()

{

inta[2][3],b[3][2];

introw,col;

intt=0;

printf("转置前矩阵:

\n");

for(row=0;row<2;row++)

{

for(col=0;col<3;col++)

{

a[row][col]=++t;

printf("%d\t",a[row][col]);

}

printf("\n");

}

//矩阵转置操作

for(row=0;row<2;row++)

{

for(col=0;col<3;col++)

{

b[col][row]=a[row][col];

}

}

printf("转置后矩阵:

\n");

for(row=0;row<3;row++)

{

for(col=0;col<2;col++)

{

printf("%d\t",b[row][col]);

}

printf("\n");

}

}

/*

(4)某班期终考试科目为高等数学(MT)、英语(EN)和物理(PH),有30人参加考试。

为评定奖学金,要求统计并输出一个表格,表格内容包括学号、各科分数、总分和平均分,并标出三门课均在90分以上者(该栏标志输出为“Y”,否则为“N”),表格形式如下:

N0HTENPHSUMV>90

------------------------------------

197879227692N

292919027391Y

390818225384N

可以将学生的学号和各科成绩放在数组a[30][4]中,然后进行统计处理。

*/

#include

voidmain()

{

inta[3][4];//程序中假设处理3名学生

inti,j,sum=0;

charc;

//输入3名学生的3门成绩

printf("EnterNo.andscoreas:

\nNOMTENPH\n");

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

{

for(j=0;j<4;j++)

scanf("%d",&a[i][j]);

}

printf("\tNO\tMT\tEN\tPH\tSUM\tV\t>90\n");

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

//依次进行处理

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

{

printf("\t%d\t",a[i][0]);

for(sum=0,j=1;j<4;j++)

{

sum+=a[i][j];//计算3门课程总分

printf("%d\t",a[i][j]);

}

if(a[i][1]>=90&&a[i][2]>=90&&a[i][3]>=90)

c='Y';//若三门成绩均为90以上

else

c='N';

printf("%d\t%d\t%c\n",sum,sum/3,c);

}

}

/*

(5)有一个3×4的矩阵,求其中的最大元素的值

*/

#include

voidmain()

{

inti,j;

intmaxValue,row=0,colum=0;

inta[3][4];

printf("请输入数组:

\n");

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

{

for(j=0;j<4;j++)

{

scanf("%d",&a[i][j]);

}

}

printf("数组为:

\n");

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

{

for(j=0;j<4;j++)

{

printf("%d",a[i][j]);

}

printf("\n");

}

maxValue=a[0][0];

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

{

for(j=0;j<4;j++)

{

if(maxValue

{

maxValue=a[i][j];

row=i+1;

colum=j+1;

}

}

}

printf("maxValue=%d,row=%d,colum=%d\n",maxValue,row,colum);

}

/*

(6)编写程序实现将字符串str2拷贝到字符串strl。

*/

#include

#include

voidmain(){

charstr1[15];

charstr2[]="CopyString";

strcpy(str1,str2);

printf("%s\n",str1);

}

/*

(7)输入英文的星期几,查找星期表后输出对应的数字。

具体的算法是:

若发现与表中某项相同,则输出该字符串在表中的位置(序号);

若查到表尾仍不相同,则输出错误信息。

设星期表的内容如下图所示。

0sunday

1monday

2tuesday

3wednesday

4thursday

5friday

6saturday

*/

#include

#include

voidmain()

{

charweekday[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

charday[10];

intflag=8;

inti;

printf("星期表的内容为:

");

for(i=0;i<7;i++)

{

printf("%d\t%s\n",i,weekday[i]);

}

printf("inputaweekday:

");

scanf("%s",&day);

for(i=0;i<7;i++)

{

if(strcmp(day,weekday[i])==0)

flag=i;

}

if(flag==8)

printf("Wronginput!

\n");

else

printf("%d\n",flag);

}

/*

(8)给定某年某月某日,将其转换成这一年的第几天并输出。

*/

#include

voidmain()

{

intdpm[12]={31,28,31,30,31,30,31,31,30,31,30,31};

intyear,month,day;

intsum=0;

printf("请输入年份:

");

scanf("%d",&year);

printf("请输入月份:

");

scanf("%d",&month);

printf("请输入日期:

");

scanf("%d",&day);

for(inti=0;i

sum+=dpm[i];

sum+=day;

if((year%4==0||(year%400==0&&year%100!

=0))&&month>2)//判断是否是闰年,且月份大于2月

sum+=1;

printf("%d年%d月%d日是这一年的第%d天\n",year,month,day,sum);

}

/*

(9)如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(亦称为自恋性数)。

如407=4^3+0^3+7^3就是一个阿姆斯特朗数。

试编程求1000以内的所有阿姆斯特朗数。

*/

#include

#include

voidmain()

{

//a:

百位,b:

十位,c:

个位

inti,a=0,b=0,c=0;

for(i=1;i<1000;i++)

{

a=i/100;

b=i/10%10;

c=i-a*100-b*10;

if(a*a*a+b*b*b+c*c*c==i)

printf("找到一个阿姆斯特朗数%d\n",i);

}

}

/*

(10)写出下面给出的数组说明中所定义的数组的数组名、类型、维数、数组体积,

并给出各数组元素在计算机中占用存储单元的情况。

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

floaty[3][4]={1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8};

intz[2][2][3]={1,2,3,4,5,6,7,8,9,10,11,12};

inti[2][3]={{},{4,5,6}},j[2][2][2]={{},{3,4},{},{7,8}};

charc1[10]={”Happy.”},c2[][3]={{”*”},{”**”},{”*”}};

*/

#include

intmain()

{

/***

intx=1;

inti[2][3]={{},{4,5,6}};

printf("%d,%d,%d",i[0][0],i[0][1],x);

printf("%d",sizeof(i));

return0;

****/

/***

intx=15;

inty=(x++)+(x++)+(x++);

printf("%d\n%d",y,x);

***/

charc2[][3]={{"*"},{"**"},{"*"}};

printf("%d",sizeof(c2));

}

/*

(11)设某班50人,写一程序统计某一单科成绩各分数段的分布人数,每人的成绩随机输入,

并要求按下面格式输出统计结果(”*”表示实际分布人数)。

0----39*

40----49**

50----59*****

......

90----100****

*/

#include

#include

voidmain()

{

intarr[50];

inta=0,b=0,c=0,d=0,e=0,f=0,g=0;

inti=0;

//printf("请输入班级某门课的成绩:

\n");

for(i=0;i<50;i++)

{

//printf("%d:

",i+1);

//scanf("%d",&arr[i]);

arr[i]=rand()%100+1;

}

printf("班级某门课程的成绩为:

\n");

for(i=0;i<50;i++)

{

printf("%d",arr[i]);

if((i+1)%10==0)

printf("\n");

else

printf("\t");

}

printf("\n");

for(i=0;i<50;i++)

{

if(arr[i]>=90)

a++;

elseif(arr[i]>=80)

b++;

elseif(arr[i]>=70)

c++;

elseif(arr[i]>=60)

d++;

elseif(arr[i]>=50)

e++;

elseif(arr[i]>=40)

f++;

else

g++;

}

printf("90分以上的有%d个\n",a);

printf("80-89分的有%d个\n",b);

printf("70-79分的有%d个\n",c);

printf("60-69分的有%d个\n",d);

printf("50-59分的有%d个\n",e);

printf("40-49分的有%d个\n",f);

printf("40分以下的有%d个\n",g);

}

/*

(12)输入二维数组a[3][5],打印其中最小值和最大值及其对应的行列位置。

*/

#include

voidmain()

{

intmaxValue=0,minValue=65535;

inti,j,x1,y1,x2,y2;

inta[3][5];

printf("请输入二维数组a[3][5]:

\n");

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

{

for(j=0;j<5;j++)

{

scanf("%d",&a[i][j]);

}

}

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

{

for(intj=0;j<5;j++)

{

//找最大值

if(a[i][j]>maxValue)

{

maxValue=a[i][j];

x1=i+1;

y1=j+1;

}

//找最小值

if(a[i][j]

{

minValue=a[i][j];

x2=i+1;

y2=j+1;

}

}

}

printf("输入的矩阵为:

\n");

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

{

for(j=0;j<5;j++)

{

printf("%d\t",a[i][j]);

}

printf("\n");

}

printf("最大值为:

%d\t位置:

%d行%d列\n",maxValue,x1,y1);

printf("最小值为:

%d\t位置:

%d行%d列\n",minValue,x2,y2);

}

/*

(13)输入5×5的数组,编写程序实现:

(a)求出对角线上各元素的和;

(b)求出对角线上行、列下标均为偶数的各元素的积;

(c)找出对角线上其值最大的元素和它在数组中的位置。

*/

#include

voidmain()

{

intb[5][5];

printf("请输入5*5数组的元素值:

\n");

inti,j;

intsum=0;

intproduct=1;

intmaxValue;

intp=1,q=1;

for(i=0;i<5;i++)

for(j=0;j<5;j++)

{

scanf("%d",&b[i][j]);

}

printf("\n");

printf("数组元素为:

\n");

for(i=0;i<5;i++)

for(j=0;j<5;j++)

{

printf("%3d",b[i][j]);

if(j==4)

printf("\n");

}

//对角线元素求和

for(i=0;i<5;i++)

for(j=0;j<5;j++)

if(i==j||i+j==4)

sum+=b[i][j];

printf("对角线元素之和为:

%d\n",sum);

//对角线元素偶数下标求积

for(i=1;i<5;i+=2)

for(j=1;j<5;j+=2)

if(i==j||i+j==4)

product*=b[i][j];

printf("对角线上行、列下标均为偶数的各元素的积为:

%d\n",product);

//对角线最大元素及位置

maxValue=b[0][0];

for(i=0;i<5;i++)

for(j=0;j<5;j++)

if(i==j||i+j==4)

if(b[i][j]>maxValue)

{

maxValue=b[i][j];

p=i+1;

q=j+1;

}

printf("对角线上最大的元素是:

%d,位置是第%d行,第%d列\n",maxValue,p,q);

}

/*

(14)简单的密码加密程序。

其加密过程是先定义一张字母加密对照表。

输入输出输入输出

adia

bwkb

ck;c

d:

we

eI

将需要加密的一行文字输入加密程序,程序根据加密表中的对应关系,

可以很简单地将输入的文字加密输出,对于表中未出现的字符则不加密。

*/

#include

voidmain()

{

chara[9]={'a','b','c','d','e','i','k',';','w'};

charb[9]={'d','w','k',':

','l','a','b','c','e'};

charc;

inti;

while((c=getchar())!

='\n')

{

for(i=0;i<9;i++)

{

if(c==a[i])

{

c=b[i];

printf("%1.5c",c);

c='\0';

}

}

printf("%1.5c",c);

}

printf("\n");

}

/*

(15)使用二维数组输入”BASIC”,”ADA”,”Pascal”,”C”,”Fortran”,将它们按从小到大的顺序排列后输出。

*/

#include

#include

voidmain()

{

charstr[5][10];

charstr1[10];

inti,j;

for(i=0;i<5;i++)

{

printf("请输入第%d个数组:

",i);

gets(str[i]);

}

for(i=0;i<5;i++)

{

for(j=i+1;j<5;j++)

{

if(strcmp(str[i],str[j])>0)

{

strcpy(str1,str[j]);

strcpy(str[j],str[i]);

strcpy(str[i],str1);

}

}

}

printf("数组按从小到大的顺序排列后为:

\n");

for(i=0;i<5;i++)

{

puts(str[i]);

}

}

/*

(16)已知某运动会上女子百米运动员决赛成绩。

要求编写程序,按成绩排序并按名次输出排序结果,包括名次、运动员号、成绩三项内容。

*/

#include

voidmain()

{

floata[2][5]={{12,15,23,28,18},{12.1,12.3,11.8,13.0,12.6}};

inti,pos,j;

floattemp,tempValue;

for(i=1;i<5;i++)

{

temp=a[0][i];

tempValue=a[1][i];

j=i;

while((j>0)&&(a[1][j-1]

{

//交换顺序

a[0][j]=a[0][j-1];

a[1][j]=a[1][j-1];

--j;

}

a[0][j]=temp;

a[1][j]=tempValue;

}

printf("女子百米运动员决赛成绩为:

\n名次\t运动员号\t成绩\n");

for(i=0;i<5;i++)

{

printf("%d\t%.0f\t%.1f\n",i+1,a[0][i],a[1][i]);

}

}

/*

(17)将矩阵A[2][3]的六个元素送入矩阵A[3][2]中,使其顺时针旋转90度。

例:

12341

a=b=52

45663

*/

#include

voidmain()

{

inta[2][3],i,j;

intb[3][2];

printf("输入矩阵A[2][3]:

\n");

for(i=0;i<2;i++)

{

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

{

scanf("%d",&a[i][j]);

}

}

for(j=0;j<2;j++)

{

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

{

b[i][1-j]=a[j][i];

}

}

printf("输入的矩阵为:

\n");

for(i=0;i<2;i++)

{

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

{

printf("%d\t",a[i][j]);

}

printf("\n");

}

printf("矩阵顺时针旋转90度后为:

\n");

for(

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1