ns=i*i;flag=1; while(n>0&&flag) { r=n;n=n/10; rs=ns;ns=ns/10; if(rs!=r) flag=0; } if(flag) { a[count]=i;count++; printf(\ } } printf(\}
5.已知:
f(0) = f(1) = 1 f(2) = 0
f(n) = f(n ? 1)?? 2*f(n ? 2) + f(n ? 3) (n>2) 编写程序:求f(0)~f(50)中的最大值。 f(0)到f(50)中的最大值:598325 #include 6.编写程序:自然数1~1000按顺时针围成一圈,首先取出1,然后顺时针方向按步长L = 50取数(已取出的数不再参加计数),直至所有的数均取完为止,最后一个取出的数是多少? 最后一个取出的数是:630 #include for(i=1;i<=1000;i++) a[i]=i; a[1]=0; for(i=1;i<=1000;i++) { if(a[i]!=0) { s+=1; if(s==50) { n++; if(n==1000) { printf(\ break; } a[i]=0;s=0; } } if(i==1000) i=0; } } 7.编写程序:输出下列格式的杨辉三角形前5行。 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 #include printf(\ } printf(\ } } 8.若两素数之差为2,则称该两素数为双胞胎数。编写程序,求出[2,300]之内: (1)有多少对双胞胎数; (2)最大的一对双胞胎数。 (1)最大的一对双胞胎数:281、283 (2)有19对双胞胎 #include main() { int i,b,max1=0,max2=0,count=0; for(i=2;i<300;i++) { if(sushu(i)) { b=i+2; if(sushu(b)) { if(i>max1) {max1=i;max2=b;} count++; } } } printf(\} 9.编写程序:将两个递增的数组a[10] = {2, 4, 6, 8, 10, 12, 14, 16, 18, 20}和b[10] = {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}合并成一个数组c[20],并保持递增的顺序。 #include int a[N]={2,4,6,8,10,12,14,16,18,20},b[N]={1,3,5,7,9,11,13,15,17,19}, c[NN]; int i,j,t,k; i=0;j=0;t=0; do { if(a[i] 10.请编写程序:建立一个N×N的矩阵(N<10)。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,??依次类推。例如,当N = 5,生成的矩阵为: ?1?1??1??1??11222112321122211?1??1? ?1?1??#include #define N 7 void fun(int (*a)[N]) { int i,j,k,m; if(N%2==0)m=N/2; else m=N/2+1; for(i=0;i main() { int x[N][N]={0},i,j; fun(x); printf(\ for(i=0;i 习题8答案 一、选择题。 1.D 2.C 3.A 4.D 5.A 6.D 7.C 8.B 9.D 二、写出下列程序的运行结果 1. s=30 t=-10 m=200 2. 2 2 2 2 1 3. 51 4. abcdeedcba 5. 31 6. 1bc,a23 7. 50 三、填空题 1.在空格地方填上语句,以实现字符串复制的功能。 while(?p1!='\\0') { *p2=*p1; p1++; p2++; 11.D 10.C 12.A