编程题c.docx
- 文档编号:26034677
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:19
- 大小:18.96KB
编程题c.docx
《编程题c.docx》由会员分享,可在线阅读,更多相关《编程题c.docx(19页珍藏版)》请在冰豆网上搜索。
编程题c
编程题
1
(2)键盘输入10个实型数,求其倒数的和并输出.
参考答案
#include"stdio.h"
#include"math.h"
main()
{
inti;
floata,sum=0;
printf("Pleaseinput10number:
");
for(i=0;i<10;i++)
{
scanf("%f",&a);
sum+=1.0/a;
}
printf("Theresultis:
%f\n",sum);
}
2(3)键盘输入10个正实型数,求其方根的和并输出。
参考答案
#include"stdio.h"
#include"math.h"
main()
{
inti;
floata,sum=0;
printf("Pleaseinput10numberwhichareallgreatthan0:
");
for(i=0;i<10;i++)
{
scanf("%f",&a);
if(a<0)
continue;
sum+=sqrt(a);
}
printf("Theresultis:
%f\n",sum);
}
3(4)计算s=1-2!
+3!
-4!
+…-10!
的值并输出。
参考答案
#include"stdio.h"
#include"math.h"
main()
{
inti;
longsum=0,b=-1;
for(i=1;i<=10;i++)
{
b=-1*i*b;
sum+=b;
}
printf("Theresultis:
%f\n",sum);
}
4(5)编写一个程序,从键盘输入一个三位整数,将它们逆序输出。
例如输入127,输出721。
参考答案
#include"stdio.h"
main()
{
intnum,a,b,c;
printf("Pleaseinputthenumber:
");
scanf("%d",&num);
a=num/100;
b=(num-100*a)/10;
c=num-100*a-10*b;
a+=b*10+c*100;
printf("Theresultis%d\n",a);
}
5(7)打印出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如:
153是一水仙花数,因为153=1^3+5^3+3^3.
参考答案
main()
{
inti,j,k,s;
for(s=100;s<=999;s++)
{
i=s/100;
j=s/10-10;
k=s-i*100-j*10;
if(i*i*i+j*j*j+k*k*k==s)
printf("s=%d\n",s);
else
continue;
}
}
6(8)编写一程序,对于给定的一个百分制成绩,输出相应的五分制成绩。
设:
90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
参考答案
#include"stdio.h"
main(){
inta,b;
printf("Pleaseinputthescore:
");
scanf("%d",&a);
b=a/10;
switch(b){
case10:
case9:
printf("A!
\n");
break;
case8:
printf("B!
\n");
break;
case7:
printf("C!
\n");
break;
case6:
printf("D!
\n");
break;
default:
printf("E!
\n");
break;
}
}
7(9)计算s=1-1/3+1/5-1/7+…1/101的值并输出。
参考答案
main()
{
inti,f=1;
floatsum=0.0;
for(i=1;i<=101;i=i+2)
{sum=sum+1.0/i*f;
f=(-1)*f;
}
printf("sum=%f\n",sum);
}
8(11)输入一个正整数,要求以相反的顺序输出该数。
例如输入12345,输出位54321。
参考答案
main()
{intn;
printf("Pleaseentern:
");
scanf("%d",&n);
while(n>0)
{printf("%d",n%10);
n=n/10;
}}
9(21)在主函数中输入8个整数,调用函数对其进行排序(从小到大),排序方法不限,
最后在主函数中输出结果。
参考答案
#include"stdio.h"
voidmain()
{intnum[8],i;
voidtaxis(intp[],int);
printf("Input8integers:
\n");
for(i=0;i<8;i++)
scanf("%d",num+i);
taxis(num,8);
printf("Theresult:
\n");
for(i=0;i<8;i++)
printf("%d,",num[i]);
}
voidtaxis(intp[],intn)
{
inti,j;
intcode,temp;
for(i=0;i { code=i; for(j=i+1;j if(p[j] code=j; if(code! =i) { temp=p[i]; p[i]=p[code]; p[code]=temp; } 10(41)从键盘输入十个整数,用合并排序法对输入的数据按照从小到大的顺序进行排序, 将排序后的结果输出。 参考答案 #defineN16 #include"stdio.h" merge(a,b,c,m)/*数组合并函数: 将长度为m的*/ inta[],b[],c[],m;/*数组a、b合并到c*/ {inti=0,j=0,k=0; while(i if(a[i]>b[j]) c[k++]=b[j++];/*将a[i]、*b[j]中的小*/ elsec[k++]=a[i++];/*者存入c[k]*/ while(i while(j } mergesort(w,n)/*数组排序函数: 对长度为n*/ intw[],n;/*的数组w排序*/ {inti,t,ra[N]; for(i=1;i if(i==n) {if(n>2)/*递归调用结束条件*/ {mergesort(w,n/2);/*将数组w一分为二,递归调*/ mergesort(w+n/2,n/2);/*用mergesort*/ merge(w,w+n/2,ra,n/2);/*将排序后的两数组重新合并*/ for(i=0;i w[i]=ra[i]; }elseif(*w>*(w+1)) {t=*w;*w=*(w+1);*(w+1)=t; }} elseprintf("Error: sizeofarrayisnotapowerof2/n"); } main() {inti; staticintkey[N]={4,3,1,81,45,8,0,4,-9,26,7,4,2,9,1,-1}; mergesort(key,N); for(i=0;i printf("%d",key[i]); printf("\n"); } 11(44)编写函数,采用递归方法将任一整数转换为二进制形式。 参考答案 turn(n,a,k) intn,a[],k; {if(n>0) {a[k]=n%2; turn(n/2,a,k-1); } elsereturn; } main() {inti,n,a[16]={0}; printf("\nPleaseentern: "); scanf("%d",&n); turn(n,a,15); for(i=0;i<16;i++) printf("%d",a[i]);} 12(45)编写函数,采用递归方法在屏幕上显示如下杨辉三角形: 1 11 121 1331 14641 15101051 …… …… …… …… …… 参考答案 #include main() {inti,j,n=13; printf("N="); while(n>12) scanf("%d",&n);/*最大输入值不能大于12*/ for(i=0;i<=n;i++)/*控制输出N行*/ {for(j=0;j<12-i;j++) printf("");/*控制输出第i行前面的空格*/ for(j=1;j printf("%6d",c(i,j));/*输出第i行的第j个值*/ printf("\n"); } } intc(x,y)/*求杨辉三角形中第x行第y列的值*/ intx,y; {intz; if((y==1)||(y==x+1)) return (1);/*若为x行的第1或第x+1列,则输出1*/ else/*否则;其值为前一行中第y-1列与第y列值之和*/ z=c(x-1,y-1)+c(x-1,y); return(z); } 13(54)编制一个计算函数y=f(x)的值程序,其中: 14(70)任意输入一个偶数,请将它分解为两个素数之和。 参考答案 main() {intj,k,n,m; printf("Pleaseentern: "); scanf("%d",&n); for(j=2;j {for(k=2;k if(j%k==0)break;/*j能够被小于它的一个数整除就不是素数*/ if(k>=j)/*j是素数*/ {m=n-j; for(k=2;k if(m%k==0)break; if(k>=m)/*m也是素数,输出结果*/ {printf("%4d=%4d+%4d\n",n,j,m); break; } } } } 15(90)编写程序,输入三角型的三条边长,求其面积。 注意: 对于不合理的边长输入要输出数据错误的提示信息。 参考答案 #include"math.h" main() {intflag=0; floata,b,c,s; do {printf("Pleaseenterabc: "); scanf("%f%f%f",&a,&b,&c); if(a>b+c||b>a+c||c>a+b) flag=1; }while(flag); s=(a+b+c)/2; printf("S=%f",s=sqrt((s-a)*(s-b)*(s-c))); } 16(95)输入n值,输出如图所示矩形。 ****** ****** ****** ****** ****** ****** n=6时的矩形 参考答案 分析: 打印此图形用两重循环实现。 图形要重复n行,故采用循环结构实现循环n次,循环体内部打印一行''*''号,把上述思路表示为: for(i=1;i<=n;i++) 打印一行''*''号; 每行有n个''*''号,再采用循环结构实现n次循环,循环内部用格式输出语句打印一个''*''号,即: for(j=1;j<=n;j++) printf("*"); 按照上述思路,实现打印矩形。 参考答案: main() {inti,j,n; printf("\nPleaseEntern: "); scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=n;j++) printf("*"); printf("\n"); }} 17(96)输入n值,输出如图所示平行四边形。 ****** ****** ****** ****** ****** ****** n=6时的平行四边形 参考答案 分析: 此题和上题的区别在于每行''*''的数量逐行减少,可以使用上题控制空格个数的思路来控制''*''号的个数,请注意每行''*''的个数都是奇数。 参考答案: main() {inti,j,n; printf("\nPleaseEntern: "); scanf("%d",&n); for(i=1;i<=n;i++) {for(j=1;j<=n-i;j++) printf(""); for(j=1;j<=2*i-1;j++) printf("*"); printf("\n"); }} 18(97)输入n值,输出如图所示高为n的等腰三角形。 * *** ***** ******* ********* *********** n=6时的等腰三角形 参考答案 分析: 此题图形是第3题图形的垂直反转,在编程上我们可以变换一个思路。 对于图形中的第i行(1≤i≤n),共需要输出2n-i个字符,其中前面的i-1个字符为空格,后面的字符为''*''号。 按照这一思路可以编写出如下程序。 参考答案: main() {inti,j,n; printf("\nPleaseEntern: "); scanf("%d",&n); for(i=1;i<=n;i++)/*重复输出图形的n行*/ {for(j=1;j<=2*n-i;j++)/*重复输出图形一行中的每个字符*/ if(j<=i-1)printf("");/*输出前面的空格*/ elseprintf("*");/*输出后面的*号*/ printf("\n"); } } 19(108)编程求sum=1! +2! +3! +……+20! 20(110)编写程序,求S=1/(1*2)+1/(2*3)+1/(3*4)+……前50项之和。 参考答案 #include"stdio.h" main() { inti; floatsum=0; for(i=1;i<=50;i++) { sum+=1.0/(i*(i+1)); } printf("sum=%f\n",sum); } 21(117)统计在[1030-25830]之间有多少个数能同时被13和27整除。 参考答案 #include"stdio.h" main() { inti,num=0; for(i=1030;i<=25830;i++) { if((i%13==0)&&(i%27==0)) num++; } printf("num=%d\n",num); } 22(121)统计在[30-15810]之间有多少个数能被23整除,而不能被37整除。 参考答案 #include"stdio.h" main() { inti,num=0; for(i=30;i<=15810;i++) { if((i%23==0)&&(i%37! =0)) num++; } printf("num=%d\n",num); } 23(122)统计在[210-15870]之间有多少个数能被19整除,而不能被21整除。 参考答案 #include"stdio.h" main() { inti,num=0; for(i=210;i<=15870;i++) { if((i%19==0)&&(i%21! =0)) num++; } printf("num=%d\n",num); } 24(133)求一维整型数组中零的个数。 要求: 主函数定义数组a[10]={-15,-22,13,44,-25,66,0,88,-39,10}, 调用自定义函数求出零的个数,然后在主函数中输出结果。 参考答案 #include"stdio.h" main() { inta[10]={-15,-22,13,44,-25,66,0,88,-39,10},n; intnum(intx[10]); n=num(a); printf("Thenumberis%d\n",n); } intnum(intx[10]) { inti,n=0; for(i=0;i<=9;i++) if(x[i]==0) n++; return(n); } 25(137)统计数组中小于数组元素平均值的元素的个数。 要求: 主函数定义一维整型数组a[10]={12,34,56,78,90,9,87,65,43,21}, 调用自定义函数统计小于数组元素平均值的元素的个数,并在主函数中输出结果 参考答案 #include"stdio.h" main() { inta[10]={12,21,34,43,56,65,78,87,90,9},n; intnum(inta[10]); n=num(a); printf("Thenumberis%d\n",n); } intnum(inta[10]) { inti,n=0; floataver,sum=0; for(i=0;i<=9;i++) sum+=a[i]; aver=sum/10; for(i=0;i<=9;i++) if(a[i] n++; return(n); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编程