夏学期C程序设计上机练习参考答案
}
double t; if(n==0) t=1; int a[32],i; if (( n==0)||(n == 1)) { } else { } while(i>0) printf(\ i=0; while(n!=0) { a[i++]=n%2; n=n/2; } printf(\ return; else if(n==1) else t=((2*n-1)*p(n-1,x)-(n-1)*p(n-2,x))/n; t=x; return t; 10016 十进制转换二进制 } 输入一个正整数 repeat (0 输入1 个正整数n,将其转换为二进制后输出。要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。 例如,调用dectobin(10),输出1010。 输出语句:printf(\例:括号内是说明 输入: 3 (repeat=3) 15 100 0 输出: 1111 1100100 0 #include \int main(void) { int ri,repeat; int n; void dectobin(int n); scanf(\ for(ri=1;ri<=repeat;ri++){ scanf(\ dectobin(n); printf(\ } } void dectobin(int n) { /* 参考2: 如下通过递归实现 */ #include \int main(void) { int ri,repeat; int i,n; void dectobin(int n); scanf(\ for(ri=1;ri<=repeat;ri++){ scanf(\ dectobin(n); printf(\ } } void dectobin(int n) { } } 10017 递归函数程序设计求Fabonacci数列 dectobin(n/2); printf(\if(n==1||n==0){ printf(\return; 25 夏学期C程序设计上机练习参考答案 输入一个正整数 repeat (0 用递归方法编写求Fabonacci数列项的函数,返回值为长整型, 并写出相应的主函数。Fabonacci数列的定义为: f(n)=f(n-2)+f(n-1) (n>=2) 其中 f(0)=0,f(1)=1。 例:(括号内为说明) 输入 3 0 1 6 输出 fib(0)=0 fib(1)=1 fib(6)=8 #include 改错题error10_1.cpp int t; if(n==0) t=0; t=1; scanf(\for(ri=1;ri<=repeat;ri++){ } scanf(\printf(\int n,ri,repeat; (repeat=3) Root = 8.00 #include 编程题 double r; if(n==1) r=x; root = fun(n, x); printf(\int n; double x, root; else r=x*fun(n-1,x); return r; 输入一个正整数repeat (0 编写程序,输入一个月份,输出对应的英文名称,要求用指针数组表示12个月的英文名称。 若输入月份错误,输出提示信息。 输入输出示例:括号内为说明 输入: 3 5 9 14 输出: May September Wrong input! #include else if(n==1) else t=fib(n-2)+fib(n-1); return t; 用递归函数计算x^n (n>=1)的值。 例:(括号内为说明) 输入 2 3 输出 (x=2,n=3) int ri,repeat; int month; 26 夏学期C程序设计上机练习参考答案 } char *month_name[]={\ while(*(p++)!=c_begin); scanf(\for(ri=1;ri<=repeat;ri++){ } scanf(\if((month>=1)&&(month<=12)) else printf(\puts(month_name[month]); p--; while(*p!=c_end) *(t++)=*(p++); *(t++)=*(p++); *t='\\0'; return newstr; } 10027 藏尾诗 编写一个解密藏尾诗的程序。输入一首藏尾诗(假设只有4句),输出其藏尾的真实含义。用返回字符指针的函数实现。 指定位置输出字符串 例: 输入: 悠悠田园风 然而心难平 兰花轻涌浪 兰香愈幽静 输出: 风平浪静 #include 编写一个程序,输入一个字符串后再输入2个字符,输出此字符串中从与第一个字符匹配的位置开始到与第二个字符匹配的位置之间的所有字符。用返回字符指针的函数实现。 例:(括号内为说明) 输入 program r g 输出 rog #include 夏学期C程序设计上机练习参考答案 /*---------*/ } 10028 改错题error11_2.cpp return (p); } scanf(\p[i]=a[i]; } printf(\从键盘上输入一个3×3的矩阵,求矩阵的主对角线和副对角线之和,要求定义和调用函数float matrix(float *a[3], int n), 提示,函数的形参是指针数组。 例: 输入: 8 6 12 5 9 10 7 11 5 输出: sum=41.00 TC中遇到scanf(“%f”, &a[i][j]) ); 出现如下错误: floating point formats not linked Abnormal program termination 改成: scanf(“”, &t); a[i][j]=t; 就可以了 #include 输入一个正整数repeat (0 输入一个正整数 m(1 输入输出示例:括号内为说明 输入 3 (repeat=3) 2 (m=2) 8 (m=8) 90 (m=90) 输出 2 = 2 8 = 2*2*2 90 = 2*3*3*5 把一个合数分解成几个质数(素数)相乘的过程,叫做分解质因数。其中,这几个质数就叫做这个合数的质因数。 #include \int prime(int n); int main(void) { int i, m; int repeat, ri; scanf(\ for(ri = 1; ri <= repeat; ri++){ scanf(\ printf(\ while ( (prime(m)!=1) && ( m != 1) ){ if(i+j==(n-1) && i!=j ) sum=sum+*(*(a+i)+ n- 1-i); /* ( m != 1) 不考虑,会死机 , 永远while */ for(i=2;i<=m;i++){ if(m%i==0){printf(\ m=m/i; 28