数组答案.docx
《数组答案.docx》由会员分享,可在线阅读,更多相关《数组答案.docx(26页珍藏版)》请在冰豆网上搜索。
数组答案
/*
(1)反向输出有5个元素的int数组中各元素的值。
*/
#include
voidmain()
{
intnumber[5];
inta[5];
inti;
//输入
for(i=0;i<5;i++)
printf("请输入第%d个数:
",i+1);
scanf("%d",&number[i]);
}
//反向
a[i]=number[5-i-1];
//输出
printf("反向输出为:
\n");
printf("%d\t",a[i]);
printf("\n");
(2)在一个二维数组中形成并输出如下矩阵:
11111
211l1
A=321ll
43211
54321
inta[5][5];
inti,j;
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]);
(3)求矩阵A(2×3)的转置矩阵B(3×2)。
12314
A=B=25
45636
inta[2][3],b[3][2];
introw,col;
intt=0;
printf("转置前矩阵:
for(row=0;row<2;row++)
for(col=0;col<3;col++)
a[row][col]=++t;
printf("%d\t",a[row][col]);
//矩阵转置操作
b[col][row]=a[row][col];
printf("转置后矩阵:
for(row=0;row<3;row++)
for(col=0;col<2;col++)
printf("%d\t",b[row][col]);
(4)某班期终考试科目为高等数学(MT)、英语(EN)和物理(PH),有30人参加考试。
为评定奖学金,要求统计并输出一个表格,表格内容包括学号、各科分数、总分和平均分,并标出三门课均在90分以上者(该栏标志输出为“Y”,否则为“N”),表格形式如下:
N0HTENPHSUMV>90
------------------------------------
197879227692N
292919027391Y
390818225384N
可以将学生的学号和各科成绩放在数组a[30][4]中,然后进行统计处理。
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");
//依次进行处理
printf("\t%d\t",a[i][0]);
for(sum=0,j=1;j<4;j++)
sum+=a[i][j];//计算3门课程总分
if(a[i][1]>=90&&a[i][2]>=90&&a[i][3]>=90)
c='Y';//若三门成绩均为90以上
c='N';
printf("%d\t%d\t%c\n",sum,sum/3,c);
(5)有一个3×4的矩阵,求其中的最大元素的值
intmaxValue,row=0,colum=0;
inta[3][4];
printf("请输入数组:
printf("数组为:
printf("%d",a[i][j]);
maxValue=a[0][0];
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#includevoidmain(){charstr1[15];charstr2[]="CopyString";strcpy(str1,str2);printf("%s\n",str1);}/*(7)输入英文的星期几,查找星期表后输出对应的数字。具体的算法是:若发现与表中某项相同,则输出该字符串在表中的位置(序号);若查到表尾仍不相同,则输出错误信息。设星期表的内容如下图所示。0sunday1monday2tuesday3wednesday4thursday5friday6saturday*/#include#includevoidmain(){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");elseprintf("%d\n",flag);}/*(8)给定某年某月某日,将其转换成这一年的第几天并输出。*/#includevoidmain(){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;isum+=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#includevoidmain(){//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]={{”*”},{”**”},{”*”}};*/#includeintmain(){/***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#includevoidmain(){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");elseprintf("\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++;elseg++;}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],打印其中最小值和最大值及其对应的行列位置。*/#includevoidmain(){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)找出对角线上其值最大的元素和它在数组中的位置。*/#includevoidmain(){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)简单的密码加密程序。其加密过程是先定义一张字母加密对照表。输入输出输入输出adiabwkbck;cd:weeI将需要加密的一行文字输入加密程序,程序根据加密表中的对应关系,可以很简单地将输入的文字加密输出,对于表中未出现的字符则不加密。*/#includevoidmain(){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#includevoidmain(){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)已知某运动会上女子百米运动员决赛成绩。要求编写程序,按成绩排序并按名次输出排序结果,包括名次、运动员号、成绩三项内容。*/#includevoidmain(){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度。例:12341a=b=5245663*/#includevoidmain(){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(
maxValue=a[i][j];
row=i+1;
colum=j+1;
printf("maxValue=%d,row=%d,colum=%d\n",maxValue,row,colum);
(6)编写程序实现将字符串str2拷贝到字符串strl。
voidmain(){
charstr1[15];
charstr2[]="CopyString";
strcpy(str1,str2);
printf("%s\n",str1);
(7)输入英文的星期几,查找星期表后输出对应的数字。
具体的算法是:
若发现与表中某项相同,则输出该字符串在表中的位置(序号);
若查到表尾仍不相同,则输出错误信息。
设星期表的内容如下图所示。
0sunday
1monday
2tuesday
3wednesday
4thursday
5friday
6saturday
charweekday[7][10]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
charday[10];
intflag=8;
printf("星期表的内容为:
");
for(i=0;i<7;i++)
printf("%d\t%s\n",i,weekday[i]);
printf("inputaweekday:
scanf("%s",&day);
if(strcmp(day,weekday[i])==0)
flag=i;
if(flag==8)
printf("Wronginput!
printf("%d\n",flag);
(8)给定某年某月某日,将其转换成这一年的第几天并输出。
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;isum+=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#includevoidmain(){//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]={{”*”},{”**”},{”*”}};*/#includeintmain(){/***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#includevoidmain(){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");elseprintf("\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++;elseg++;}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],打印其中最小值和最大值及其对应的行列位置。*/#includevoidmain(){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)找出对角线上其值最大的元素和它在数组中的位置。*/#includevoidmain(){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)简单的密码加密程序。其加密过程是先定义一张字母加密对照表。输入输出输入输出adiabwkbck;cd:weeI将需要加密的一行文字输入加密程序,程序根据加密表中的对应关系,可以很简单地将输入的文字加密输出,对于表中未出现的字符则不加密。*/#includevoidmain(){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#includevoidmain(){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)已知某运动会上女子百米运动员决赛成绩。要求编写程序,按成绩排序并按名次输出排序结果,包括名次、运动员号、成绩三项内容。*/#includevoidmain(){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度。例:12341a=b=5245663*/#includevoidmain(){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(
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以内的所有阿姆斯特朗数。
//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]={{”*”},{”**”},{”*”}};
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****
intarr[50];
inta=0,b=0,c=0,d=0,e=0,f=0,g=0;
inti=0;
//printf("请输入班级某门课的成绩:
for(i=0;i<50;i++)
//printf("%d:
//scanf("%d",&arr[i]);
arr[i]=rand()%100+1;
printf("班级某门课程的成绩为:
printf("%d",arr[i]);
if((i+1)%10==0)
printf("\t");
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++;
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],打印其中最小值和最大值及其对应的行列位置。
intmaxValue=0,minValue=65535;
inti,j,x1,y1,x2,y2;
inta[3][5];
printf("请输入二维数组a[3][5]:
for(intj=0;j<5;j++)
//找最大值
if(a[i][j]>maxValue)
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)找出对角线上其值最大的元素和它在数组中的位置。*/#includevoidmain(){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)简单的密码加密程序。其加密过程是先定义一张字母加密对照表。输入输出输入输出adiabwkbck;cd:weeI将需要加密的一行文字输入加密程序,程序根据加密表中的对应关系,可以很简单地将输入的文字加密输出,对于表中未出现的字符则不加密。*/#includevoidmain(){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#includevoidmain(){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)已知某运动会上女子百米运动员决赛成绩。要求编写程序,按成绩排序并按名次输出排序结果,包括名次、运动员号、成绩三项内容。*/#includevoidmain(){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度。例:12341a=b=5245663*/#includevoidmain(){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(
minValue=a[i][j];
x2=i+1;
y2=j+1;
printf("输入的矩阵为:
printf("最大值为:
%d\t位置:
%d行%d列\n",maxValue,x1,y1);
printf("最小值为:
%d行%d列\n",minValue,x2,y2);
(13)输入5×5的数组,编写程序实现:
(a)求出对角线上各元素的和;
(b)求出对角线上行、列下标均为偶数的各元素的积;
(c)找出对角线上其值最大的元素和它在数组中的位置。
intb[5][5];
printf("请输入5*5数组的元素值:
intproduct=1;
intmaxValue;
intp=1,q=1;
scanf("%d",&b[i][j]);
printf("数组元素为:
printf("%3d",b[i][j]);
if(j==4)
//对角线元素求和
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)
product*=b[i][j];
printf("对角线上行、列下标均为偶数的各元素的积为:
%d\n",product);
//对角线最大元素及位置
maxValue=b[0][0];
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
将需要加密的一行文字输入加密程序,程序根据加密表中的对应关系,
可以很简单地将输入的文字加密输出,对于表中未出现的字符则不加密。
chara[9]={'a','b','c','d','e','i','k',';','w'};
charb[9]={'d','w','k',':
','l','a','b','c','e'};
while((c=getchar())!
='\n')
for(i=0;i<9;i++)
if(c==a[i])
c=b[i];
printf("%1.5c",c);
c='\0';
(15)使用二维数组输入”BASIC”,”ADA”,”Pascal”,”C”,”Fortran”,将它们按从小到大的顺序排列后输出。
charstr[5][10];
charstr1[10];
printf("请输入第%d个数组:
",i);
gets(str[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("数组按从小到大的顺序排列后为:
puts(str[i]);
(16)已知某运动会上女子百米运动员决赛成绩。
要求编写程序,按成绩排序并按名次输出排序结果,包括名次、运动员号、成绩三项内容。
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度。例:12341a=b=5245663*/#includevoidmain(){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(
//交换顺序
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");
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
inta[2][3],i,j;
intb[3][2];
printf("输入矩阵A[2][3]:
for(i=0;i<2;i++)
for(j=0;j<3;j++)
for(j=0;j<2;j++)
b[i][1-j]=a[j][i];
printf("矩阵顺时针旋转90度后为:
for(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1