c语言上机题
C语言上机100题

1:第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:int fun(int score[],int m,int below[]){int i,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}2:第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:void fun(int *a,int *n){int i,j=0;for(i=2;i<1000;i++)if ((i%7==0 ||i%11==0)&& i%77!=0)a[j++]=i;*n=j;}3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回. 答案:void fun(int x, int pp[],int *n){int i=1,j=0;k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0){t[j]=I;j++;}for(i=0;i<j;i++)if(x%t[i]==0){pp[k]=t[i];k++;}*n=k;}4:第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中”a"到”z"26各字母各自出现的次数,并依次放在pp所指的数组中。
答案:void fun(char *tt, int pp[]){int i;for (i=0;i<26;i++)pp[i]=0;while (*tt){switch (*tt){case ‘a':pp[0]++;break;case ‘b':pp[1]++;break;case ‘c’: pp[2]++;break;case ‘d’: pp[3]++;break;case ‘e’:pp[4]++;break;case ‘f’:pp[5]++;break;case ‘g’: pp[6]++;break;case ‘h’: pp[7]++;break;case ‘i’:pp[8]++;break;case ‘j': pp[9]++;break;case ‘k’: pp[10]++;break;case ‘l': pp[11]++;break;case ‘m’: pp[12]++;break;case ‘n': pp[12]++;break;case ‘o’:pp[14]++;break;case ‘p’: pp[15]++;break;case ‘q’:pp[16]++;break;case ‘r’:pp[17]++;break;case ‘s’:pp[18]++;break;case ‘t':pp[19]++;break;case ‘u’:pp[20]++;break;case ‘v’:pp[21]++;break;case ‘w’: pp[22]++;break;case ‘x':pp[23]++;break;case ‘y’: pp[24]++;break;case ‘z’: pp[25]++;break;}tt++;}}5: 第5题请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m且紧靠m的k各素数存入xx所指的数组中.答案:void fun(int m, int k,int xx[]){int g=0,I,j,flag=1;for(i=m+1;i<m*m;i++){for(j=0;j<I;j++){if(i%j!=0)flag=1;else{flag=0;break;}}if (flag==1 &&j〉=i){if (k>=0){xx[g++]=i;k——;}elsebreak;}}}6:第6题请编写一个函数void fun(char a[],char[],int n),其功能是:删除以各字符串中指定下标的字符.其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
C语言上机150道题

C语言上机150道题及参考答案1.某一门课程考试之后,需要统计考生(10人)的平均成绩,并找出其中的最高分和最低分。
2.从键盘输入两个正整数,输出这两个整数的商,要求商的小数点后保留5位。
例如输入355和113,输出3.14159。
3.用while循环结构编写程序打印ASCII码为33-127的字符。
4.用do-while,for循环结构编写程序打印ASCII码为33-127的字符。
5.用for循环结构编写程序打印ASCII码为33-127字符。
6.在1-500中,找出能同时满足用3除余2,用5除余3,用7除余4的所有整数,用循环结构。
7.输入一个整数将其倒着输出,如54321——12345。
8.计算s=1+1/3+1/5+…+1/n,截止到1/n<10-4。
9.从键盘输入一整数n,计算1*1+2*2+...+n*n的值。
10.用while 循环计算1+2+……+100的和。
11.用do while循环计算1+2+……+100的和。
12.用for 循环计算1+2+……+100的和。
13.输入一个小于等于10的整数n ,计算n!。
14.输入两个正整数m和n,计算m!+n!,m和n的值均小于10。
15.用循环语句,计算1~100之间的所有3的倍数之和。
16.用循环语句,计算100-200之间的所有7的倍数之和。
17.输出1-100之间,7的整数倍数或数字尾数为7的数字,统计出这些数字个数。
18.输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
19.输入一个整数,统计它有几位数。
如输入367,则该数有3位数。
20.编写程序,输出1到50中间所有能被3整除的正整数。
21.把100~200之间不能被3整除的输出。
22.编程Y=1+3+5+7+...111。
23.编程y=1*1/2*1/3*1/4*1/5*1/6*...前十项之积。
24.编程输出九九乘法表。
25.求1到100奇数和。
c语言上机考试训练题库及答案

3000≤s 15%折扣
设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为:f=p*w*s*(1-d),请按照上述标准利用switch语句编写程序计算运费,并画出程序NS图。
#include <stdio.h>
int main()
{
if(i%2==0&&i%3==0&&i%7==0)
printf("%d\n",i);
}
}
26.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
#include<stdio.h>
main()
{
char ch;
int z=0,k=0,s=0,q=0;
while((ch=getchar())!='\n')
#include<stdio.h>
void main()
{int i,sum=0;
for(i=100;i<=996;i+=4)
if(i/10%10!=4)
sum+=i;
printf("和为:%d",sum);
}
15.输入一个字符串,统计该字符串的长度以及字母a出现的次数。
#include <stdio.h>
void main()
{int i,j=0;
char ch[ ]=" ";
printf("please input some characters\n");
gets(ch);
for (i=0;ch[i];i++)
C语言上机作业试题5套含答案

第一次上机作业(2021):要求:独立完成,上机调试通事后上交作业提交邮件主题命名:班级学号姓名(第1次作业),例如:电1301班2王鹏(第1次作业)以附件形式将每次作业的所有程序源程序紧缩打包后提交,紧缩文件命名格式同上。
程序必需采用缩进格式1.大写字母转换成小写字母从键盘输入一个大写英文字母,输出相应的小写字母。
例:输入G输出g2.求平方根输入一个实数x,计算并输出其平方根(保留1 位小数)。
例:输入17输出The square root of is3.温度转换设计一个程序将华氏温度转换成摄氏温度c = 5/9(f-32)a)输入华氏温度(实型)b)输出的摄氏温度结果保留两位小数例:Please input Fahrenheit temperature:The corresponding Celsius temperature is4. 计算旅途时刻输入二个整数time1 和time2,表示火车的起身时刻和抵达时刻,计算并输出旅途时刻。
(输入的有效的时刻范围是0000 到2359,不需要考虑起身时刻晚于抵达时刻的情形。
)例:输入712 1411 (起身时刻是7:12,抵达时刻是14:11)输出The train journey time is 6 hours 59 minutes.5. 数字加密输入一个四位数,将其加密后输出。
方式是将该数每一名上的数字加9,然后除以10 取余,做为该位上的新数字,最后将第1 位和第3 位上的数字互换,第2 位和第4 位上的数字互换,组成加密后的新数。
例:输入1257输出The encrypted number is 4601试探题:你可否编程找出谁做的好事?有四位同窗中的一名做了好事,不留名,夸奖信来了以后,校长问这四位是谁做的好事。
⏹A说:不是我。
⏹B说:是C。
⏹C说:是D。
⏹D说:他乱说。
已知三个人说的是实话,一个人说的是谎话。
此刻要依照这些信息,找出做了好事的人。
c语言上机考试题库

c语言上机考试题库单项选择题1.有char c=’1’,下面说法中正确的是()。
A. 语句putc+2);的输入结果为51B. 语句put“%d”,c+2);的输出结果为3C. 语句put“%c”,c+2);的输入结果为51D. 语句put“%c”,c+2);的输出结果为32.设c1,c2均就是char型变量,则下面不恰当的函数调用为()。
A. scanf(”c1=2=%c”,&c1,&c2);B. get);C. putc2);D. putc1,c2);3.为了表示关系x>=y>=z,下面C语言表达式中正确的是()。
A. (x>=y)&&(y>=z)B. (x>=y)and(y>=z)C. (x>=y>=z)D. (x>=y)&(y>=z)4.设x,y,z,t为int型变量,则继续执行以下语句后,t的值()。
x=y=z=1;t=++x||++y&&++z;A. 不定值B. 2C. 1D. 05.对if语句中表达式的类型,下面正确的说法是()。
A. 必须就是关系表达式B. 必须是关系表达式或逻辑表达式C. 可以就是任一表达式D. 必须是关系表达式或算术表达式6.对for(表达式1;;表达式3)可以认知为()。
A. for(表达式1;0;表达式3)B. for(表达式1;表达式1;表达式3)C. for(表达式1;1;表达式3)D. for(表达式1;表达式3;表达式3)7.执行语句for(i=1;i++<4;);之后,变量i的值为()。
A. 3B. 4C. 5D. 不确定8.若二维数组a存有m列,则在a[i][j]前的元素个数为()。
A. j*m+iB. i*m+jC. i*m+j-iD. i*m+j+19.下面说法中正确的是()。
A. 在C语言中,可以采用动态内存分配技术,定义元素个数气门的数组B. 在C语言中,数组元素的个数可以不确定,允许随即变动C. 在C语言中,数组元素的数据类型可以不一致D. 在C语言中,定义数组后,就确定了它能容纳的相同数据类型元素的个数10.无法把字符串:“good!”参数值数组b的语句就是()。
C语言上机试题

C语言第一次上机1、有人把C语言称为中级语言,意思是?A. 操作上比低级语言简单,比其它语言复杂B. 其功能比低级语言强,但比高级语言弱C. 其编译方式处于低级语言和高级语言之间D. 既具有低级语言的功能,又具有高级语言功能本题正确答案为:D2、C语言程序由什么组成?A. 函数B. 主程序和子程序C. 子程序D. 过程本题正确答案为:A3、下列说法正确的是?A. VC++6.0是面向对象的高级语言,采用编译方式向机器语言转换B. VC++6.0是面向对象的高级语言,采用解释方式向机器语言转换C. VC++6.0是面向过程的高级语言,采用编译方式向机器语言转换D. VC++6.0是面向过程的高级语言,采用解释方式向机器语言转换本题正确答案为:A4、下列说法错误的是?A. 其它函数不能单独运行,只能被主函数或其它函数调用B. 程序是从第一个函数开始执行C. 主函数执行完毕,程序就结束了D. 程序总是从主函数开始执行,不管主函数在什么位置本题正确答案为:B5、字符串 "\n\\\'\123"包括几个字符(即占用几个字节的存储空间)?A. 4B. 10C. 5D. 11本题正确答案为:C6、假设所有变量均为整数,表达式a=2,b=5,a<b?a++:b,a+b的值是A. 3B. 8C. 7D. 2本题正确答案为:C7、若变量f已说明为float类型,i为int类型,则下面哪个表达式(或语句)能够实现将f中的数值保留小数点后两位,第三位进行四舍五入的运算?A. f=(f*100+0.5)/100.0B. i=f*100+0.5,f=i/100.0;C. f=(int)(f*100+0.5)/100.0;D. f=(f/100+0.5)*100.0;本题正确答案为:B8、若 a=3, 下列表达式的值为?a*a,a+5,a++, a*3A.4B. 45C. 12D. 9本题正确答案为:C9、若a=10, b=20,表示 x在a,b之间的表达式为?A. x>=a && x<=bB. a=<x && x<=bC. x>=a || x<=bD. a<=x<=b本题正确答案为:A10、下面那个表达式的值与其它的不一样?A. sizeof(char)*8B. sizeof(8)C. sizeof(10)*2D. sizeof(double)本题正确答案为:B11、若int a=5, b=4, c=6, d;则执行 d=a>b?(a>c?a:c):b 后,d的值为?A. 5B. 4C. 6D. 1本题正确答案为:C12、下面那个表达式的值为4?A. 11/3B. (int) (11.0/3+0.5)C. (int) (11.0/3)+0.5D. 13.0/3本题正确答案为:B13、下面那个不是合法的常量A. 0101010B. 048C. 0xabD. 348本题正确答案为:B14、若有 char c;表示c为字母的表达式为?A. c>='A'&&c<='z'B. c>='a'&&c<='z' || c>='A' && c<='Z'C. c>='a'&&c<='Z'D. c>='a'&&c<='z' && c>='A' && c<='Z'本题正确答案为:B15、C语言中整形常量不包括种:A. 二进制常量B. 八进制常量C. 十六进制常量D. 十进制常量本题正确答案为:A16、若有 int i=4, k, j;则执行 k=i++, j=++i 后, k与j的值分别为?A. k=4, j=5B. k=5, j=6C. k=5, j=5D. k=4, j=6本题正确答案为:D17、若有 a=3,则执行下列语句为a的值为?a+=a*=a;A. 3B. 12C. 9D. 18本题正确答案为:D18、以下合法的赋值语句是?A. x=y=100B. c=int(a+b);C. x+y;D. d--;本题正确答案为:D19、设x,y,z均为int型变量,则执行语句: x=y=3; t=++x||++y后,y的值为A. 1B. 不定值C. 4D. 3本题正确答案为:D20、若有 scanf("a=%d:%d",&a,&b);想把10给a,20给b, 则正确的输入格式为?A. a=10,b=20B. a=10:20C. a=10,20D. a=10:b=20本题正确答案为:B 21、若有scanf("%2d%3d%d",&a,&b,&c);运行时输入 1234567890,则a,b,c的值分别为?A. a=12,b=345,c=678B. 输入错误C. a=1234567890,b,c保持原来的值D. a=12,b=345,c=67890本题正确答案为:D22、若有scanf("%2d%*2d%3d",&a,&b);程序运行时输入 123456789,则a,b的值为?A. a=12,b=567B. a=1234,b=567C. a=12,b=345D. a=12,b=34本题正确答案为:A23、若有 char c;c=getchar()=='A';程序运行时从键盘输入 A, 则c的值为?A. AB. 0C. 以上都不对D. 1本题正确答案为:D24、若有int a=1234;printf("%2d",a); 的输出结果是?A. 12B. 34C. 出错D. 1234本题正确答案为:D程序设计1、函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。
C语言上机100题
一、填空题考试做题要求:1、在__1__处填写正确的答案,并将下划线和数字删除。
2、将题目做完之后一定要保存。
3、不能删除/**********found**********/,也不能多行或少行。
1、给定程序中,函数fun的功能是根据形参i的值返回某个函数的值。
当调用正确时, 程序输出:x1=5.000000, x2=3.000000,x1*x1+x1*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!#include <stdio.h>double f1(double x){ return x*x; }double f2(double x, double y){ return x*y; }/**********found**********/__1__ fun(int i, double x, double y){ if (i==1)/**********found**********/return __2__(x);else/**********found**********/return __3__(x, y);}main(){ double x1=5, x2=3, r;r = fun(1, x1, x2);r += fun(2, x1, x2);printf("\nx1=%f, x2=%f, x1*x1+x1*x2=%f\n\n",x1, x2, r);}2、程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。
函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。
#include <stdio.h>#include <string.h>struct student {long sno;char name[10];float score[3];};void fun(struct student a[], int n){ /**********found**********/__1__ t;int i, j;/**********found**********/for (i=0; i<__2__; i++)for (j=i+1; j<n; j++)/**********found**********/if (strcmp(__3__) > 0){ t = a[i]; a[i] = a[j];a[j] = t; }}main(){ struct student s[4]={ {10001,"ZhangSan", 95, 80, 88}, {10002,"LiSi", 85, 70, 78}, {10003,"CaoKai", 75, 60, 88},{10004,"FangFang", 90, 82, 87}};int i, j;printf("\n\nThe original data :\n\n");for (j=0; j<4; j++){printf("\nNo:%ldName:%-8sScores: ",s[j].sno, s[j].name);for (i=0; i<3; i++)printf("%6.2f ", s[j].score[i]);printf("\n");}fun(s, 4);printf("\n\nThe data after sorting:\n\n");for (j=0; j<4; j++){ printf("\nNo: %ld Name: %-8sScores: ",s[j].sno, s[j].name);for (i=0; i<3; i++)printf("%6.2f ", s[j].score[i]);printf("\n");}}3、给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回;并将大于平均值的数放在形参y所指数组中,在主函数中输出。
C语言上机编程题,全
上机编程题的最大值,并将该数以格式"%.3f"写到1. 对x=1,2,...,10,求函数f(x)=x-10*cos(x)-5*sin(x)考生目录下的新建文件design1.dat中。
#include <stdio.h>#include <math.h>void main(){ FILE *p; float f(float),max,x;p=fopen("design1.dat","w");max=f(1);for(x=2;x<=10;x++)if(f(x)>max) max=f(x);fprintf(p,"%.3f",max);fclose(p);}float f(float x){y=y-10*cos(y)-5*sin(y);return (y);},若x、y取值为区间[1,6]的整数,找出使z取最小值的x1、y1,2. z=f(x,y)=(3.14*x-y)/(x+y)并将x1、y1以格式"%d,%d"写入到考生目录下的新建文件design1.dat中。
#include <stdio.h>void main(){ FILE *p; float f(float x,float y),min;int x,y,x1,y1;p=fopen("design1.dat","w");min=f(1,1);for(x=1;x<=6;x++)for(y=1;y<=6;y++)if(f(x,y)<min){min=f(x,y); x1=x;y1=y;}fprintf(p,"%d,%d",x1,y1);fclose(p);}float f(float u,float v){ return (3.14*u-v)/(u+v); }若x,y取值为区间[0,10]的整数,找出使z取最小值的3. z=f(x,y)=10*cos(x-4)+5*sin(y-2),x1,y1,并将x1、y1以格式"%d,%d"写入到考生目录中Paper子目录下的新建文件design1.dat中。
C语言上机题目 珍藏版
【编程1-3】编写程序输入圆柱体的底面半径radius和高度height,计算并输出圆柱体的表面积S和体积V。
要求:把π定义为宏PI,结果保留2位小数,按下列格式输出:Radius=???.??Area=??volumn=???.??#include <stdio.h>#define PI 3.1416void main(void){float radius;float height;float S;float V;printf("请输入圆柱体的底面半径:");scanf("%f",&radius);printf("请输入高度:");scanf("%f",&height);S=2*PI*radius*radius+2*PI*radius*height;V=PI*radius*radius*height;printf("Radius=%.2f\n",radius);printf("Area=%.2f\n",S);printf("Volumn=%.2f\n",V);}【编程2-3】若某企业根据销售人员的销售额发放提成,计算公式如下(s代表销售额):s<200 没有提成200≤s<400 提成5%400≤s<1200 提成8%1200≤s<2400 提成8%2400≤s<4000 提成8%s≥4000请分别使用if和switch语句结构分别编写程序,实现从键盘上输入销售额,即输出销售额和提成。
要求程序具有纠错能力,如输入负数就输出非法数据的提示信息并结束程序。
if…else-if语句#include <stdio.h>#include <stdlib.h>void main(void){float s;float income;printf("请输入销售额:");scanf("%f",&s);if(s<0){printf("这是非法数据!\n");exit(1);}else if(s<200){printf("没有提成!\n");exit(1);}else if(s<400)income=(s-200)*0.05;else if(s<1200)income=(s-400)*0.08+200*0.05;else if(s<2400)income=(s-1200)*0.1+800*0.08+200*0.05;else if(s<4000)income=(s-2400)*0.15+1200*0.1+800*0.08+200*0.05;elseincome=(s-4000)*0.18+1600*0.15+1200*0.1+800*0.08+200*0.05;printf("销售额是:%.0f,提成是:%.0f\n",s,income);}Switch…case语句#include <stdio.h>#include <stdlib.h>void main(void){float s;float income;printf("请输入销售额:");scanf("%f",&s);if(s<0){printf("这是非法数据!\n");exit(1);}if(s<200){printf("没有提成!\n");exit(1);}switch((int)(s/400)){case 0:income=(s-200)*0.05;break;case 1:case 2:income=(s-400)*0.08+200*0.05;break;case 3:case 4:case 5:income=(s-1200)*0.1+800*0.08+200*0.05;break;case 6:case 7:case 8:case 9:income=(s-2400)*0.15+1200*0.1+800*0.08+200*0.05;break;default:income=(s-4000)*0.18+1600*0.15+1200*0.1+800*0.08+200*0.05;break;}printf("销售额是:%.0f,提成是:%.0f\n",s,income);}【编程3-4】编写程序输出m~n之间的素数(n>m>3),m和n由用户从键盘上输入。
C语言上机试题1-20套
C 语言上机考试题(第一套)1.编写函数fun ,它的功能是:计算并输出下列级数和:)1(1321211+⨯++⨯+⨯=n n S例如,当n = 10时,函数值为:0.909091注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句。
试题程序:#include <conio.h>#include <stdio.h>double fun( int n ){float…………}main() /*主函数 */{ clrscr();printf(″%f\n ″, fun(10));}解答:#include <conio.h> #include <stdio.h> double fun( int n ) { double s=0; int i; for(i=1;i<n+1;i++) s+=1.0/(i*(i+1)); return s; } main() /*主函数 */ { system("cls"); printf("%f\n",fun(10)); }说明:主函数中的clrscr()函数为TC 下使用的清屏函数,在VC 中不能使用,在本题中可以直接删除或改为system("cls")2.在[10000, 20000]范围内考察个位数字是7的素数, 问:(1) 这样的素数有多少个?(2) 其中最大的一个等于几?解答:#include <stdio.h>int main(void){int max,num=0;int i,j;for(i=10000;i<20001;i++){for(j=2;j<i;j++)if( i%j==0 )break;if( j==i && i%10==7){num++;max=i;}}printf("num=%d,max=%d\n",num,max);return 0;}3. 编写程序,从键盘输入一年份,判断该年份是否为闰年。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
改错题
使用VC6打开考生文件夹下的工程kt6_1,此工程包含一个源程序文件kt6_1.cpp,但该程序运行有问题,请改正程序中的错误,使程序的输出结果如下:
Constructor2
Constructor1
i=0
i=10
Destructor
源程序文件kt6_1.cpp清单如下:
#include
classCSample
{
inti;
public:
CSample(){cout<<"Constructor1"<
CSample(intval){cout<<"Constructor2"<
~CSample(){cout<<"Destructor"<
voiddisp();
};
/**********found**********/
voiddisp()
{cout<<"i="<
voidmain()
{
CSample*a,b(10);
/**********found**********/
a->disp();
/**********found**********/
b->disp();
}
【参考答案】
(1)将void disp()
改为:void CSample::disp()
(2)将a->disp();
改为:a=new CSample; a->disp();
(3)将b->disp();
改为:b.disp();
【试题解析】
(1)主要考查类成员函数定义格式的熟练掌握,对于类体外函数
的实现,应该使用作用域符"::",按照返回值类型类名::函数名(参数列表)的形式进行说明;
(2)主要考查对动态存储分配的掌握,根据前面的定义,a是一个指针类型的变量,指向一个对象,但是并没有被初始化,此时a中的数据无任何意义,应该使用动态存储分配new 生成一个新的对象,并将返回的指针赋值给a;
(3)主要考查对象指针与对象在调用成员函数时格式的不同,b是一个对象变量,使用b 调用成员函数应该用"."运算符。
二、简单应用题
编写函数fun(),它的功能是利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。
xn+1=cos(xn)
迭代步骤如下:
(1)取x1初值为0.0。
(2)x0=x1,把x1的值赋给x0。
(3)x1=cos(x0),求出一个新的x1。
(4)若x0-x1的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2)。
(5)所求x1就是方程cos(x)-x=0的一个实根,做为函数值返回。
程序输出结果Root=0.739085。
注意:部分源程序已存在文件kt6_2.cpp中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun
的花括号中填入所编写的若干语句。
文件kt6_2的内容如下:
#include
#include
#include
floatfun()
{
}
voidmain()
{cout<<"Root="<
【参考答案】
float fun()
{
float x1=0.0,x0;
do
{ x0=x1;
x1=cos(x0);}
while(fabs(x0-x1)>=1e-6);
return x1;
}
【试题解析】
解答本题的关键之处在于看清题中所给的“迭代步骤”,同时要理
解xn+1=cosxn通式的含义,要考虑到x1的初值为0.0。
三、综合应用题
使用VC6打开考生文件夹下的工程kt6_3,此工程包含一个源程序文件kt6_3.cpp,其中定义了用于表示考生的类Student,请按要求完成下列操作,将程序补充完整。
(1)定义私有数据成员code、english分别用于表示考生的编号、英语成绩、它们都是int 型的数据。
请在注释“//**1**”之后添加适当的语句。
(2)完成成员函数voidStudent::inputinformation()的定义,该函数用于用户输入一个考生对象的信息,输入格式如下所示:
输入编号:
英语成绩:
计算机成绩:
请在注释“//**2**”之后添加适当的语句。
(3)利用已实现的类Student的成员函数,完成函数voidfirstname(Student*A[],intnum)的定义,该函数根据考生信息A[],输出num个考生中总分最高者的编号及其相应的总分,在此不考虑总分相同的情况。
请在注释“//**3**”之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件kt6_3.cpp清单如下:
#include
classStudent
{//**1**
intcomputer;
inttotal;
public:
voidgetinformation();
voidcomputesum();
intgetcode();
intgettotalscore();
~Student();};
voidStudent::getinformation()
{//**2**
cout<<"英语成绩:";
cin>>english;
cout<<"计算机成绩:";
cin>>computer;}
voidStudent::computesum()
{total=english+computer;
cout<<"编号"<
intStudent::getcode() {returncode;}
intStudent::gettotalscore() {returntotal;}
voidfirstname(Student*A[],intnum) {
//**3**
tempsum=(*A[0]).gettotalscore();
for(inti=1;i
{
if(((*A[i]).gettotalscore())>tempsum) {tempcode=(*A[i]).getcode();
tempsum=(*A[i]).gettotalscore();} }
cout<<"总分最高者--"<
}
voidmain()
{Student*A[3];
inti,n=3;
for(i=0;i
{A[i]=newStudent;
A[i]->getinformation();}
for(i=0;i
{A[i]->computesum();} firstname(A,3);}
【参考答案】
(1)int code;
int english;
(2)cout<<"输入编号:";
cin>>code;
(3)int tempcode,tempsum; tempcode=(*A[0]).getcode(); 【试题解析】
本题是对C++程序设计的综合考查,其设计类的成员及成员函数的定义与调用,数据的输入输出,for循环语句,if条件判断语句等多个知识点,其中(3)中为指针数组的使用,指针数组是一组指针,每一个成员都按照指针的操作规则,但是整个访问规则仍然使用数组下标方式,如A[0]指的是第一个指针,而* A[0]是取出第一个指针指向的内容。