西安交大C++程序设计课外测验作业
- 格式:docx
- 大小:292.67 KB
- 文档页数:18
西安交通大学19年9月课程考试《程序设计基础(高起专)》作业考核试题试卷总分:100 得分:100一、单选题 (共 30 道试题,共 60 分)cvb1. C语言中,定义结构体的保留字是()。
A. unionB. structC. enumD. typedef满分:2 分正确答案:B2. 逻辑运算符两侧运算对象的数据类型()。
A. 只能是0或1B. 只能是0或非0正数C. 只能是整型或字符型数据D. 可以是任何类型的数据满分:2 分正确答案:D3. int a[10];合法的数组元素的最小下标值为()。
A. 10B. 9C. 1D. 0满分:2 分正确答案:D4. 已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是()。
A. 0B. 语法错C. 1D. "假"满分:2 分正确答案:C5. 设C语言中,int类型数据占2个字节,则short类型数据占()。
A. 1个字节B. 2个字节C. 4个字节D. 8个字节满分:2 分正确答案:B6. 若有int i=3,*p;p=&i;下列语句中输出结果为3的是()。
A. printf("%d",&p);B. printf("%d",*i);C. printf("%d",*p);D. printf("%d",p);满分:2 分正确答案:C7. 经过下列的语句 int j,a[10],*p;定义后,下列语句中合法的是()。
A. p=p+2;B. p=a[5];C. p=a[2]+2;D. p=&(j+2);满分:2 分正确答案:A8. 若有说明int a[3][4];则a数组元素的非法引用是()。
A. a[0][2*1]B. a[1][3]C. a[4-2][0]D. a[0][4]满分:2 分正确答案:D9. 以下数值中,不正确的八进制数或十六进制数是()。
西安交⼤C++程序设计第⼆章作业西安交通⼤学实验报告课程计算机程序设计_实验名称基本数据类型的熟悉_第 1页共12页系别__ ___________ 实验⽇期 2014 年 3⽉ 4⽇专业班级___ ____组别_____________ 实验报告⽇期 2014年3⽉ 8 ⽇姓名___ ____学号 __ 报告退发 ( 订正、重做 )同组⼈_________________________________ 教师审批签字⼀.实验⽬的1.通过实验熟悉整数类型变量、字符变量、双精度类型变量等基本数据类型的使⽤;2.学会⼩数的取整(通过强制类型转换的⽅法)、整数的求余、表达式中算术运算符的使⽤;3.条件语句(if else)、循环语句(while)的使⽤。
⼆.实验内容(⼀)第⼀题:编写⼀个程序,要求完成以下要求:1)提⽰⽤户输⼊任意的三个⼩数;2)显⽰这三个⼩数;3)将这三个⼩数相加并显⽰结果;4)将结果四舍五⼊转换成整数并显⽰。
1.要点分析:第⼀步:输⼊三个⼩数;第⼆步:显⽰所输⼊的⼩数;第三步:求和并显⽰;第四步:对所求得的和取整(强制类型转换,将双精度类型变量转换为整数变量),再⽤和减去该数从⽽得到和的⼩数部分;第五步:通过判断⼩数部分的⼤⼩(是>=0.5还是<0.5)决定是“四舍”还是“五⼊”,根据不同的情况输出“四舍五⼊”所得的结果(⼩于0.5则直接输出取整所得;⼤于等于0.5则取整后加1);第六步:选择是否再次开始,若是,循环前五步;否则,结束程序。
2.源程序代码:#includeusing namespace std;int main(){double a,b,c,sum,left;//定义双精度类型变量;int SUM;//定义整数变量;cout<<"请输⼊三个任意⼩数:";//提⽰输⼊三个⼩数;cin>>a>>b>>c;cout<<"您输⼊的三个⼩数是:"<<" "<sum=a+b+c;//求和;cout<<"这三个⼩数的和是:"<SUM=(int)sum;//对和取整;left=sum-SUM;//求和的⼩数部分;if(left>=0.5)//判断⼩数部分⼤⼩,并据此实现四舍五⼊;{cout<<"四舍五⼊得:"<}else{cout<<"四舍五⼊得:"<}int ch;//定义整数变量;cout<<"如需继续输⼊,请按键;如要结束,请按键!"< cin>>ch;//输⼊表⽰选择的数字;while(ch==1)//循环上述运算;{cout<<"请输⼊三个任意⼩数:";cin>>a>>b>>c;cout<<"您输⼊的三个⼩数是:"<<" "<sum=a+b+c;cout<<"这三个⼩数的和是:"<SUM=(int)sum;left=sum-SUM;if(left>=0.5){cout<<"四舍五⼊得:"<}else{cout<<"四舍五⼊得:"<}cout<<"如需继续输⼊,请按键;如要结束,请按键!"<cin>>ch;}cout<<"运⾏完毕,谢谢!"<return 0;}3.实验结果:(⼆)第⼆题:输⼊两个⾓度值x、y,计算如下式⼦的值(C++中的三⾓函数的输⼊是弧度):sin(|x|+|y|)√cos(|x+y|)1.要点分析:第⼀步:输⼊两个⾓度值;第⼆步:判断所输⼊的值下式⼦是否有意义(即x与y之和是不是90+n*360),若⽆,提⽰重新输⼊直⾄正确;若有意义,进⾏下⼀步;第三步:将所输⼊的⾓度制下的值转化为弧度制下的值(需要⽤到pi,只能预先输⼊较为精确的pi值);第四步:计算并输出结果。
西交《程序设计综合训练》在线作业一、单选题(共 40 道试题,共 100 分。
)1. 下列错误的语句是________。
A. int k,*p=&k; scanf(“%d”,&k);B. int k,*p=&k; scanf(“%d”,p);C. int k,*p; *p=&k; scanf(“%d”,p);D. int k,*p ; p=&k; scanf(“%d”,p);正确答案:C2. 若用数组名作为函数调用时的参数,则实际上传递给形参的是________。
A. 数组元素的个数B. 数组的第一个元素值C. 数组中全部元素的植D. 数组首地址正确答案:D3. 若有以下定义:float x; int a,b; 则错误的switch语句是________。
A. switch(x){case 1.0:printf("*\n"); case 2.0:printf("*\n"); }B. switch(a){case 1:printf("*\n");case 2:printf("*\n"); }C. switch(a+b) {case 1:printf("*\n"); case 1+2:printf("*\n"); }D. switch(a+b);{case 1:printf("*\n");case 2:printf("*\n"); }正确答案:A4. 以下叙述不正确的是________。
A. 一个C源程序文件必须包含一个main( )函数B. 一个C源程序文件可由一个函数组成C. 一个C源程序文件是一个编译单位D. 一个C源程序文件可由多个函数组成正确答案:A5. C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是________。
西安交通大学实验报告课程__计算机程序设计__实验名称__指针与函数__第 1 页共 25 页系别____ _______ 实验日期 2014 年 4月 18日专业班级__ ____组别_____________ 实验报告日期 2014 年 4 月 19日姓名___ _______学号_ _报告退发 ( 订正、重做 )同组人_________________________________ 教师审批签字一、实验目的学会使用递归函数和函数重载,进一步熟练动态分配等指针使用方法。
二、实验内容(一)第一题:1、(必做题)使用递归算法编写如下程序:对于任意给定的实数 X 和整数k( k>0) ,计算 Xk 。
1.源程序代码:#include<iostream>using namespace std;double yunsuan(double x,int k);//递归函数用于计算x^kint main(){double x;int k;cout<<"请输入实数x:";cin>>x;cout<<"请输入正整数k:";cin>>k;while(k<=0)//判断输入的k是否满足要求,若否则提示输入错误并重新输入{cout<<"您的输入有误!请输入正整数:";cin>>k;}cout<<"计算结果是:"<<x<<"^"<<k<<"="<<yunsuan(x,k)<<endl;//输出运算结果return 0;}double yunsuan(double x,int k){if(k==1)//k=1时不再进行循环,输出值为xreturn x;else{double s=x*yunsuan(x,k-1);//对于k大于1的情况,进入下一循环return s;}}2.实验结果:(1)输入X正实数:(2)输入X正整数:(3)输入x为负数:(4)输入k为负数:3.问题分析:该函数的循环方式是:x^k=x*x^(k-1).设f(x,k)=x^k,那么就有f(x,k)=f(x,k-1)*x.而其结束递归的条件是k=1,此时有f(x,1)=x,由此给出初值。
西安c语言程序设计考试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述,正确的是:A. C语言是一种面向对象的编程语言B. C语言不支持函数C. C语言支持结构化编程D. C语言不支持指针答案:C2. 在C语言中,用于表示逻辑“与”操作的运算符是:A. &&B. ||C. !D. %答案:A3. 下列哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A4. 在C语言中,用于定义一个全局变量的关键字是:A. staticB. externC. constD. auto5. 下列关于数组的描述,错误的是:A. 数组可以是多维的B. 数组的索引从0开始C. 数组的元素必须是同一类型D. 数组的大小在编译时确定答案:D6. 下列哪个函数用于将字符串复制到另一个字符串?A. strcpyB. strcatC. strcmpD. strlen答案:A7. 在C语言中,用于打开文件的函数是:A. fopenB. fcloseC. freopenD. remove答案:A8. 下列关于指针的描述,正确的是:A. 指针可以存储任何类型的数据B. 指针是变量的地址C. 指针不能作为函数的参数D. 指针不能被赋值答案:B9. 下列哪个关键字用于定义一个函数?B. unionC. enumD. void答案:D10. 在C语言中,用于定义一个无返回值的函数的关键字是:A. intB. voidC. charD. float答案:B二、填空题(每题2分,共20分)1. 在C语言中,表示逻辑“非”操作的运算符是____。
答案:!2. C语言中,用于定义一个整型变量的关键字是____。
答案:int3. 在C语言中,用于定义一个字符型变量的关键字是____。
答案:char4. C语言中,用于定义一个浮点型变量的关键字是____。
答案:float5. 在C语言中,用于定义一个双精度浮点型变量的关键字是____。
以下说法中正确的是()选择一项:a. C 语言比其他语言高级b. C 语言不用编译就能被计算机执行c. C 语言以接近英语国家的自然语言和数学语言作为语言的表达形式d. C 语言出现得最晚,具有其他语言的一切优点题目2给定如下程序:#include <stdio.h>void main(){ char c1 =‘A’, c2 =‘a’;printf("%c\n", (c1,c2));}则以下叙述正确的是()选择一项:a. 程序输出大写字母Ab. 程序输出小写字母ac. 格式说明符不足,编译出错d. 程序编译通过,但运行时出错题目3下列程序的输出结果为()void main(){ int x, y, z;x = y = 1;z = x++, y++, ++y;printf(“%d, %d, %d\n”, x, y, z);}选择一项:a. 2, 3, 2b. 2, 3, 1c. 2, 2, 1d. 2, 3, 3题目4对表达式for( 表达式1; ; 表达式3)可以理解为()选择一项:a. for(表达式1; 表达式3; 表达式3)b. for(表达式1; 1; 表达式3)c. for(表达式1; 表达式1; 表达式3)d. for(表达式1; 0; 表达式3)有以下语句:int x; char c[10];则正确的输入语句是()选择一项:a. scanf(“%d%s”, x, &c);b. scanf(“%d%s”, x, c);c. scanf(“%d%s”, &x, c);d. scanf(“%d%s”, &x, &c);题目6下列程序的输出结果是()#include <stdio.h>void main(){ int a = 2, b = 3, c = 0, d;d = !a && !b ||!c;printf(“%d\n”, d);}选择一项:a. 编译出错b. 1c. -1d. 0题目7在C 语言中,复合语句要用一对()括起来。
单选题(共30 道试题,共60 分。
)得分:521. 若有说明int a[3][4];则a数组元素的非法引用是(D)。
A. a[0][2*1]B. a[1][3]C. a[4-2][0]D. a[0][4]满分:2 分得分:22. 函数rewind的作用是(A)。
A. 使位置指针重新返回文件的开头B. 将位置指针指向文件中所要求的特定位置C. 使位置指针指向文件的末尾D. 使位置指针自动移至下一个字符位置满分:2 分得分:23. 结构体类型的定义允许嵌套是指(C)。
A. 成员是已经或正在定义的结构体型B. 成员可以重名C. 结构体型可以派生D. 定义多个结构体型满分:2 分得分:04. 下面有关for循环的正确描述是(D)。
A. for循环只能用于循环次数已经确定的情况B. for循环是先执行循环循环体语句,后判断表达式C. 在for循环中,不能用break语句跳出循环体D. for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来满分:2 分得分:25. C语言中,定义结构体的保留字是(B)。
A. unionB. structC. enumD. typedef满分:2 分得分:26. 以下运算符中,优先级最高的运算符是(C)。
A. ||B. %C. !D. ==满分:2 分得分:27. 以下叙述中错误的是(D)。
A. 二进制文件打开后可以先读文件的末尾,而顺序文件不可以B. 在程序结束时,应当用fclose函数关闭已打开的文件C. 在利用fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据D. 不可以用FILE定义指向二进制文件的文件指针满分:2 分得分:28. 在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是(B)。
A. 地址传递B. 单向值传递C. 由实参传给形参,再由形参传回实参D. 传递方式由用户指定满分:2 分得分:29. 若k为int型变量,则以下程序段的执行结果是(B)。
西安交通大学实验报告课程_计算机程序设计_实验名称C++集成开发环境的使用第 1 页共 12 页系别钱学森班_实验日期 201x 年 2 月 24日专业班级 _钱学森班____ 组别__________ 实验报告日期 201x 年 2 月 24日姓名 _ ___ __学号 21xxxxxxxx_ 报告退发 ( 订正、重做 ) 同组人_________________________________ 教师审批签字∙实验目的(1)掌握集成开发环境的使用方法;(2)了解C++程序的基本特点。
(3)掌握变量与常量的定义与使用方法;(4)掌握基本数据类型和表达式的使用方法,掌握C++的基本语句。
理解结构化和面向对象程序设计的基本思想和有关概念,掌握C++程序的基本框架和上机调试计算机程序的过程。
∙实验内容(-)实验题目一:编写一个计算三角形面积的程序。
1.要点分析1.begin2.输入底边长L和高H3.计算输出4.end2.程序源代码#include<iostream>using namespace std;int main(){int L,H,S;cout<<"请输入底边长和高后按回车键"<<endl;cin>>L>>H;S=(L+H)/2;cout<<"面积为:"<<S<<endl;return 0;}3.实验结果(二)输入长、宽、高(为实数),计算长方体的表面积和体积。
1.要点分析1.begin2.输入长宽高3.计算输出表面积和体积4.end2.程序源代码#include<iostream>using namespace std;int main(){int A,B,C,S,V;cout<<"请输入长方体的长宽高"<<endl;cin>>A>>B>>C;S=(2*((A*B)+(B*C)+(A*C)));V=(A*B*C);cout<<"S"<<"="<<S<<endl;cout<<"V"<<"="<<V<<endl;return 0;}3.实验结果(三)编写程序:实现整数拼接。
西安交通大学实验报告课程__计算机程序设计__实验名称_课外实验题目__第 1 页共 19 页系别___ _______ 实验日期 2014 年 4月 3日专业班级____组别_____________ 实验报告日期 2014 年4 月 5日姓名___ _____学号_ _报告退发 ( 订正、重做 )同组人_________________________________ 教师审批签字一、实验目的复习巩固本阶段所学的知识,包括数组的使用、函数的使用、循环语句和条件语句的使用等。
二、实验内容(一)第一题:1、编写一个程序,计算m~n范围内的每个正整数的全部素因子。
其中的m和n由键盘输入。
评分标准:(1)程序框架完整,代码规范;(20%)(2)数据类型的定义和使用方法正确;(20%)(3)程序控制结构使用正确;(20%)(4)算法正确,清晰合理;(20%)(5)运行结果正确,输入和输出格式如下所示。
(20%)请输入m和n:15 1815的非平凡因子:3 516的非平凡因子:2 4 817的非平凡因子:18的非平凡因子:2 3 6 91.源程序代码:#include<iostream>using namespace std;void suyinzi(int x);int main(){int m,n;cout<<"请输入正整数m和n(m<=n):";cin>>m>>n;while(m>n){cout<<"您输入有误,m应该小于等于n,请重新输入:";cin>>m>>n;}for(int j=m;j<=n;j++)//对于范围内的正整数逐一判断寻找因子{suyinzi(j);}return 0;}void suyinzi(int x)//寻找并输出x的所有非平凡因子{cout<<x<<"的非平凡因子为:";for(int i=2;i<=x/2;i++){if(x%i==0){cout<<i<<" ";}}cout<<endl;}2.实验结果:3.问题分析:此题简单,但当该数没有非平凡因子时,如能够输出:“x没有非平凡因子!”而非仅仅输出空白则更好。
为此,需要将非平凡因子个数储存下来,在判断完毕后根据个数是否为0决定是否输出“x的非平凡因子为:”这句话。
然而这样的代价就是较为麻烦,增加了程序运行的时间,因而没有尝试。
(二)第二题:编写函数求反正切三角函数值,函数原型:double my_arctg(double x);反正切三角函数公式如下:n=0,1,2,......,要求结果值精确到107,并编写主函数测试。
评分标准,该题共20分:( 1 )程序开始执行时显示“ Please enter x : ”,开始输入 x 的值,程序能正确接受该数值( 5分);( 2 )能够正确计算数据( 5分);( 3 )能够输出正确的计算结果。
( 5分)。
( 4 )调用系统数学库函数atan(x)检验计算结果是否正确,并输出检测结果( 5分)。
1.源程序代码:#include<iostream>#include<cmath>using namespace std;double my_arctg(double x);int main(){double x;cout<<"Please enter x:";cin>>x;cout<<"自定义函数计算结果:"<<my_arctg(x)<<endl;cout<<"系统函数计算结果:"<<atan(x)<<endl;return 0;}double my_arctg(double x){double sum=x;double u=x;int i;for(i=1;u>0.0000001||u<-0.0000001;i++){u=u*(-1)*x*x*(2*i-1)/(2*i+1);sum=sum+u;}return sum;}2.实验结果:发现当|x|>1时程序进入死循环无法结束,可能是公式不再适用。
以下对各种情况作以检测:(1)输入为绝对值小于等于1的正数或负数及0时,能够计算出结果并且准确:(2)绝对值超过1,无法计算结果:3.问题分析:|x|>1时则无法输出结果,为了了解是哪里的问题,将程序添加对u 的输出语句,并进行了测试,得到以下结果:由结果分析,应该是无法达到结束循环的条件,此时程序进入死循环,所以无法输出。
因而,应该是公式不再适用。
因此,输入值应该限定在[-1,1]内。
所以提出修改意见:在输入语句后增加判断是否在[-1,1]内的程序:While(x>1||x<-1){Cout<<“您的输入有误,请输入x在[-1,1]范围内:\n”;Cin>>x;}出于原题要求,没有在结果中进行改动。
(三)第三题:编写程序,用二维数组存储N×N 整数矩阵,判断矩阵是否为对称矩阵(沿主对角线对称,N 大于3)?先输出该矩阵,然后输出判断结果。
再将次对角线上的N个元素加到主对角线上N个元素,保持矩阵的对称性,并再输出该矩阵。
(可以不用函数方法)评分标准:该题共20 分。
( 1 )数据定义和产生正确( 5 分)( 2 )判断对称矩阵的控制结构正确( 5 分)( 3 )主对角线与次对角线元素相加正确(5分)( 4 )输出结果正确( 5 分)1.源程序代码:#include<iostream>using namespace std;void chuli(int num[4][4]);int panduan(int num[4][4]);int main(){int a[4][4]={ 1,2,3,4,2,3,4,1,3,4,1,2,4,1,2,3};int b[4][4]={3,4,3,4,2,3,8,1,4,4,3,2,7,1,2,3};chuli(a);chuli(b);return 0;}int panduan(int num[4][4]){int i,j,x=0;for(i=1;i<4;i++){for(j=0;j<i;j++){if(num[i][j]==num[j][i])x++;}}if(x>5)return 1;return 0;}void chuli(int num[4][4]){int i,j;cout<<"矩阵为:\n";for(i=0;i<4;i++){for(j=0;j<4;j++)cout<<num[i][j]<<" ";cout<<endl;}if(panduan(num)!=0){cout<<"该矩阵是对称的,改变后结果为:\n";for(i=0;i<4;i++)num[i][i]=num[i][i]+num[i][3-i];for(i=0;i<4;i++){for(j=0;j<4;j++)cout<<num[i][j]<<" ";cout<<endl;}}elsecout<<"该矩阵不是对称的\n";}2.实验结果:3.问题分析:对题意的理解不是很明确。
按照自己的理解进行了编写:定义了两个固定的函数,一个为对称的,另一个不对称;编写了一个自定义函数判断矩阵是否对称;然后对这两个矩阵分别进行判断,若不对称则输出不对称,若对称则进一步进行处理将次对角线元素加到主对角线。
(四)第四题:编写函数,判断任意一个字符串是否为对称字符串,例如:对称字符串为“I a I” 、“POP” 、“21++12” 。
要求编写主函数加以测试。
判断函数原型如下:int panduan(char ccc[]);评分标准:该题共 20 分。
( 1 )字符串数据定义和产生正确( 5 分)( 2 )判断函数编写正确( 10 分)( 3 )测试函数编写正确,并输出结果( 5 分)1.源程序代码:#include<iostream>using namespace std;int panduan(char ccc[]);//自定义函数判断字符串ccc是否对称int main(){char in[40];cout<<"请输入字符:";cin.get(in,39);if(panduan(in)==1)cout<<"您输入的"<<in<<"是对称字符!"<<endl;elsecout<<"您输入的"<<in<<"不是对称字符!"<<endl;return 0;}int panduan(char ccc[]){int m=strlen(ccc);//获取字符串长度int i,x=0;for(i=0;i<(m+1)/2;i++)//逐一判断对称位置字符是否相同{if(ccc[i]==ccc[m-i-1]){x++;}}if(x>=m/2)//对称位字符全部分别相同时输出是return 1;return 0;}2.实验结果:考虑到奇数个字符、偶数个字符、数字形式字符、字母、以及多种不对称的形式进行检测:(1)数字:(2)字母:(3)首尾字符不对称:(4)中心字符不对称:(5)含空格字符串:五、第五题:编写函数: int count(int m); 该函数完成如下功能:输入一个整数 m ,统计并返回 m 左端连续相同数字的个数。
如:2220511 左端连续相同数字 2 的个数是 3 ; -923000 左端连续相同数字 9 的个数是 1 。
编写主程序,测试该函数。
评分标准:(1) 数据类型、程序控制结构使用正确( 5 分)(2) 函数的定义和调用方法正确( 5 分)(3) 程序结构规范、清晰、合理( 5 分)(4) 运行结果正确( 5 分)1.源程序代码:#include<iostream>using namespace std;int count(int m);int main(){int m;cout<<"请输入一个整数:";cin>>m;if(m<0)m=-m;//取绝对值cout<<count(m)<<endl;return 0;}int count(int m)//读取得到最高位数字;判断连续该数字的个数;输出个数{int n,u=m,num[10];for(n=0;u>=1;n++){num[n]=u%10;u=u/10;}cout<<"左端连续相同数字"<<num[n-1]<<"的个数为";int i=1;while(num[n-i]==num[n-i-1]){i++;}return i;}2.实验结果:(1)正数:(2)负数:3、问题分析:起初没有考虑正负的问题。