c语言答案.docx
- 文档编号:23167769
- 上传时间:2023-05-15
- 格式:DOCX
- 页数:38
- 大小:22.20KB
c语言答案.docx
《c语言答案.docx》由会员分享,可在线阅读,更多相关《c语言答案.docx(38页珍藏版)》请在冰豆网上搜索。
c语言答案
求和
74.编写程序,用双重循环输出下面的图形。
(不能使用两维数组)。
A
ABC
ABCDE
ABCDEFG
#include
voidmain()
{
inti,j;
for(i=0;i<4;i++)
{
for(j=0;j<4-i;j++)
{
printf("");
}
for(j=0;j<=i*2;j++)
{
printf("%c",'A'+j);
}
printf("\n");
}
}
78.编写程序,使用双重循环输出下列三角形(不能使用两维数组)。
abcde
abcd
abc
ab
a
#include
voidmain()
{
inti,j;
for(i=0;i<5;i++)
{
for(j=0;j<5-i;j++)
{
printf("%c",'a'+j);
}
printf("\n");
}
}
79.编写程序,用双重循环和表达式输出下面图形。
(不能使用两维数组)。
1234
5678
9101112
#include
voidmain()
{
inti,j;
for(i=0;i<3;i++)
{
for(j=0;j<4;j++)
{
printf("%4d",i*4+j+1);
}
printf("\n");
}
}
80.编写程序,用双重循环输出下面的图形。
(不能使用两维数组)。
**********
**********
**********
**********
**********
#include
voidmain()
{
inti,j;
for(i=0;i<5;i++)
{
for(j=0;j
{
printf("");
}
for(j=0;j<10+i;j++)
{
printf("*");
}
printf("\n");
}
}
82.编写程序,用双重循环输出下面的图形。
(不能使用两维数组)。
********
********
********
********
********
********
********
********
********
#include
voidmain()
{
inti,j;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if(i+j==8)
printf("");
else
printf("*");
}
printf("\n");
}
}
83.编写程序,用双重循环输出下面的图形。
(不能使用两维数组)。
*******
*******
*******
*******
********
*******
*******
*******
*******
#include
voidmain()
{
inti,j;
for(i=0;i<9;i++)
{
for(j=0;j<9;j++)
{
if((i+j==8)||(i==j))
printf("");
else
printf("*");
}
printf("\n");
}
}
函数
51.编写一个处理二维数组的通用函数,该函数可以实现对任意数值型二维数组求它所有元素的最大值(保留3位小数)。
已知数组A(数据附后),编写主程序针对这个数组调用以上函数得到结果并输出。
A数组的数据如下:
11,52,56,67,25
45,89,54,69,89
96,63,68,79,86
98,65,63,85,78
#include
doubleMax(doublea[],introw,intline)
{
double*p;
p=a;
inti,j;
doublemax=*p;
for(i=0;i { for(j=0;j if(max<*(p+i*line+j)) max=*(p+i*line+j); } returnmax; } voidmain() { doublea[4][5]={11,52,56,67,25,45,89,54,69,89,96,63,68,79,86,98,65,63,85,78}; doublemax=Max(a[0],4,5); printf("%.3f\n",max); } 52.编写一个通用函数,该函数可以实现判断一个正整数的所有因子之和是否等于该数,若等于,则返回“yes”,否则,返回“no”。 例如6的因子是1,2,3,6=1+2+3,则返回“yes”;而8的因子是1,2,4,但8≠1+2+4,则返回“no”。 编写主函数针对整数1200进行判断并输出结果。 答案: no #include voidTN(intnumber) { intm=1,k; for(k=2;k<=number/2;k++) if(number%k==0) m=m+k; if(number==m) printf("yes! \n"); else printf("no! \n"); } voidmain() {intnum; printf("Pleaseinputanintegernumber: \n"); scanf("%d",&num); TN(num); } 53.编写一个通用函数,该函数可以实现计算某段整数区间内的奇数的和。 例若求[1,100]之间奇数的和,即求1+3+5+…+99的和。 编写主程序调用该函数实现求[200,1000]之间奇数和,并在主程序输出。 答案: 240000 #include doubleSum(intx1,intx2) {inti; doublesum=0; for(i=x1;i<=x2;i++) if(i%2==1) sum+=i; returnsum; } voidmain() { intstart,end; printf("Pleaseinputthestartnumber;\n"); scanf("%d",&start); printf("Pleaseinputtheendnumber;\n"); scanf("%d",&end); printf("%.0f\n",Sum(start,end)); } 57.编写一个通用函数,该函数可以实现判断: 一个含有四位数字的整数的千位数字与百位数字的和等于十位数字与个位数字的和。 例如: 3746,它的千位、百位、十位与个位分别是3,7,4,6,且3+7=4+6,符合条件;而数字1234则不符合条件。 编写主程序调用该函数实现求所有四位数字中满足条件的数的个数。 答案: 615 #include intJudge(longnum) { intg,s,b,q; q=num/1000; b=(num-q*1000)/100; s=(num-q*1000-b*100)/10; g=num-q*1000-b*100-s*10; inta; if((q+b)==(s+g)) a=1; else a=0; returna; } voidmain() { inti; intcount=0; for(i=1000;i<=9999;i++) if(Judge(i)==1) count++; printf("%d\n",count); } 60.编写一个通用函数,该函数可以实现对数值型数组的倒序。 倒序的含义是把数组的元素值前后颠倒。 例数组: 23,54,67,43,17,51倒序的结果为: 51,17,43,67,54,23。 编写主程序,数组初始化方式不限,并输出,然后调用该函数实现倒序后再输出倒序的结果。 #include #defineN6 voidTransfer(double*b,intn) { doubletemp; double*i=b; double*j=b+n-1; while(j>i) { temp=*i; *i=*j; *j=temp; i++; j--; } } voidmain() {doublearray[N]={23,54,67,43,17,51}; inti; for(i=0;i printf("%.0f\t",array[i]); Transfer(array,N); printf("\n"); for(i=0;i printf("%.0f\t",array[i]); printf("\n"); } 63.编写一个通用函数,该函数可以实现求数值型二维数组的上三角各元素的平方根的和(即先对上三角各元素求平方根,然后再对平方根求和)。 编写主程序调用该函数,计算数组A的上三角元素的平方根的和。 上三角的含义: 左上部分(包含对角线元素),如下二维数组的0元素区域即为上三角。 00000 00007 00038 00593 02467 数组A的数据如下: 2345567334 34748554764 5698568967 9854831259 9887744862 答案: 116.377180 #include #include doubleCal(double*a,intn) { double*p; p=a; inti,j; doublesum=0; for(i=0;i for(j=0;j sum+=sqrt(*(p+i*n+j)); returnsum; } voidmain() { doublea[5][5]={23,45,56,73,34, 34,74,85,54,764, 56,98,56,89,67, 98,54,83,12,59, 98,87,74,48,62 }; doublerootsum=Cal(a[0],5); printf("%f\n",rootsum); } 68.编写一个通用函数,该函数可以实现把一个十进制的正整数转换成二进制。 例如把18转换成10010。 编写主程序调用该函数,把整数23465转换成二进制并输出。 注: 把一个十进制的整数转换成二进制的方法是: 把十进制数当作被除数,用2除,直到商为0为至,然后把余数倒序即可。 例18除2的余数依次是0、1、0、0、1,则其二进制为: 10010。 答案: 10110111010100 #include voidTransfer(intnum) {inta[100]; intcount=0; while(num! =0) { if(num%2==0) a[count++]=0; else a[count++]=1; num=num/2; } for(inti=count-1;i>=0;i--) printf("%d",a[i]); } voidmain() {intnum; printf("Pleaseinputaninteger: \n"); scanf("%d",&num); Transfer(num); } 方法二: #include voidswap(inty) { intx=0,j,a[100]; while(y>=1) { a[x]=y%2; x++; y=y/2; } for(j=x-1;j>=0;j--) printf("%d",a[j]); printf("\n"); } voidmain() { inty; printf("Pleaseinputaninteger: \n"); scanf("%d",&y); swap(y); } 69.编写一个通用函数,该函数可以实现把一个十进制的正整数转换成七进制。 例如把88转换成154。 编写主程序调用该函数,把整数563465转换成七进制并输出。 注: 把一个十进制的整数转换成七进制的方法是: 把十进制数当作被除数,用7除,直到商为0为至,然后把余数倒序即可。 例88除7的余数依次是4、5、1,则其七进制为: 154。 答案: 4534520 #include voidTransfer(intnum) { inta[100]; intcount=0; while(num! =0) { a[count++]=num%7; num=num/7; } for(inti=count-1;i>=0;i--) printf("%d",a[i]); } voidmain() { intnum; printf("Pleaseinputaninteger: \n"); scanf("%d",&num); Transfer(num); } 72.设计一个函数: 求两个正整数的最大公约数。 在主调函数中调用这个函数并完成下列任务: (1)求30375和14175的最大公约数s; (2)求18360和16875的最大公约数t; (3)求s与t的和p; (4)求出p与13608的最大公约数。 答案: 216 #include intGYS(inta,intb) { intc; if(a { c=a; a=b; b=c; } c=a%b; while(c! =0) { a=b; b=c; c=a%b; } returnb; } voidmain() { ints,t,p,m; s=GYS(30375,14175); t=GYS(18360,16875); p=s+t; m=GYS(p,13608); printf("%d\n",m); } 77.设计一个函数: 求两个正整数的最小公倍数。 在主调函数中调用这个函数并完成下列任务: (1)求440和1005的最小公倍数s; (2)求4080和288的最小公倍数t; (3)求s与t中的最大数p; (4)求出p与4592的最小公倍数。 答案: 50764560 #include intgbs(inta,intb) { inta1,b1,c; if(a { c=a; a=b; b=c; } a1=a,b1=b; c=a%b; while(c! =0) { a=b; b=c; c=a%b; } returna1*b1/b; } voidmain() { ints,t,m; s=gbs(440,1005); t=gbs(4080,288); intp=s>t? s: t; m=gbs(p,4592); printf("%d\n",m); } 数组 1.编写程序,使用随机函数初始化一个具有20个整型数据的一维数组元素a,使其每个数组元素在100到300之间,使用冒泡排序法按照由小到大的顺序对该数组进行排序,输出排序前、后的数组元素。 #include #include #include #defineN20 voidprintArray(int*p,intn); intmain() { inta[N]; inti,j,temp; srand(time(NULL)); for(i=0;i a[i]=100+rand()%(300-100+1); printArray(a,N); for(i=0;i { for(j=0;j { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } printArray(a,N); return0; } voidprintArray(int*p,intn) { printf("\n"); int*ptr=p; inti; for(i=0;ptr { printf("%5d",*ptr); if((i+1)%10==0) printf("\n"); } printf("\n"); } 方法二: #include #include #include #defineN20 voidmain() { inta[N]; int*p; inti,j,temp; srand(time(NULL)); for(i=0;i a[i]=100+rand()%(300-100+1); p=a; printf("\n"); int*ptr=p; for(i=0;ptr { printf("%5d",*ptr); if((i+1)%10==0) printf("\n"); } printf("\n"); for(i=0;i { for(j=0;j { if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } } } p=a; ptr=p; printf("\n"); for(i=0;ptr { printf("%5d",*ptr); if((i+1)%10==0) printf("\n"); } printf("\n"); } 5.把21-56这36个自然数按列赋给二维数组A[6][6],计算输出主对角线以下(含主对角线)各元素值立方根之积。 结果: 42610953771.152 #include"math.h" #include intmain() {inta[6][6],i,j,k=21; doubles=1.0; for(i=0;i<6;i++) { for(j=0;j<6;j++) { a[i][j]=k; k=k+1; printf("%5d",a[i][j]); } printf("\n"); } for(i=0;i<6;i++) for(j=0;j<6;j++) if((i+j)>=5) s=s*pow(a[i][j],1.0/3.0); printf("s=%.3lf\n",s); return0; } 6.编写程序,实现一维数组A[10]元素值循环左移4位(要求用指针实现)。 例数组的原值: 12345678910 结果为: 78910123456 #include #defineN10 #defineLM4 intmain() { inta[N],i; for(i=0;i { a[i]=i+1; printf("%5d",a[i]); } printf("\n"); inttemp,*p; for(i=0;i { temp=*(a+N-1); for(p=a+N-1;p>a;p--) *p=*(p-1); *p=temp; } for(i=0;i printf("%5d",a[i]); printf("\n"); return0; } 8.编写程序,建立一个有10个元素组成的一维数组(该数组已存放9个数据,数据自定,并已按降序排列),要求从键盘输入一个数据,并将其插入到数组适当位置,即插入后的数组仍按降序排列,最后将结果输出(要求用指针实现)。 #include intmain() {inta[10]={3,6,7,9,12,16,18,20,90},i,x,*p; p=a; scanf("%d",&x); i=8; while(i>=0&&p[i]>x) {p[i+1]=p[i]; i--; } p[i+1]=x; for(i=0;i<10;i++) printf("%4d",p[i]); return0; } 14.编写程序,把一个数组倒序,并输出倒序前、后的数据(要求用指针实现)。 例: 倒序前的数: 12345678 倒序后的数: 87654321 #include intmain() {inta[]={1,2,3,4,5,6,7,8},i,t,*p; p=a; for(i=0;i<4;i++) { t=p[i]; p[i]=p[7-i]; p[7-i]=t; } for(i=0;i<8;i++) printf("%3d",p[i]); return0; } 15.已知一个一维数组(数据自定且不重复),然后从键盘上输入一个数x,若x在数组中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 答案