本学期C上机题
C 上机课题及部分答案

课后习题
(1)定义一个复数类 Complex,复数的实部 Real 与虚部 Image 定义为私有数据成员。 用复数类定义复数对象 c1、c2、c3,用默认构造函数将 c1 初始化为 c1=20+40i ,将 c2 初 始化为 c2=0+0i,用拷贝构造函数将 c3 初始化为 c3=20+40i。用公有成员函数 Dispaly()显示 复数 c1、c2 与 c3 的内容。 (2)定义一个矩形类 Rectangle, 矩形的左上角(Left,Top)与右下角坐标(Right,Bottom) 定义为保护数据成员。用公有成员函数 Diagonal()计算出矩形对角线的长度,公有成员函数 Show()显示矩形左上角与右下角坐标及对角线长度。在主函数中用 new 运算符动态建立矩 形对象 r1,初值为(10,10,20,20) 。然后调用 Show()显示矩形左上角与右下角坐标及对 角线长度。最后用 delete 运算符回收为矩形动态分配的存储空间。
2.#include<iostream> #include<math.h> using namespace std; class Prime //声明 Prime 类 { private: int a[25]; int n1,n2; int num; public: Prime(int m1,int m2):n1(m1),n2(m2),num(0){} //定义构造函数并对参数初始化 void primef(); //筛选素数并统计 void show(); //输出素数 }; void Prime::primef() { bool k; //定义 bool 类型的参数 for(int i=n1; i<=n2;i++) { k=true; for(int j=2;j<=sqrt(i);j++) if(i%j==0) { k=false; break; } if(k) a[num++]=i; } } void Prime::show() { for(int i=0;i<num;i++) { if(i%5==0) cout<<endl; cout<<a[i]<<' '; } cout<<endl; }
C语言上机考试题目

1、编写一个C 程序,比较任意三个整数的大小,然后输出其中的最大值。
方法不限。
2、计算圆的面积和周长。
要求:使用符号常量定义圆周率为3.14。
3、输入某学生三个科目的期末考试成绩,计算出该学生的成绩总分和平均分。
要求:有输入数据和输出结果的提示。
4、输入三角形的三边长,求三角形的面积。
三角形的三边长用变量a,b,c, 其中s=(a+b+c)/2。
提示:求某个数x 的平方根函数为sqrt(x),当直接用此函数时,需要在main 函数上面加入头文件:math.h 。
5、输入一个四位的正整数(如果不是,提示“输入错误”),对其个、十、百、千位四位数字求和并实现个位数与百位数、十位数与千位数的互换然后将这个数输出。
例如,输入一个四位正整数1234,通过你的程序,如何输出和10以及新的数3412。
6、求ax 2+b x+c=0方程的根。
a ,b ,c 由键盘输入。
提示:众所周知,一元二次方程式的根为:x1= x2= 可以将上面的分式分为两项:p= ,q= x1=p+q, x2=p -q 。
注意:在b 2-4ac>0的条件下,才可以求方程的根,否则提示a,b,c 的值输入错误。
7、输入三角形的三条边长,判断能否构成三角形,若能输出YES 并且输出三角形的面积,若不能则输出NO 。
8、任意输入三个整型数,要求按照从大到小的顺序输出。
9、从键盘输入一个四位数的年份,判断其是否为闰年。
aac b b 242-+-a ac b b 242---a b 2-aac b 242-10、有一个函数:写出程序,输入x的值,输出对应的y的值。
要求加上相应的文字说明。
11、编程实现大小字母的转换。
从键盘输入一个字符,要求使用getchar()函数读入字符。
如果输入的是一个小写字母,转换为大写字母;如果输入的是一个大写字吗,转换为小写字母;如果输入的是一个非字母符号,照原样输出。
要求有文字说明。
12、判断从键盘输入的是数字字符、大写字母、小写字母、空格还是其他字符。
大学C 上机实验题目(版)

20XX年复习资料大学复习资料专业:班级:科目老师:日期:实验前言(建议认真阅读)一、上机实验的目的上机实验的目的是提高学生的分析问题、解决问题的能力和动手能力,通过实践环节理解C++语言的基本结构和程序设计方法。
通过亲手编程掌握C++语言编程的方法。
二、实验基本内容为了使学生在上机实验时目标明确,本实验指导书针对课程内容编写了五个实验。
学生在课内机时先完成指导书中标有“*”号的程序,理解所学的知识,在此基础上再编写其他应用程序。
指导书中的五个个实验如下:1. 函数与编译处理2. 指针与引用3. 类和对象4. 继承和派生类5. 多态性三、实验提交(特别提醒)1. 实验题目以附件形式提交,每个附件限一个源程序,附件以实验编号-题号-自己学号.cpp命名;如学号为20XXXX20XXXX20XXXX34的同学提交实验1的第5题,则附件命名方式为:1-5-20XXXX20XXXX20XXXX34.cpp,错误提交的将视为未提交。
2. 提交时间定为该次实验课的一周内,过期不再接收。
四、评分和作弊处理1. 要求提交实验题总数为6题(带“*”号),占期末总评成绩的20XX%;2. 存在抄袭和被抄袭的作业,无论抄袭与被抄袭者,本门课程平时成绩以零分记。
存在两次及两次以上抄袭和被抄袭者,本门课程以不及格记。
五、实验课要求(重点强调)1. 严禁QQ、MSN等即时软件工具聊天;2. 严紧接听手机、发送短信;3. 严紧玩游戏。
实验1 函数与编译处理一、实验目的1. 掌握函数声明、定义和使用的方法;2. 掌握形参与实参之间的对应关系;3. 掌握函数调用时,形参、实参之间的“值传递”和“引用传递”的区别;4. 掌握函数递归调用的方法;5. 掌握全局变量、局部变量、静态变量的使用方法;6. 掌握文件包含的使用方法。
二、实验内容1. 定义两个函数swap1和swap2,目的是实现两个整数的次序交换,其中swap1的参数是传递值参数,swap2的参数是引用参数,在程序中分别调用这两个函数,其输出结果如下所示:初始值:x=1,y=2调用swap1后的结果:x=1 y=2调用swap2后的结果:x=2 y=12. 编写一个函数,用来计算从键盘上输入的整数的阶乘。
C语言程序设计上机考试试题和参考答案

printf("Input str1:\n"); gets(str1); //1
printf("Input m and n:\n"); scanf("%d%d", &m, &n); //1
mystrcpy(str1, str2, m, n); //2 puts(str2); }
1、请按行读入数据 2、请按给定的函数原型编写程序,否则即使程序运行结果正确,也不给分。 参考答案
#include<stdio.h>
void Input(int a[][10], int n);
int Compute(int a[][10], int n);
main()
{
int n, a[10][10]; int sum;
//2
{
int i, flag = 0, sum = 0; //1
for (i = 1; i <= n / 2; i++) //1
{
if (n % i == 0)
//1
{
sum = sum + i; //1
}
}
if (sum == n)
//1
{
flag = 1;
}
return flag;
//1
} 3.(15 分)请按给定要求编程计算方阵的主对角线之和。其中方阵的输入请在 Input 函数实现,计算主对角之和请在 Compute 函数实现,计算结果请在主函数打印, 且给定的方阵最大为 10x10,方阵实际大小请在主函数读入。Input 函数和 Compute 函数的函数原型如下:
C 上机题目及答案1

第一周上机题1.以下语句描述了包含数学成绩的学生信息结构体及其数组a:struct student{ char name[20]; float math; };student a[10] = {{"张三", 90},{"李四",85},{"王五",73}};int count=3; // 数组中包含的学生数编写两个函数分别实现在a数组中添加和删除学生信息。
要求:1) 原数组已按数学成绩排序(降序),添加和删除学生信息后数组应仍为降序;2)以下数据用于添加:{"赵二", 96}, {"钱六",65},{"孙七",80}3) 注意:添加,删除后count数据要相应变化。
#include<iostream.h>#include<string.h>struct student{char name[20];float math;};int count=3;void add(student a[10]);void dele(student a[10]);void print(student a[]);void main(){student a[10] = {{"张三", 90},{"李四",85},{"王五",73}};int n=0;do{cout<<".................学生信息处理系统.................."<<"\n 1-删除"<<"\n 2-增加"<<"\n 3-结束\n"<<"\n请选择: ";cin>>n;if(n==1) dele(a);else if(n==2) add(a) ;else cout<<"谢谢使用本系统!\n";}while(n!=3);}void add(student a[10]){student stu;int i=0,n=count;cout<<"请输入需增加的学生信息(姓名,成绩): ";cin>>>>stu.math;while(stu.math<a[i].math && i<n) i++;//找插入的位置for(;n>i;n--) a[n]=a[n-1]; //腾位置a[i]=stu; //插入count++;print(a);}void dele(student a[10]){char name[20];int i=0,n=count;print(a);cout<<"请输入需删除学生的姓名: ";cin>>name;while(strcmp(name,a[i].name)!=0 && i<n) i++;//找人if(i>=n) cout<<"查无此人!\n";else {for(;i<n-1;i++) a[i]=a[i+1]; //删除count--;print(a);}}void print(student a[]){cout<<"\n最新学生信息: \n";for(int i=0;i<count;i++)cout<<a[i].name<<'\t'<<a[i].math<<'\n';}2.定义描述三维坐标点(x,y,z)的结构体类型变量,完成坐标点的输入和输出,并求两坐标点之间的距离。
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语言上机考试系统试题及答案(上机系统部分)

例如,输入下面矩阵:
1 2 3
4 5 6
7 8 9
其转置矩阵为:
1 4 7
2 5 8
3 6 9
则程序输出:
2 6 10
6 10 14
10 14 18
注意:部分源程序已给出,并保存在考生文件夹下的 prog1.c 文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语
句,并将横线去掉。
#include <stdio.h>
#include<conio.h>
void fun (int a[3][3], int b[3][3])
{
int i,j;
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
}【参考答案】
程序填空题:第9行 bb[i]=0 第24行 bb[5]++ 第26行 p++;【 ++p; p=p+1; p+=1; 】
for (i=0;i<3;i++)
{for (j=0;j<3;j++)
printf("%7d ",array[i][j]);
printf("\n ");
}
fun(array);
printf("Converted array:\n ");
C语言上机测试题目(完整版)

1.有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?#include<stdio.h>void main(){int i,j,k;for(i=1;i<=4;i++)for(j=1;j<=4;j++)for(k=1;k<=4;k++)if(i!=j&&i!=k&&j!=k)printf("%d%d%d ",i,j,k);printf("\n");}2.企业发放的奖金根据利润提成。
利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?#include <stdio.h>main(){ long i;float bonus, bon1, bon2, bon4, bon6, bon10;int c;bon1=100000*0.1;bon2=bon1+100000*0.075;bon4=bon2+200000*0.05;bon6=bon4+200000*0.03;bon10=bon6+400000*0.015;printf("请输入利润i:");scanf("%ld",&i);c=i/100000;if(c>10) c=10;switch(c){ case 0: bonus=1*0.1;break;case 1: bonus=bon1+(i-100000)*0.075;break;case 2 :case 3: bonus=bon2+(i-200000)*0.05; break;case 4:case 5: bonus=bon4+(i-400000)*0.03;break;case 6:case 7:case 8:case 9: bonus=bon6+(i-600000)*0.015;break;case 10: bonus=bon10+(i-1000000)*0.01;}printf("奖金是%10.2f",bonus);}3.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?#include<stdio.h>#include<math.h>void main(){int a,b,c;for(a=0;;a++){ b=sqrt(a+100);c=sqrt(a+268);if(b*b==a+100 && c*c==a+268){printf("%d\n",a);break;}}}4.输入某年某月某日,判断这一天是这一年的第几天?main(){int day,month,year,sum,leap;printf("\nplease input year,month,day\n");scanf("%d,%d,%d",&year,&month,&day);switch(month)/*先计算某月以前月份的总天数*/case 1:sum=0;break;case 2:sum=31;break;case 3:sum=59;break;case 4:sum=90;break;case 5:sum=120;break;case 6:sum=151;break;case 7:sum=181;break;case 8:sum=212;break;case 9:sum=243;break;case 10:sum=273;break;case 11:sum=304;break;case 12:sum=334;break;default:printf("data error");break;}sum=sum+day; /*再加上某天的天数*/if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/ leap=1;elseleap=0;if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ sum++;printf("It is the %dth day.",sum);}5.输入三个整数x,y,z,请把这三个数由小到大输出。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(i==0||i==1) {
a[i][j]=1; }
5
if(j==0) {
a[i][j]=1; } } } for(i=2; i<=n; i++) { for(j=1; j<=i; j++) { a[i][j]=a[i-1][j-1]+a[i-1][j]; } } for(i=0; i<=n; i++) { for(j=0; j<=i; j++) { printf("%3d",a[i][j]); } printf("\n"); } return 0; } 8.7 如果一个数组中保存的元素是有序的(由小到大),向这个数组中插入一个数,使得插入后的数组元素依然 保持有序。 定义一个数组,长度为 11,初始元素为 10 个,按照从小到大的方式输入,然后输入一个要插入的元素, 使得插入后仍然有序。 #include <stdio.h> #include <stdlib.h>
3
scanf("%d",&n); int number [2][size]; for(i=0;i<n;i++) {
scanf("%d",&number[1][i]); } a=number[1][0]; for(i=0;i<n-1;i++) {
b=number[1][n-i-1]; printf("%d ",b); } printf("%d\n",a); return 0; } 8.5 问题描述: 程序定义了 4× 4 的二维数组,请编写程序,给二维数组赋值,并使数组下半三角元素中的值乘以 n 。 例如: 数组中的值为 1234 2234 3234 4234 假设 n 为 10,则输出结果如下:(输出的数按照 4 位宽度来输出,即%4d) 10 2 3 4 20 20 3 4 30 20 30 4 40 20 30 40 #include <stdio.h> #include <stdlib.h> int main() {int f[4][4],n,i,j; for(i=0;i<4;i++) { for(j=0;j<4;j++) scanf("%d",&f[i][j]); } scanf("%d",&n); for(i=0;i<4;i++) { for(j=0;j<=i;j++) {
f[i][j]=n*f[i][j];
4
} } for(i=0;i<4;i++) {
for(j=0;j<4;j++) {
printf("%4d",f[i][j]); } printf("\n"); } return 0; } 8.6 杨辉三角形,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列。 其实,中国古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光 辉灿烂的篇章,而贾宪三角的发现就是十分精彩的一页。 杨辉三角有如下性质: 1、每行数字左右对称,由 1 开始逐渐变大,然后变小,回到 1。 2、第 n 行的数字个数为 n 个。 3、每个数字等于上一行的左右两个数字之和。 编写程序,输入正数 n, 将所有数据存储到二维数组中,并在屏幕上显示对应的杨辉三角形(注意数据之 间的空格)。例如:n=5 图形如下: 1 11 121 1 331 1 46 4 1 1 5 10 10 5 1 #include <stdio.h> #include <stdlib.h> #define N 100 #define M 100 int main() { int i,j,n,a[N][M]; scanf("%d",&n); for(i=0; i<=n; i++) {
能够出线的学生序号(0~9)。 #include <stdio.h> #include <stdlib.h>
int main() {
int score[10]; int i,max=0; for(i=0; i<10; i++) {
scanf("%d",&score[i]); if(score[i]>max)
int a[N],b[N]; int i,j,h,k,m,n,p,flag=0; scanf("%d%d",&a[0],&b[0]); for(i=1; a[i-1]>=0&&b[i-1]>=0; i++) {
scanf("%d%d",&a[i],&b[i]); } scanf("%d",&n);
8
2
int prime[z]; m=0; for(i=1; i<a; i++) {
prime[i]=i+1; } for(i=1; i<a; i++) {
d=1; for(k=2; k<=prime[i]&&(d!=0); k++) {
d=prime[i]%k; if(d==0&&(prime[i]!=0)) {
上学期,环设 13 级两个班同学的 C 语言考试成绩(人数最多不超过 70 人)比较理想。现要求从 键盘输入学生的成绩,编程将成绩按从高到低顺序进行排序输出,并同时输入指定学生的学号和成绩。 输入: 有多行。从第一行开始,每行输入两个空格分隔的整数,分别表示每个学生的学号和成绩,当输入负值时, 表示输入结束。 最后一行输入需要查找的学生学号。 输出: 有两行。第一行是按由高到低排好序的学生成绩。第二行输出查找到的学生学号和成绩,若没有找到指定 学生,则输出未找到信息。 #include <stdio.h> #define N 1000 int main() {
for(j=0; j<i; j++) {
k=j; for(h=j+1; h<=i; h++) {
if(b[h]>b[k]) k=h;
} if(k!=j) {
m=b[k]; b[k]=b[j]; b[j]=m; p=a[k]; a[k]=a[j]; a[j]=p; } } for(j=0; j<i-2; j++) { printf("%d ",b[j]); } printf("%d\n",b[j]); for(j=0; !flag&&j<=i; j++) { if(a[j]==n) { printf("%d %d\n",a[j],b[j]); flag=1; } } if(!flag) printf("not find!\n"); return 0; } 8.10 描述 我叫王大锤,是一个刚找到工作的程序员。万万没想到,刚开始工作的第一天,就发生了大事。某市 高校 P 大与 T 大由于长期矛盾的积累,终于在这天爆发了全面战争。 T 大的导弹是突破了次元之壁的导弹,它会先在 n 维空间中运动,抵达目标后出现在 P 大相应的位置。 P 大及时的发明了在 n 维空间中阻截的方法,并找到了导弹的方向,现在我需要做的是计算出导弹的速度 大小。 P 大找到了我所在的公司,而这个任务竟然落到了刚加入公司的我身上。现在公司的谍报人员已经获 知,T 大的导弹的速度大小是由先发出的两颗 信号弹的速度矢量决定的,他们还顺便帮我捕获到了最终发
else if(a[i]>=n&&n>=a[i-1]) {
b=i; break; }
}
for(i=9; i>=b; i--) {
a[i+1]=a[i]; } a[b]=n; for(i=0; i<11; i++) {
printf(" %d",a[i]); } printf("\n"); return 0; } 8.8 任意输入一个自然数,输出该自然数的各位数字组成的最大数。例如,输入 1593 ,则输出为 9531 。 输入: 自然数 n 输出: 各位数字组成的最大数 #include <stdio.h> #include <stdlib.h> #define N 100
max=score[i]; } for(i=0; i<10; i++) {
if(score[i]==max) printf("%d\n",i);
}
return 0; } 8.2 描述 实验室有一批小白鼠,为了评估他们的健康程度,我们为每一只小白鼠都设定了一个“健康指数”。现在我 们需要进一步的评估这批小白鼠的健康均衡程度,因此我们需要从中找到健康指数差距最大的两只小白鼠 的编号,以此来进一步的进行评估。 关于输入 第一行是一个整数 n(2<= n <= 100),表示的是一共有 n 只小白鼠。 第二行是 n 个整数(互不相同),分别表示 n 只小白鼠的健康指数,同时根据输入顺序,从 1 开始为其编号 1,2…n。也就是说第一个整数是第一只小白鼠的健康指数,第二个整数是第二只小白鼠的健康指数,依次 类推。 关于输出 输出健康指数差距最大的两只小白鼠的编号。第一个数是健康指数较大的小白鼠的编号,第二个数是健康 指数较小的小白鼠的编号。 #include <stdio.h>