电大《C++语言程序设计》第1、2、3、4次作业及答案.doc
专业好文档第一次作业一、写出下列每个程序运行后的输出结果1. #include<stdio.h>void 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. #include<stdio.h>void main()int i,s=0;for(i=1;i<=6;i+)s+=i*i;printf("s=%dn",s);3. #include<stdio.h>void main()int i,s1=0,s2=0;for(i=0;i<10;i+)if(i%2)s1+=i;else s2+=i;printf("%d %dn",s1,s2);4. #include<stdio.h>void main()int n=10,y=1;while(n-)y+;y+;printf("y=%dn",y);5. #include<stdio.h>void 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. #include<stdio.h>#include<math.h>void main()int i,n;for(n=2;n<=20;n+)int temp=(int)sqrt(n);/sqrt(n)求出n的平方根并取整for(i=2;i<=temp;i+)if(n%i=0)break;if(i>temp)printf("%d ",n);printf("n");7. #include<stdio.h>#include<math.h>const 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<stdio.h>#include<math.h>const int M=20;void main()int i,s;for(i=1,s=0;i<15;i+)if(i%2=0 | i%3=0)continue;printf("%d ",i);s+=i;printf("%dn",s);参考答案:1、答案:11 14 switch end.2、答案:s=91.3、答案:25 20.4、答案:y=21.5、答案:1 1 2 3 58 13 21 34 556、答案:2 3 5 7 11 13 17 197、答案:10 6 48、答案:1 5 7 11 13 37第二次作业一、根据下列每个题目要求编写程序1编写一个函数,函数头格式为“void fun4(char *a , int b)”,分别求出由字符指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素。2编写一个函数,函数头格式为“double Mean(double aMN , int m , int n)”,要求返回二维数组amn中所有元素的平均值,假定在计算过程是采用变量v存放平均值。3编写一个递归函数“int FF(int a , int n)”,求出数组a中所有元素n个元素之积并返回。4编写一个主函数,利用while循环,求出并显示满足不等式1+1/2+1/3+1/n>5的最小n值。5编写一个主函数,求满足不等式22+42+n2<1000的最大n值,假定分别用i和s为取偶数值和累加值的变量,并限定使用do循环编程。6编写一个主函数,计算并输出n!的值,其中n值由键盘输入。参考答案:1、答案:#include<stdio.h>void 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;i<10;i+)printf("%d ",bi);*/2、答案:#include<stdio.h>const int M=2,N=3;double Mean(double aMN, int m,int n )double v=0;for(int i=0;i<m;i+)for(int j=0;j<n;j+)v+=aij;return v/(m*n);/*void main()double a23=1,2,3,4,5,6;printf("%lfn",Mean(a,2,3);*/3、答案:#include<stdio.h>int FF(int a , int n)int mul=1;if(n=1)mul*=a0;else mul=an-1*FF(a,n-1);return mul;/*void main()int a6=1,2,3,4,5,6;printf("%dn",FF(a,6);*/4、答案:#include<stdio.h>void 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、答案:#include<stdio.h>void main()int s=0,i=2;dos+=i*i;if(s+(i+2)*(i+2)>=1000)break;else i+=2;while(true);printf("i=%d,s=%d",i,s);6、答案:#include<stdio.h>void 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 <stdio.h>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;default:printf("BB "); break;void main() char a1 = 'b', a2 = 'C', a3 = 'f'SB(a1); SB(a2); SB(a3); SB('A');printf("n");2 程序代码:#include <stdio.h>#include <stdlib.h>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); 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 <stdio.h>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("main: x, y = %d, %dn", x, y);WF(x, y);x = 2 * x;printf("main: x, y = %d, %dn", x, y);4 程序代码:#include <stdio.h>#include <string.h>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 程序代码:#include <stdio.h>void InsertSort(int a, int n)int i, j, x;for(i = 1; i < n; i +) / 进行n-1次循环x = ai;for(j = i - 1; j >= 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 <stdio.h>void main() int a8 = 3, 5, 7, 9, 11, 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 <stdio.h>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 程序代码:#include <stdio.h>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 n, int k) int c = 0, i;for(i = 0; i < n; i +)if(ai >= k) c +;return c;3 程序代码:#include <stdio.h>#include <stdlib.h>#include <time.h>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() % 20 + 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 <stdio.h>#include <stdlib.h>void LI(int n) int * a = malloc(n * sizeof(int);int i;for(i = 0; i < n; i +) scanf("%d", a + i);for(i = n - 1; 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 < n; i +)if(ai >= s) m +;return m;参考答案:一、1、答案:运行结果:GG PP BB WW 2、答案:运行结果:12.00 160.00 3.503、答案:运行结果:main: x, y = 18, 23subs: 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、答案:返回双精度数数组a的前n个元素中不小于平均值的元素个数。第四次作业一、写出下列每个程序运行后的输出结果1 程序代码:#include <stdio.h>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 + 20);2 程序代码:#include <stdio.h>#include <string.h>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 <stdio.h>struct Worker char 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 %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 < n; i +)scanf("%s %d %f", &ai.name, &ai.age, &ai.pay);2 程序代码:struct StrNode char name15; / 字符串域struct StrNode * next; / 指针域;struct StrNode * QB(int n) struct StrNode * f, * p;if(n = 0) return NULL;f = malloc(sizeof(struct StrNode);scanf("%s", f->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; / 结点值域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 < p->data) p = f;f = f->next;return p;4 * 程序代码:struct IntNode int data; / 结点值域struct IntNode * next; / 结点指针域;int Count(struct IntNode * f)int c = 0;while(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(struct IntNode);f->next = p;return f->next;6 程序代码:#include <stdio.h>#include <stdlib.h>#include <string.h>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:xxkxuxk1.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结束 "If we don't do that it will go on and go on. We have to stop it; we need the courage to do it."His comments came hours after Fifa vice-president Jeffrey Webb - also in London for the FA's celebrations - said he wanted to meet Ivory Coast international Toure to discuss his complaint.CSKA general director Roman Babaev says the matter has been "exaggerated" by the Ivorian and the British media.Blatter, 77, said: "It has been decided by the Fifa congress that it is a nonsense for racism to be dealt with with fines. You can always find money from somebody to pay them."It is a nonsense to have matches played without spectators because it is against the spirit of football and against the visiting team. It is all nonsense."We can do something better to fight racism and discrimination."This is one of the villains we have today in our game. But it is only with harsh sanctions that racism and discrimination can be washed out of football."The (lack of) air up there Watch mCayman Islands-based Webb, the head of Fifa's anti-racism taskforce, is in London for the Football Association's 150th anniversary celebrations and will attend City's Premier League match at Chelsea on Sunday."I am going to be at the match tomorrow and I have asked to meet Yaya Toure," he told BBC Sport."For me it's about how he felt and I would like to speak to him first to find out what his experience was."Uefa has opened disciplinary proceedings against CSKA for the "racist behaviour of their fans" during City's 2-1 win.Michel Platini, president of European football's governing body, has also ordered an immediate investigation into the referee's actions.CSKA said they were "surprised and disappointed" by Toure's complaint. In a statement the Russian side added: "We found no racist insults from fans of CSKA."Baumgartner the disappointing news: Mission aborted.The supersonic descent could happen as early as Sunda.The weather plays an important role in this mission. Starting at the ground, conditions have to be very calm - winds less than 2 mph, with no precipitation or humidity and limited cloud cover. The balloon, with capsule attached, will move through the lower level of the atmosphere (the troposphere) where our day-to-day weather lives. It will climb higher than the tip of Mount Everest (5.5 miles/8.85 kilometers), drifting even higher than the cruising altitude of commercial airliners (5.6 miles/9.17 kilometers) and into the stratosphere. As he crosses the boundary layer (called the tropopause),e can expect a lot of turbulence.The balloon will slowly drift to the edge of space at 120,000 feet ( Then, I would assume, he will slowly step out onto something resembling an Olympic diving platform.Below, the Earth becomes the concrete bottom of a swimming pool that he wants to land on, but not too hard. Still, he'll be traveling fast, so despite the distance, it will not be like diving into the deep end of a pool. It will be like he is diving into the shallow end.Skydiver preps for the big jumpWhen he jumps, he is expected to reach the speed of sound - 690 mph (1,110 kph) - in less than 40 seconds. Like hitting the top of the water, he will begin to slow as he approaches the more dense air closer to Earth. But this will not be enough to stop him completely.If he goes too fast or spins out of control, he has a stabilization parachute that can be deployed