《电大《C++语言程序设计》第1、2、3、4次作业及答案参考参考答案.doc》由会员分享,可在线阅读,更多相关《电大《C++语言程序设计》第1、2、3、4次作业及答案参考参考答案.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、电大C+语言程序设计第1、2、3、4次作业及答案第一次作业一、写出下列每个程序运行后的输出结果1. #includevoid main()int x=5;switch(2*x-3)case 4:printf(%d ,x);case 7:printf(%d ,2*x+1);case 10:printf(%d ,3*x-1);break;default:printf(%s ,defaultn);printf(%sn,switch end.);2. #includevoid main()int i,s=0;for(i=1;i=6;i+)s+=i*i;printf(s=%dn,s);3. #inclu
2、devoid main()int i,s1=0,s2=0;for(i=0;i10;i+)if(i%2)s1+=i;else s2+=i;printf(%d %dn,s1,s2);4. #includevoid main()int n=10,y=1;while(n-)y+;y+;printf(y=%dn,y);5. #includevoid main()int f,f1,f2,i;f1=f2=1;printf(%d %d ,f1,f2);for(i=3;i=10;i+)f=f1+f2;printf(%d ,f);if(i%5=0)printf(n);f1=f2;f2=f;printf(n);6.
3、 #include#includevoid main()int i,n;for(n=2;n=20;n+)int temp=(int)sqrt(n);/sqrt(n)求出n的平方根并取整for(i=2;itemp)printf(%d ,n);printf(n);7. #include#includeconst int M=20;void main()int i,c2,c3,c5;c2=c3=c5=0;for(i=1;i=M;i+)if(i%2=0)c2+;if(i%3=0)c3+;if(i%5=0)c5+;printf(%d %d %dn,c2,c3,c5);8. #include#includ
4、econst int M=20;void main()int i,s;for(i=1,s=0;i5的最小n值。5编写一个主函数,求满足不等式22+42+n21000的最大n值,假定分别用i和s为取偶数值和累加值的变量,并限定使用do循环编程。6编写一个主函数,计算并输出n!的值,其中n值由键盘输入。参考答案:1、答案:#includevoid fun4(char* a,int b)doif(*a=0 & *a=9)b*a-48+;while(*a+);/*void main()char * a=122333444499888;int b10=0;fun4(a,b);for(int i=0;i1
5、0;i+)printf(%d ,bi);*/2、答案:#includeconst int M=2,N=3;double Mean(double aMN, int m,int n )double v=0;for(int i=0;im;i+)for(int j=0;jn;j+)v+=aij;return v/(m*n);/*void main()double a23=1,2,3,4,5,6;printf(%lfn,Mean(a,2,3);*/3、答案:#includeint FF(int a , int n)int mul=1;if(n=1)mul*=a0;else mul=an-1*FF(a,n
6、-1);return mul;/*void main()int a6=1,2,3,4,5,6;printf(%dn,FF(a,6);*/4、答案:#includevoid main()double sum=0;int n=1;while(true)if(sum + 1/(double)n 5)break;elsesum += 1/(double)n;n+;printf(%d, %lfn,n,sum);5、答案:#includevoid main()int s=0,i=2;dos+=i*i;if(s+(i+2)*(i+2)=1000)break;else i+=2;while(true);pri
7、ntf(i=%d,s=%d,i,s);6、答案:#includevoid main()int s=0,n;printf(请输入n的值:);scanf(%d,&n);for(int i=1;i=n;i+)s=s*i;printf(n=%d,s=%d,n,s);第三次作业一、写出下列每个程序运行后的输出结果1 程序代码:#include void SB(char ch) switch(ch) case A: case a:printf(WW ); break;case B: case b:printf(GG ); break;case C: case c:printf(PP ); break;de
8、fault:printf(BB ); break;void main() char a1 = b, a2 = C, a3 = f;SB(a1); SB(a2); SB(a3); SB(A);printf(n);2 程序代码:#include #include double SD(int a, int b, char op) double x;switch(op) case +: x = a + b; break;case -: x = a - b; break;case *: x = a * b; break;case /: if(b) x = (double)a/b; else exit(1
9、); break;default: printf(运算符错!n); exit(1); return x;void main() int x = 20, y = 8;printf(%3.2lf , SD(x, y, -);printf(%3.2lf , SD(x, y, *);printf(%3.2lfn, SD(x + y, y, /);3 程序代码:#include void WF(int x, int y) x = x + y;y = x + y;printf(subs: x, y = %d, %dn, x, y);void main() int x = 18, y = 23;printf
10、(main: x, y = %d, %dn, x, y);WF(x, y);x = 2 * x;printf(main: x, y = %d, %dn, x, y);4 程序代码:#include #include void fun(char ss);void main() char s15 = 567891234;fun(s);printf(%sn, s);void fun(char ss) int i, n = strlen(ss);for(i = 0; i n / 2; i +) char c = ssi;ssi = ssn - 1 - i;ssn - 1 - i = c;5 程序代码:
11、#include void InsertSort(int a, int n)int i, j, x;for(i = 1; i = 0; j -) / 为x顺序向前寻找合适的插入位置if(x aj) aj + 1 = aj;else break;aj + 1 = x;void main() int i;int a6 = 20, 15, 32, 47, 36, 28 ;InsertSort(a, 6);for(i = 0; i 6; i +) printf(%d , ai);printf(n);6 程序代码:#include void main() int a8 = 3, 5, 7, 9, 11,
12、 13, 15, 17 ;int i, * p = a;for(i = 0; i 8; i +) printf(%5d, * p +);if(i + 1) % 4 = 0) printf(n);7 程序代码:#include int LA(int * a, int n) int i, s = 0;for(i = 0; i n; i +)s += ai;return s;void main() int a = 5, 10, 15, 20, 25, 30 ;int b = LA(a, 4);int c = LA(a + 2, 3);printf(%d %dn, b, c);8 程序代码:#incl
13、ude int LB(int * a, int n) int i, s = 1;for(i = 0; i n; i +) s *= * a +;return s;void main() int a = 1, 2, 3, 4, 2, 4, 5, 2 ;int b = LB(a, 4) + LB(&a3, 4);printf(b=%dn, b);二、写出下列每个函数的功能1 程序代码:int WB(int a, int n, int x) int i;for(i = 0; i n; i +)if(ai = x) return 1;return 0;2 程序代码:int WC(int a, int
14、n, int k) int c = 0, i;for(i = 0; i = k) c +;return c;3 程序代码:#include #include #include const int N = 10;int ff(int x, int y) int z;printf(%d + %d = , x, y);scanf(%d, &z);if(x + y = z) return 1; else return 0;void main() int i, a, b, c = 0;srand(time(0); / 初始化随机数序列for(i = 0; i N; i +) a = rand() % 2
15、0 + 1; / rand()函数产生032767之间的一个随机数b = rand() % 20 + 1;c += ff(a, b);printf(得分:%dn, c * 10);4 * 程序代码:int fun6(int m, int n, int b)if(m b & n b) return m * n;else if(m % b = 0 & n % b = 0) return b * fun6(m / b, n / b, b);else return fun6(m, n, + b);5 程序代码:#include #include void LI(int n) int * a = mal
16、loc(n * sizeof(int);int i;for(i = 0; i = 0; i -) printf(%d , * (a + i);printf(n);free(a);6 程序代码:int LK(double a, int n) double s = 0;int i, m = 0;for(i = 0; i n; i +) s += ai;s /= n;for(i = 0; i = s) m +;return m;参考答案:一、1、答案:运行结果:GG PP BB WW 2、答案:运行结果:12.00 160.00 3.503、答案:运行结果:main: x, y = 18, 23su
17、bs: x, y = 41, 64main: x, y = 36, 234、答案:运行结果:4321987655、运行结果:47 36 32 28 20 156、答案:运行结果:3 5 7 911 13 15 177、答案:运行结果:50 608、答案:运行结果:b=184二、1、答案:在整型数组a的前n个元素中查找值为x的元素,找到返回1,找不到返回0。2、答案:统计整型数组a的前n个元素中不小于k的元素个数并返回3、答案:程序随机产生10道20以内整数加法题,请用户回答。并统计得分, 4、答案:调用fun6(m, n, 2)求m和n的最小公倍数5、答案:读入n个整数,然后逆序输出6、答案:
18、返回双精度数数组a的前n个元素中不小于平均值的元素个数。第四次作业一、写出下列每个程序运行后的输出结果1 程序代码:#include struct Worker char name15; / 姓名int age; / 年龄float pay; / 工资;void main() struct Worker x = wanghua, 52, 2350 ;struct Worker y, * p;y = x; p = &x;printf(%s %d %6.2fn, y.name, y.age, y.pay);printf(%s %d %6.2fn, p-name, p-age + 1, p-pay
19、+ 20);2 程序代码:#include #include struct Worker char name15; / 姓名int age; / 年龄float pay; / 工资;void main() struct Worker x;char * t = liouting;int d = 38; float f = 493;strcpy(x.name, t);x.age = d; x.pay = f;x.age +; x.pay *= 2;printf(%s %d %6.2fn, x.name, x.age, x.pay);3 程序代码:#include struct Worker cha
20、r name15; / 姓名int age; / 年龄float pay; / 工资;int Less(struct Worker r1, struct Worker r2) if(r1.age r2.age) return 1;else return 0;void main() struct Worker a4 = abc, 25, 420 , def, 58, 638 , ghi, 49, 560 , jkl, 36, 375 ;struct Worker x = a0;int i;for(i = 1; i 4; i +)if(Less(x, ai) x = ai;printf(%s %d
21、 %6.2fn, x.name, x.age, x.pay);二、写出下列每个函数的功能1 程序代码:struct Worker char name15; / 姓名int age; / 年龄float pay; / 工资;void QA(struct Worker a, int n) int i;for(i = 1; i name);p = f;while(- n) p = p-next = malloc(sizeof(struct StrNode);scanf(%s, p-name);p-next = NULL;return f;3 程序代码:struct IntNode int data;
22、 / 结点值域struct IntNode * next; / 结点指针域;struct IntNode * FindMax(struct IntNode * f)struct IntNode * p = f;if(! f) return NULL;f = f-next;while(f) if(f-data data) p = f;f = f-next;return p;4 * 程序代码:struct IntNode int data; / 结点值域struct IntNode * next; / 结点指针域;int Count(struct IntNode * f)int c = 0;whi
23、le(f) c +;f = f-next;return c;5 程序代码:struct IntNode int data; / 结点值域struct IntNode * next; / 结点指针域;struct IntNode * Input(int n)struct IntNode * f, * p;f = malloc(sizeof(struct IntNode);if(n = 0) return NULL;f-next = NULL;printf(从键盘输入%d个整数:, n);while(n -) scanf(%d, &(f-data);p = f;f = malloc(sizeof(
24、struct IntNode);f-next = p;return f-next;6 程序代码:#include #include #include void JA(char * fname)FILE * fout = fopen(fname, w);char a20;printf(输入若干个字符串,每个字符串长度小于20,字符串end作为结束标志n);while(1) scanf(%s, a);if(strcmp(a, end) = 0) break;fputs(a, fout);fputc(n, fout);fclose(fout);void main()char * p = d:xxkx
25、uxk1.txt;JA(p);参考答案:一、1、答案:运行结果:wanghua 52 2350.00wanghua 53 2370.002、答案:运行结果:liouting 39 986.003、答案:运行结果:def 58 638.00二、1、答案:从标准输入设备读入n-1个人员的信息,依次存到结构数组的a1到an-1元素中2、答案:创建具有n个struct StrNode结点的单向链表并返回其表头结点地址,n为0时返回NULL。3、答案:函数功能:查找单向链表中结点值域最大的结点,并返回其地址。如链表为空则返回NULL4、答案:函数功能:统计并返回单向链表结点个数5、答案:函数功能:从表尾结点开始,逆序创建具有n个struct IntNode结点的单向链表并返回其表头结点地址,n为0时返回NULL6、答案:函数功能:将输入的若干个字符串保存到文本文件d:xxkxuxk1.txt中,每个字符串一行。输入的单个字符串长度必须小于20,输入字符串end结束 24