C++程序设计单元测试卷04((第1-7章)

C++程序设计单元测试卷04((第1-7章)
C++程序设计单元测试卷04((第1-7章)

C语言程序设计第四版第七章答案 谭浩强

第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } main() {int a,b,max,min; printf("enter two number is: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); }

C程序设计第七章课后练习答案

C程序设计(第三版)谭浩强著课后习题答案第7章 2009-05-16 10:56 7.7 打印“魔方阵”。所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之 和均相等。例如,三阶魔方阵为 8 1 6 3 5 7 4 9 2 要求打印出由1 到n2 的自然数构成的魔方阵。 /******************************************************************** **算法思路:魔方阵中各数的排列规律如下: **(1)将1放在第一行中间一列 **(2)从2开始直到n×n止各数依次按下列规则存放:每一个数存放的行比前一个数的** 行数减1,列数加1 **(3)如果上一个数的行数为1,则下一个数的行数为n(指最下一行) **(4)当上一个数的列数为n时,下一个数的列数应为1,行数减1 **(5)如果按上面的规则确定的位置数已有数,或者上一个数是第1行第n列时,则把 ** 下一个数放在上一个数的下面 ********************************************************************/ #include void main(){ int a[16][16],i,j,k,p,m,n; /*初始化*/ p=1; while(p==1){ printf("input n.(0n)){

C语言程序设计第二版第四章第七章课后答案

1、输入函数scanf的参数错误,应该为:scanf("%f",&k); 2、|1234 1234 | 3、ff10 4、1,3,1 5、原字符串左边加空格再加字符串本省,字符个数总和为5个 6、scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2); 7、 printf("a+b=%d\n",a+b); printf("a-b=%d\n",a-b); printf("a*b=%d\n",a*b); printf("a/b=%d\n",a/b); printf("(float)a/b=%f\n",(float)a/b); printf("a%b=%d\n",a%b); 8、 void main() { float r; float s,c; printf("please input the number:"); scanf("%f",&r); if(r>=0) { s = 3.14*r*r; c = 2*3.14*r; printf("s = %f, c = %f\n",s,c); } else printf("you input number is error!"); } 9 void main() {int n; printf("please input the number:"); scanf("%d",&n); if(n>=100 && n <= 999) printf("%d%d%d",n%10,(n/10)%10,n/100); else printf("you input number is error!"); } 10、 void main() { int i,j,k; scanf("%d,%d,%d",&i,&j,&k); ((i%2 != 0?1:0) + (j%2 != 0?1:0)+(k%2 != 0?1:0)) == 2?printf("YES\n"):printf("NO\n"); } 11、 void main()

C程序设计书面作业

C 程序设计 第七章习题 1、分析并写出下面程序的运行结果。 #include “stdio.h” int Square(int i){ return i*i; } int main(){ int i=0; i=Square(i); for( ; i<3;i++){ static int i=1; i+=Square(i); printf(“%d,”,i); } printf(“%d\n”,i); return 0; } 2、用全局变量模拟编程显示一个数字式时钟,然后上机验证。#include int hour,minute,second; /*定义全局变量*/ void update(){ seconde++; if(second==60){ ① minute++; } if( ②){ minute=0; hour++; } if(hour==24) ③; } void display(){ printf(“④“,hour,minute,second); } void delay(){ int t; for(t=0;t<10000000; t++); /*用循环体为空语句的循环实现延时*/

} int main(){ int i; ⑤ ; for(i=0;i<10000000;i++){ /*利用循环结构控制时钟运行的时间*/ update(); /*更新时、分、秒显示值*/ display(); /*显示时、分、秒*/ delay(); /*模拟延迟时间为1秒*/ } return 0; } 3、用函数编程计算两整数的最大值,在主函数中调用该函数计算并输出从键盘输入的两整数的最大值。 4、请分别用以下三种方法编写计算最大公约数的函数Gcd(),在主函数中调用该函数计算并输出从键盘任意输入的两整数的取大公约数。 (1)穷举法。由于a和b的最大公约数不可能比a和b中的较小都还大,否则一定不能整除它,因此,先找出a和b中的较小者,然后从该数开始逐次减1尝试每种可能,即检验该数到1的所有整数,第一个满足公约数条件的值就是a和b的最大公约数。 (2)欧几里得算法,也称辗转相除法。对正整数a和b,连续进行求余运算,直到余数为0为止,此时非0的除数就是最大公约数。(3)递归方法。对正整数a和b,当a>b时,若a中含有与b相同的公约数,则a中去掉b后剩余的部分a-b中也应含有与b相同的公约数,对a-b和b计算公约数就相当于对a和b计算公约数。反复使用最大公约数的如下3条性质,直到a和b相等为止,这时a或b就是它们的取大公约数。 性质1 如果a>b,则a和b与a-b和b的最大公约数相同,即Gcd(a,b)=Gcd(a-b,b). 性质2 如果b>a,则a和b与a和b-a的最大公约数相同,即Gcd(a,b)=Gcd(a,b-a). 性质3 如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a,b)=a=b. 5、编写一个递归函数,用以实现从1到n这n个数的累加和。 6、编写一个递归函数,用以实现n的阶乘。 7、中国古代民间有一个游戏:两个人从1开始轮流报数,每人每次可以报一个数或两个连续的数,谁先报到30,谁为胜方。若要改成游戏者与计算机做这个游戏,则首先需要决定谁先报数,可以通过生成一个随机整数来决定计算机和游戏者谁先报数。计算机报数的原则为:若剩下数据的个数除以3,余数为1,则报1个数,若剩下数除以3,余数为2,则报2个数,否则随机报1个或2个数。游戏者通过键盘输入自己报的数,所报的数必须符合游戏的规则。如果计算机和游戏者都未报到30,则可以接着报数。先到到30的一方为胜。请

C++ Primer Plus 第六版 第七章编程题答案

//7.13.10 #include double add(double x,double y); double subtraction(double x,double y); double calculate(double x,double y ,double (*ps)(double a ,double b)); int main() { using namespace std; cout << "Please enter two number: \n"; double x,y; cin >> x >>y ; if(cin) { double result_add,result_subtraction; result_add = calculate(x,y,add); result_subtraction = calculate(x,y,subtraction); cout << "The sum of "<< x << " and "<< y << "is " << result_add<> x; cout << "Enter another number: "; cin >> y; } return 0; } double add(double x,double y) { return x+y; } double subtraction(double x,double y) { return x-y; } double calculate(double x,double y,double (*ps)(double,double)) { double a; a = (*ps)(x,y); return a;

C语言程序设计现代方法第七章答案

Chapter 7 Answers to Selected Exercises 3. [was #4] (b) is not legal. 4. [was #6] (d) is illegal, since printf requires a string, not a character, as its first argument. 10. [was #14] unsigned int, because the (int) cast applies only to j, not j*k. 12. [was #16] The value of i is converted to float and added to f, then the result is converted to double and stored in d. 14. [was #18] No. Converting f to int will fail if the value stored in f exceeds the largest value of type int. Answers to Selected Programming Projects 1. [was #2] short int values are usually stored in 16 bits, causing failure at 18 2. int and long int values are usually stored in 32 bits, with failure occurring at 46341. 2. [was #8] #include int main(void) { int i, n; char ch; printf("This program prints a table of squares.\n"); printf("Enter number of entries in table: "); scanf("%d", &n);

C语言程序设计_第二阶段练习参考答案

江南大学现代远程教育第二阶段练习题 考试科目:《C语言程序设计》第七章至第九章(总分100分) 学习中心(教学点)批次: 层次: 专业: 学号:身份证号:姓名:得分: 一、单项选择题(本题共20小题,每小题2分,共40分.) 1、有以下程序 main() {?int?p[7]={11,13,14,15,16,17,18},i=0,k=0; ?while(i<7&&p[i]%2){k=k+p[i];i++;} ?printf("%d\n",k); } 执行后输出结果就是( )。 A、58 B、56 C、45 D、24 2、以下叙述中正确得就是( )。 A、全局变量得作用域一定比局部变量得作用域范围大 B、静态(static)类别变量得生存期贯穿于整个程序得运行期间 C、函数得形参都属于全局变量 D、未在定义语句中赋初值得auto变量与static变量得初值都就是随机值 3、程序如下: #define N 5 #defineM1 N*3 #define M2 N*2 main() { int i; i=M1+M2; printf(“%d\n”,i); } 程序编译后运行得输出结果就是( )。 A、10 ?B、20??C、25??D、30 4、有如下程序 void? f(int?x,int?y) {?int?t; if(x〈y){?t=x;?x=y;?y=t; }

} main() {int?a=4,b=3,c=5; ?f(a,b); f(a,c); f(b,c); printf("%d,%d,%d\n”,a,b,c); } 执行后输出结果就是( ). A、 3,4,5 ??B、 5,3,4 C、 5,4,3 D、4,3,5 5、有以下程序 main() {?char?s[]="\n123\\"; ?printf("%d,%d\n”,strlen(s),sizeof(s)); } 执行后输出结果就是()。 A、赋初值得字符串有错 B、 6,7 C、5,6? D、 6,6 6、若已定义得函数有返回值,则以关于该函数调用得叙述中错误得就是( )。 A、调用可以作为独立得语句存在? B、调用可以作为一个函数得实参 C、调用可以出现在表达式中?? D、调用可以作为一个函数得形参 7、以下不能正确定义二维数组得选项就是()。 A、 int a[2][2]={{1},{2}};?? B、int a[][2]={1,2,3,4}; C、 int a[2][2]={{1},2,3};? D、 int a[2][]={{1,2},{3,4}}; 8、有以下函数定义: void fun( int n,double x) {…… } 若以下选项中得变量都已正确定义并赋值,则对函数fun得正确调用语句就是( )。 A、fun(int y,doublem); B、k=fun(10,12、5); C、fun(x,n); D、voidfun(n,x); 9、有以下程序 #define f(x) x*x main() { int i; i=f(4+4)/f(2+2); printf(“%d\n”,i); } 执行后输出结果就是( )。 A、28 B、22 C、16 D、4

C语言程序设计教程 第七章 课后习题参考答案

P198 3 求主、副对角线元素之和 #include #define M 4 #define N 4 int main() { int a[M][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; int i,j,m=0,n=0; for(i=0;i void input(int a[],int n); void reverse(int a[],int n);

int main() { int a[5]; int size=sizeof(a)/sizeof(int); input(a,size); reverse(a,size); printf("\n"); return 0; } void input(int a[],int n) { int i; printf("请输入%d个整数:\n",n); for(i=0;i void reverse(int a[],int n); void print(int a[],int n); int main() { int a[]={1,2,3,4,5,11,16,13}; int size=sizeof(a)/sizeof(int); print(a,size); reverse(a,size);

c程序设计(谭浩强)第七章习题答案

# include # include # include /*intyue(inta,int b) //求最大公约数 { inti,min; min=a>b?b:a; for(i=min;i>0;i--) { if(a%i==0&&b%i==0) { returni; break; } } } intbei(inta,int b) //求最小公倍数 { int c; return c=a*b/yue(a,b); } int main() { inta,b; printf("enter number:"); scanf("%d %d",&a,&b); printf("%d和%d的最大公约数和最小公倍数分别为:%d,%d\n",a,b,yue(a,b),bei(a,b)); } void det1(float a,floatb,float c) //求根 { float x1,x2; x1=(-b+sqrt(b*b-4*a*c))/(2*a); x2=(-b-sqrt(b*b-4*a*c))/(2*a); printf("x1=%f,x2=%f\n",x1,x2); } void det2(float a,float b) { float x=-b/(2*a); printf("x1=x2=%f\n",x); } void det3() { printf("无实数根\n");

} int main() { floata,b,c,d; printf("enter a,b,c:"); scanf("%f %f %f",&a,&b,&c); d=b*b-4*a*c; if(d>0) det1(a,b,c); if(d==0) det2(a,b); if(d<0) det3(); } void sushu(int a) //判断素数 { inti,k; k=sqrt(a); if(a==2||a==3) printf("%d是素数\n",a); else for(i=2;i<=k;i++) if(a%i!=0) continue; else {printf("%d不是素数\n",a);break;} if(i==k+1) printf("%d是素数\n",a); } int main() { int a; printf("enter number:"); scanf("%d",&a); sushu(a); }*/ /* void chang(int a[][3]) //转置,数组名作参数。{ inti,j,t; for(i=0;i<3;i++) for(j=0;j<3;j++)

相关主题
相关文档
最新文档