C++试卷样例
C语言试卷(含答案)
一、单项选择题(每小题2分,共40分)1、sizeof(float)是()A. 一个双精度型表达式B. 一个整型表达式C. 一种函数调用D. 一个不合法的表达式2、设 i 是int 型变量,f 是float 型变量,用下面的语句给这两个变量输入值: scanf("i=%d,f=%f",&i,&f);为了把100 和分别赋给i 和f,则正确的输入为()。
A. 100B.i=100,f=765.12C. 100<回车>D. x=100y=3、#include<>voidmain(){inta=3,b=2,c=1;intx=10,y=20;if(a<b)if(b!=0)if(!x)y=1;elseif(x)y=0;y=-1;printf("%d",y);} 上面的C 程序的输出结果是()。
A. 20B.1C.0D.-14、C 语言中,while 和do …while循环的主要区别是()。
A. do …while的循环体至少无条件执行一次B. while 的循环控制条件比 do …while的循环控制条件严格C. do …while允许从外部转到循环体内D. do …while的循环体不能是复合语句5、执行下面的 C 程序段后,输出结果是()。
inta=5;while(a--);printf("%d",a);A. 54321B. 4321C.0D.-16、在 C 语言中,()是在所有函数外部声明的。
A. 全局变量B. 局部变量C.形参D.实参7、分析下面的 C 程序:#include<>voidmain(){intnum=0;while(num<=2){num++;printf("%d",num);}}输出结果是()。
A. 123B. 012C.23D.128、下面的 C 语言代码段的输出结果是()。
清华大学“C语言程序设计”期末试卷
样例: 输入 1 2 -4 0 32 1 -2 2 输出 3 -4+x^2
第三部分
综合问题 (任选一题完成,共 10 分)
3-A. 代数式处理 ( 3-A.cpp ) 读入一个仅含变量 x 的代数式和 x 的值, 输出该式在 x=x0 处的函数值和导函数的值。 表达式中除了字母 x 和+, -, *, /, (, )外没有其他字符
试卷说明: 考试形式为上机考试,考试时间总计 3 小时 请在 C 盘根目录下建立一个子目录,以自己的学号命名,并将所有的程序存入 此目录。如,学号为 010000 的同学,需要建立目录 C:\010000,并将程序存入 此目录。按照题目名称中指定文件名保存你的程序,并保存一个备份,以免程 序被意外破坏。例如,第一题应当保存一个叫做 1-1bak.cpp 的文件。 3-A 和 3-B 最多只能选择一道题目。如果同时存在 3-A.cpp 和 3-B.cpp,我们将 随机选择一道题目进行评分。 所有题目采用键盘输入和屏幕输出,你的程序不得访问任何文件。 评分时将查看源程序,请严格遵守题目中给出的限制。
输入: 先读入一个字符串,字符总数不超过 100 并且不会有格式错误的代数式。 然后读入一实数作为 x0 的值。
输出:
7
包含两个实数,分别是函数值和导函数值。把所得结果保留 2 位小数输出。如果出 现分母为 0 的情况则只输出一个字符串"error"。
样例: 输入 x*(x+x/x) 100 输出 10100.00 201.00
输入: 第 1 行为一个整数 t,表示任务的类型,t=1 表示做加法,t=2 表示做减法。 第 2 行为 1 个整数 n,表示需要计算的数的位数。 以后 n 行,每行为 2 个数字,分别是同一位上的被加数和加数(当 t=1 时);或被 减数和减数(当 t=2 时)。从第 3 行起,位数依次由高到低,第 3 行为最高位,第 n+2 行为最低位。
(完整)C语言程序设计试题题库
(完整)C语言程序设计试题题库C语言程序设计试题题库题1:编写一个C程序,实现两个整数的相加功能。
要求从键盘上输入两个整数,并将它们相加后输出结果。
解答示例:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入第一个整数:");scanf("%d", &num1);printf("请输入第二个整数:");scanf("%d", &num2);sum = num1 + num2;printf("两个整数的和为:%d\n", sum);return 0;}```题2:编写一个C程序,实现找出一组整数中的最大值和最小值。
要求从键盘上输入一组整数,然后找出其中的最大值和最小值,并输出结果。
解答示例:```c#include <stdio.h>#define MAX_SIZE 100int main() {int numbers[MAX_SIZE];int count, i;int max, min;printf("请输入整数的个数:");scanf("%d", &count);printf("请输入%d个整数:", count);for (i = 0; i < count; i++) {scanf("%d", &numbers[i]);}// 默认将第一个整数作为最大值和最小值max = min = numbers[0];for (i = 1; i < count; i++) {if (numbers[i] > max) {max = numbers[i];} else if (numbers[i] < min) {min = numbers[i];}}printf("最大值:%d\n", max);printf("最小值:%d\n", min);return 0;}```题3:编写一个C程序,实现计算一个数的阶乘。
2024年3月青少年软件编程C语言等级考试试卷六级真题
2024年3月青少年软件编程C语言等级考试试卷六级真题分数:100题数:4一、编程题(共4题,共100分)1.小白鼠再排队N只小白鼠(1<N<100),每只鼠头上戴着一顶有颜色的帽子。
现在称出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。
帽子的颜色用“red”,“blue”等字符串来表示。
不同的小白鼠可以戴相同颜色的帽子。
白鼠的重量用整数表示。
时间限制:1000内存限制:65536输入输入第一行为一个整数N,表示小白鼠的数目。
下面有N行,每行是一只白鼠的信息。
第一个为正整数,表示白鼠的重量,不超过整型范围;第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。
注意:白鼠的重量各不相同。
输出按照白鼠的重量从小到大的顺序输出白鼠的帽子颜色。
样例输入样例输出试题编号:20240323-6-01试题类型:编程题标准答案:试题难度:一般试题解析:展示地址:点击浏览考生答案:#include<bits/stdc++.h>using namespace std;struct shu{int n;string s;}a[100010];bool cmp(shu a,shu b){return a.n<b.n;}int main(){int N;cin>>N;for(int i=0;i<N;i++){cin>>a[i].n>>a[i].s;}sort(a,a+N,cmp);for(int i=0;i<N;i++){cout<<a[i].s<<endl;}}考生得分:25是否评分:已评分评价描述:2.扩号匹配问题在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。
写一个程序,找到无法匹配的左括号和右括号,输出原来字符串,并在下一行标出不能匹配的括号。
青少年软件编程(C语言)等级考试试卷(七级)202206
青少年软件编程(C语言)等级考试试卷(七级)分数:100 题数:4一、编程题(共4题,共100分)1. 重建二叉树给定一棵二叉树的前序遍历和中序遍历的结果,求其后序遍历。
时间限制:1000内存限制:65536输入输入可能有多组,以EOF结束。
每组输入包含两个字符串,分别为树的前序遍历和中序遍历。
每个字符串中只包含大写字母且互不重复。
输出对于每组输入,用一行来输出它后序遍历结果。
样例输入样例输出试题编号:_7_01试题类型:编程题标准答案:试题难度:一般试题解析:#include<bits/stdc++.h>using namespace std;struct Node{char c;Node *lchild;Node *rchild;int loc;char str1[100],str2[100];Node *create(){tree[loc].lchild=tree[loc].rchild=NULL;return &tree[loc++];}Node *build(Node *root,int q1,int q2,int z1,int z2){root=create();char cr=str1[q1];root->c=cr;int idx=z1;for(;idx<=z2;idx++){if(str2[idx]==cr)break;}if(idx!=z1){root->lchild=build(root->lchild,q1+1,q1+(idx-z1),z1,idx-1);}if(idx!=z2){root->rchild=build(root->rchild,q1+(idx-z1)+1,q2,idx+1,z2);}return root;}void PostOrder(Node *root) {if(root->lchild!=NULL){PostOrder(root->lchild);}if(root->rchild!=NULL){PostOrder(root->rchild);}cout<<root->c;}int main() {while(cin>>str1){cin>>str2;loc=0;Node *root=NULL;int len1=strlen(str1);int len2=strlen(str2);root=build(root,0,len1-1,0,len2-1);PostOrder(root);cout<<endl;}}展示地址:点击浏览考生答案:(此题已作答)考生得分:25是否评分:已评分评价描述:2. 快速堆猪小明有很多猪,他喜欢玩叠猪游戏,就是将猪一头头叠起来。
C语言测试卷库(完整版)
C语言测试卷库(完整版)C语言试题库一、单项选择第一章C语言概述(1)一个C程序的执行是从A、本程序的MAIN函数开始,到MAIN 函数结束。
B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。
C、本程序的MAIN函数开始,到本程序的最后一个函数结束。
D、本程序文件的第一个函数开始,到本程序的MAIN函数结束。
(2)以下叙述正确的是A、在C程序中,MAIN函数必须位于程序的最前面。
B、C程序的每行中只能写一条语句。
C、C语言本身没有输入输出语句。
D、在对一个C程序进行编译的过程中,可发现注释中的拼写错误。
(3)C语言规定,在一个源程序中,MAIN主函数的位置是在:A、必须在最前面。
B、必须在系统调用的库函数的后面C、可以在任意位置。
D、必须在最后面(4)一个C程序是由:A、一个主程序和若干子程序组成B、函数组成C、若干过程组成D、若干子程序组成(5)以下叙述不正确的是:A、一个C源程序可由一个或多个函数组成B、一个C源程序必须包含一个MAIN函数C、C程序的基本组成单位是函数D、在C程序中,注释说明只能位于一条语句的后面第二章数据类型、运算符与表达式(1)若x, i, j, k都是int型变量,则计算下面表达式后,x的值为x=(i=4, j=16, k=32)A、4B、16C、32D、52(2)下列四组选项中,均不是C语言键字的选项是A、define , IF, typeB、getc, char, printfC、include, scanf, caseE、i f, struct, type(3)下面四个选项中,均是不合法的用户标识符的选项是A、A,P_0,doB、float,1a0, _AC、b-a, goto, intD、_123, temp, INT(4)若有代数式3ae/bc,则正确的C语言表达式是A、a/b/c*e*3B、3*a*e/bcC、3*a*e/b*cD、a*e/c/b*3(5)已知各变量的类型说明如下:int k, a, b;unsinged long w=5;double x=1.42;则以下不符合C语言语法的表达式是A、x%(-3)B、w+=-2;C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)第三章简单C程序设计(1)putchar函数可以向终端输出一个A、整型变量表达式值B、实型变量值C、字符串D、字符或字符型变量值(2)若x,y均定义为int型,z定义为double 型,以下合法的scanf函数调用语句是A、scanf(“%d%lx,%le”,&x,&y,&z);B、scanf(“%2d*%d%lf”,&x,&y,&z);C、scanf(“%x%*d%o”,&x,&y,&z);D、scanf(“%x%o%6.2f”,&x,&y,&z);(3)当输入数据的形式为:25,13,10<回车>时,以下程序的输出结果为main(){int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%d\n”,x+y+z);}A、x+y+z=48B、x+y+z=35C、x+z=35D、不确定值(4)以下能正确的定义整型变量a,b和c,并对它们赋初值为5的语句是A、int a=b=c=5;B、int a, b, c=5;C、a=5, b=5, c=5;D、a=b=c=5;(5)若有以下定义,则正确的赋值语句是int a,b; float x;A、a=1, b=2;B、b++;C、a=b=5;D、b=int(x);第四章选择结构程序设计(1)能正确表示“当x的值在[1,10]和[200,210]的范围为真,否则为假”的表达式是A、(x>=1)&&(x<=10)&&(x.>=200)&&(x<=210)B、(x>=1)││(x<=10) ││(x.>=200) ││(x<=210)C、(x>=1) &&(x<=10) ││(x.>=200) &&(x<=210)D、(x>=1)││(x<=10)&& (x.>=200) ││(x<=210)(2)以下程序的运行结果是#include “stdio.h”main(){int a,b,d=241;a=d/100%9;b=(-1)&&(-1);printf(“%d,%d”,a,b);}A、6,1B、2,1C、6,0D、2,0(3)请阅读以下程序:main(){int a=5 , b=0 , c=0;if (a+b+c) printf(“* * *\n”);else printf(“$ $ $\n”);}以上程序。
C语言期中试卷
C语言期中试卷《C语言程序设计》期中考试卷一、选择题1.下面程序段的运行结果是。
for(x=3; x<6; x++) printf((x%2)? (“**%d”): (“##%d\n”), x); A.**3##4**5 B.##3**4##5C.##3**4##5D.**3##4**52.下面程序的运行结果是。
#includeint main(){int i;for(i=1; i<=5; i++)switch(i%5){case 0: printf("*");break;case 1: printf("#");break;default: printf("\n");case 2: printf("&");} return 0;}A.#&&&*B.#&& &* C.#&&&*D.#&*3.下面程序的功能是求算式xyz+yzz=532中的x,y,z的值(其中xyz和yzz分别表示一个三位数),请选择填空。
#include int main( ){ int x,y,z,I,result=532;for(x=1;x<10;x++)for(y=1;y<10;y++)for( ; z<10; z++){ i=100*x+10*y+z+100*y+10*z+z;if ( )printf(“x=%d,y=%d,z=%d\n”,x,y,z);}return 0;}A1.z=x B1.z=1 C1.z=0 D1.z=yA2.i/result==1 B2.i=result C2.i!=result D2.i==result4.以下正确的描述是。
A.continue语句的作用是结束整个循环的执行B.只能在循环体和switch语句体使用break语句C.在循坏体使用break语句或continue语句的作用相同D.从多层循环嵌套中退出,只能使用goto语句5.在下面的程序中,。
C语言程序设计试题样例
C语言程序设计试题样例第X套:一. 选择题(1)凡是未显示定义存储类别的局部变量,其默认的存储类别为:(A)自动(B)静态(C)外部(D)寄存器答案: A(2)设有如下的变量定义:int i=8,k,a,b;unsigned long w=5;double x=1.42, y=5.2;则以下符合C语言语法的表达式是:(A)a+=a-=(b=4)*(a=3) (B) x%(-3);(C)a=a*3=2 (D) y=float(i)答案: A(3)函数fscanf的功能是:(A)从文件输入信息(B)将信息输出到文件(C)从控制台输入信息(D)将信息输出到控制台答案: A(4)执行以下程序后,输出结果是:(A)7 (B)6 (C)5 (D)4main(){ int m=5;if (m++>5) printf("%d\n",m);else printf("%d\n",m--);}答案: B(5)C语言中while与do while语句的主要区别是:(A)do while的循环体至少无条件执行一次(B)do while允许从外部转到循环体内(C)do while的循环体不能是复合语句(D)while的循环控制条件比do while的严格答案: AB(6)使用共用(联合)体union的目的是:(A)将一组数据作为一个整体,以便其成员共享同一存储空间(B)将一组类型相同的数据作为一个整体,以便其成员共享同一存储空间(C)将一组数据作为一个整体,以便程序使用(D)将一组类型相同的数据作为一个整体,以便程序使用答案: A(7)在下列选项中,没有构成死循环的程序段是:(A)int i=100;while (1){ i=i%100+1;if (i>100) break;}(B)for ( ; ;);(C)int k=1000;do {++k;} while (k>=10000);(D)int s=36;while (s); --s;答案: C(8)以下程序运行后,如果从键盘上输入ABCDE<回车> ,则输出结果为:(A)8 (B)7 (C)6 (D)5#include "stdio.h"#include "string.h"func (char str[ ] ){ int num=0;while (*(str+num)!='\0') num++;return (num);}main( ){ char str[10],*p=str;gets (p); printf ("%d\n",func (p) );}答案: D(9)运行下面的程序,如果从键盘上输入:ab<回车>c<回车>def<回车>则输出结果为(A)a (B)a (C)ab (D)abcdefb b cc c dd def#include "stdio.h"#define N 6main( ){ char c[N];int i=0;for ( ;i<N;c[i]=getchar(),i++);for(i=0;i<N;i++) putchar(c[i]); printf("\n");}答案: C(10)设有如下定义:int a=1,b=2,c=3,d=4,m=2,n=2;则执行表达式:(m=a>b)&&(n=c>d) 后,n 的值为(A)1 (B)2 (C)3 (D)0答案: B二.填空题(请输入[复制粘贴]到TC3++中,自行调试)(11)执行以下程序后,输出结果是。
青少年软件编程(C语言)等级考试试卷(二级)202312
青少年软件编程(C语言)等级考试试卷(四级)2023-12202312C语言四级真题编程题1.移动路线桌子上有一个m行n列的方格矩阵,将每个方格用坐标表示,行坐标从下到上依次递增,列坐标从左至右依次递增,左下角方格的坐标为(1,1),则右上角方格的坐标为(m,n)。
小明是个调皮的孩子,一天他捉来一只蚂蚁,不小心把蚂蚁的右脚弄伤了,于是蚂蚁只能向上或向右移动。
小明把这只蚂蚁放在左下角的方格中,蚂蚁从左下角的方格中移动到右上角的方格中,每步移动一个方格。
蚂蚁始终在方格矩阵内移动,请计算出不同的移动路线的数目。
对于1行1列的方格矩阵,蚂蚁原地移动,移动路线数为1;对于1行2列(或2行1列)的方格矩阵,蚂蚁只需一次向右(或向上)移动,移动路线数也为1……对于一个2行3列的方格矩阵,如下图所示:-------------------|(2,1)|(2,2)|(2,3)|-------------------|(1,1)|(1,2)|(1,3)|-------------------蚂蚁共有3种移动路线:路线1:(1,1) → (1,2) → (1,3) → (2,3)路线2:(1,1) → (1,2) → (2,2) → (2,3)路线3:(1,1) → (2,1) → (2,2) → (2,3)时间限制:1000内存限制:65536输入输入只有一行,包括两个整数m和n(0输出输出只有一行,为不同的移动路线的数目。
样例输入2 3样例输出32.公共子序列我们称序列Z = < z1, z2, ..., zk >是序列X = < x1, x2, ..., xm >的子序列当且仅当存在严格上升的序列< i1, i2, ..., ik >,使得对j = 1, 2, ... ,k, 有xij = zj。
比如Z = < a, b, f, c > 是X = < a, b, c, f, b, c >的子序列。
2012年7月C语言试卷A
青海大学试卷(A卷)系别:班级:学号:姓名:考试课程:程序设计基础(C)考试日期:2012 年7月06日注:所有答案均写在答题卡上,答在试卷上不得分,考试结束后试卷和答题卡一并交回一.填空题(每空1分,共16分)1.整型静态数组没有初始化,也没有赋值,此时数组元素的值均为。
2.数组在内存中占的存储区,用代表其首地址。
3. 在函数内部定义的只在本函数内有效的变量叫,在函数以外定义的变量叫。
4.调用一个函数时,实参变量和形参变量之间的数据传递是;若用数组名作为实参,则实际上传递给形参的是。
5. 有这样的定义:static int a[5]={2,4,6,8,10};int *p;p=&a[0];则与p=&a[0]等价的语句,*(p+1)的值是,*(a+3)的值是。
6.有说明char s1[40],s2[20]= "you are a teacher.";如果想从键盘上把字符串"I am a student."输入到数组s1中,函数调用的语句是。
能把s2中的字符串接到s1中的字符串后面的函数调用的语句是。
7.C语言中逻辑运算符的优先级高于算术运算符。
8.在C语言中,声明枚举类型用关键字开头。
9.在C语言中,文件的存取是以为单位的,这种文件被称作文件。
二.选择题(每小题2分,共40分)1.可以在C语言中用做用户标识符的是()。
A.else B.a_b1C.for D.2cd 2.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是()。
A.1 B.2 C.2.0 D.2.53.以下程序的输出结果是()。
main( ){ int m=10;printf("%d,%d,%d",--m,++m,++m);}A.9,10,11 B.10,10,11 C.9,12,11 D.11,12,114.C语言中,逻辑"真"等价于()。
C语言中职考试拟卷(含答案)
《C语言》试卷(拟卷)考试时间:90分钟总分:100分一、单项选择题(将正确答案填在括号内,一题3分,共39分)1.C语言中,下列哪个选项是合法的标识符()A. 1stVarB. _myVarC. IntD. void2.在C语言中,下列哪个选项是输出函数()A. scanfB. printfC. getcharD. putchar3.关于C语言中的循环结构,以下哪个描述是正确的()A. for循环只能用于遍历数组B. while循环必须有一个初始条件C. do-while循环至少会执行一次循环体D. 循环结构中不能使用break语句4.在C语言中,以下哪个关键字用于声明整型变量()A. floatB. doubleC. intD. char5.C语言中的数组名代表什么()A. 数组的第一个元素的地址B. 数组的最后一个元素的地址C. 数组的大小D. 数组的内容6.下列哪个运算符用于比较两个值是否相等()A. ==B. =C. &&D. ||7.C语言中,函数返回值的类型是由什么决定的()A. 函数名B. 函数体中的return语句C. 函数定义时的返回类型D. 调用函数时的参数8.在C语言中,以下哪个语句用于输出文本到控制台()A. scanf()B. printf()C. getchar()D. putchar()9.关于C语言中的指针,以下哪个说法是正确的()A. 指针是一个变量,存储的是另一个变量的值。
B. 指针是一个变量,存储的是另一个变量的地址。
C. 指针就是数组。
D. 指针和函数没有关系。
10.在C语言中,以下哪个语句用于结束当前循环()A. breakB. continueC. returnD. exit11.C语言中的结构体是一种什么类型的数据()A. 基本数据类型B. 复合数据类型C. 指针类型D. 函数类型12.在C语言中,字符串是以什么字符结尾的()A. \0B. \nC. 'D. "13.C语言中的预处理器指令以什么符号开头()A. #B. $C. %D. &二、双项选择题(将正确答案填在括号内,一题5分,共10分)1.下列哪个符号在C语言中用作注释()A. //B. /* */C. #D. %2.下列哪个选项是C语言中的条件语句()A. ifB. forC. whileD. switch三、填空题(将正确答案填在横线内,一空3分,共18分)1.C语言中的注释有两种形式,分别是____________和____________。
青少年软件编程(C语言)等级考试试卷(三级)202106
青少年软件编程(C语言)等级考试试卷(三级)分数:100 题数:5总体情况一、编程题(共5题,每题20分,共100分)1.数对数对给定2到15个不同的正整数,你的任务是计算这些数里面有多少个数对满足:数对中一个数是另一个数的两倍。
比如给定1 4 3 2 9 7 18 22,得到的答案是3,因为2是1的两倍,4是2个两倍,18是9的两倍。
时间限制:1000内存限制:65536输入一行,给出2到15个两两不同且小于100的正整数。
最后用0表示输入结束。
输出一个整数,即有多少个数对满足其中一个数是另一个数的两倍。
样例输入样例输出试题编号:试题类型:编程题标准答案:试题难度:一般试题解析:#include <iostream>using namespace std;int main() {int c = 0,x=0;int a[15];for(int i = 0; i < 15; i++) {cin >> a[i];if(a[i] == 0)break;c++;}for(int i = 0; i < c; i++) {for(int j = 0; j <c; j++) {if((a[i]/a[j] == 2)&& (a[i]%a[j] == 0) && a[j] != 0) {x++;}}}cout << x;}考生得分:20是否评分:已评分评价描述:2.井和绳子井和绳子有A, B, C, D, E五家人共用一口井,已知井深不超过k米。
A, B, C, D, E的绳长各不相同,而且厘米表示的绳长一定是整数。
从井口放下绳索正好达到水面时:(a)需要A家的绳n1条接上B家的绳1条(b)需要B家的绳n2条接上C家的绳1条(c)需要C家的绳n3条接上D家的绳1条(d)需要D家的绳n4条接上E家的绳1条(e)需要E家的绳n5条接上A家的绳1条问井深和各家绳长。
(完整版)经典C语言测试题(众多知名企业用作招聘笔试题)
一个很牛的人出的被众多知名IT企业用作面试题的看似很简单C语言测试题C++/C试题本试题仅用于考查C++/C程序员的基本编程技能。
内容限于C++/C常用语法,不涉及数据结构、算法以及深奥的语法。
考试成绩能反映出考生的编程质量以及对C++/C的理解程度,但不能反映考生的智力和软件开发能力。
笔试时间90分钟。
请考生认真答题,切勿轻视。
一、请填写BOOL , float, 指针变量与“零值”比较的if 语句。
(10分)提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。
例如int 变量n 与“零值”比较的if 语句为:if ( n == 0 )if ( n != 0 )以此类推。
二、以下为Windows NT下的32位C++程序,请计算sizeof的值(10分)三、简答题(25分)1、头文件中的ifndef/define/endif 干什么用?2、#include <filename.h> 和#include “filename.h” 有什么区别?3、const 有什么用途?(请至少说明两种)4、在C++ 程序中调用被C编译器编译后的函数,为什么要加extern “C”声明?5、请简述以下两个for循环的优缺点四、有关内存的思考题(20分)五、编写strcpy函数(10分)已知strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest是目的字符串,strSrc是源字符串。
(1)不调用C++/C的字符串库函数,请编写函数strcpy2)strcpy能把strSrc的内容复制到strDest,为什么还要char * 类型的返回值?六、编写类String的构造函数、析构函数和赋值函数(25分)已知类String的原型为:class String{public:String(const char *str = NULL); // 普通构造函数String(const String &other); // 拷贝构造函数~ String(void); // 析构函数String & operate =(const String &other); // 赋值函数char *m_data; // 用于保存字符串};请编写String的上述4个函数。
C编程范例考试试题
C编程范例考试试题1.607:有趣的跳跃查看提交统计提问总时间限制:?1000ms内存限制:?65536kB描述一个长度为n(n>0)的序列中存在“有趣的跳跃”当前仅当相邻元素的差的绝对值经过排序后正好是从1到(n-1)。
例如,1423存在“有趣的跳跃”,因为差的绝对值分别为3,2,1。
当然,任何只包含单个元素的序列一定存在“有趣的跳跃”。
你需要写一个程序判定给定序列是否存在“有趣的跳跃”。
输入一行,第一个数是n(0<n<3000),为序列长度,接下来有n个整数,依次为序列中各元素,各元素的绝对值均不超过1,000,000,000。
一行,若该序列存在“有趣的跳跃”,输出"Jolly",否则输出"Notjolly"。
样例输入41423样例输出Jolly05:年龄与疾病查看提交统计提问总时间限制:?1000ms内存限制:?65536kB描述某医院想统计一下某项疾病的获得与否与年龄是否有关,需要对以前的诊断记录进行整理,按照0-18、19-35、36-60、61以上(含61)四个年龄段统计的患病人数占总患病人数的比例。
共2行,第一行为过往病人的数目n(0<n<=100),第二行为每个病人患病时的年龄。
输出按照0-18、19-35、36-60、61以上(含61)四个年龄段输出该段患病人数占总患病人数的比例,以百分比的形式输出,精确到小数点后两位。
每个年龄段占一行,共四行。
样例输入101112131415161718191样例输出20.00%20.00%20.00%40.00%04:数组逆序重放查看提交统计提问总时间限制:?1000ms内存限制:?65536kB描述将一个数组中的值按逆序重新存放。
例如,原来的顺序为8,6,5,4,1。
要求改为1,4,5,6,8。
输入输入为两行:第一行数组中元素的个数n(1<n<100),第二行是n个整数,每两个整数之间用空格分隔。
c 考试试卷和答案解析
c 考试试卷和答案解析**C 考试试卷和答案解析**一、选择题(每题2分,共40分)1. 下列哪个选项是C语言中正确的整型常量?A. 0x12B. 0.5C. 1e2D. 1.23**答案解析:** 正确答案是A。
0x12是一个十六进制的整型常量,B选项是浮点数,C选项是科学记数法表示的浮点数,D选项也是浮点数。
2. C语言中,以下哪个关键字用于声明一个函数?A. intB. voidD. break**答案解析:** 正确答案是B。
void是用于声明函数的返回类型,表示该函数不返回任何值。
A选项int是整型关键字,C选项return是返回语句,D选项break是循环控制语句。
3. 在C语言中,以下哪个运算符用于执行逻辑“与”操作?A. &&B. ||C. !D. &**答案解析:** 正确答案是A。
&&是逻辑“与”运算符,B选项||是逻辑“或”运算符,C选项!是逻辑“非”运算符,D选项&是位“与”运算符。
4. C语言中,以下哪个语句用于循环直到满足某个条件?A. ifC. forD. switch**答案解析:** 正确答案是B。
while循环会一直执行,直到条件不再满足。
A选项if是条件语句,C选项for是循环语句,D 选项switch是多分支选择语句。
5. C语言中,以下哪个函数用于计算两个整数的绝对值?A. abs()B. fabs()C. sqrt()D. pow()**答案解析:** 正确答案是A。
abs()函数用于计算整数的绝对值。
B选项fabs()是计算浮点数绝对值的函数,C选项sqrt()是计算平方根的函数,D选项pow()是计算幂的函数。
6. 在C语言中,以下哪个关键字用于声明一个全局变量?B. externC. autoD. register**答案解析:** 正确答案是B。
extern关键字用于声明一个全局变量,表示该变量在其他文件中定义。
c语言难度高的试题及答案
c语言难度高的试题及答案C语言难度高的试题及答案1. 问题:编写一个C语言程序,实现一个简单的文本编辑器,要求能够读取文本文件,允许用户在指定位置插入、删除、替换字符,并能够保存修改后的文件。
答案:```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_SIZE 1024void insert(char *str, int pos, char c) {memmove(str + pos + 1, str + pos, strlen(str + pos));str[pos] = c;}void delete(char *str, int pos) {memmove(str + pos, str + pos + 1, strlen(str + pos + 1) + 1);}void replace(char *str, int pos, char c) {str[pos] = c;}void saveToFile(const char *filename, const char *str) { FILE *file = fopen(filename, "w");if (file) {fputs(str, file);fclose(file);} else {printf("File could not be opened.\n");}}int main() {char text[MAX_SIZE] = "Hello, World!";printf("Original text: %s\n", text);// Example operationsinsert(text, 7, 'a');printf("After insert: %s\n", text);delete(text, 5);printf("After delete: %s\n", text);replace(text, 0, 'J');printf("After replace: %s\n", text);saveToFile("edited.txt", text);printf("Text saved to edited.txt\n");return 0;}```2. 问题:设计一个C语言程序,实现一个简单的计算器,支持加、减、乘、除四种运算,并能够处理除以零的情况。
2022年3月C语言五级考试试卷含答案
2022年3月C语言五级考试试卷含答案1.数字变换给定一个包含5个数字(0-9)的字符串,例如“02943”,请将“12345”变换到它。
你可以采取3种操作进行变换1. 交换相邻的两个数字2. 将一个数字加1。
如果加1后大于9,则变为03. 将一个数字加倍。
如果加倍后大于9,则将其变为加倍后的结果除以10的余数。
最多只能用第2种操作3次,第3种操作2次求最少经过多少次操作可以完成变换。
时间限制:1000内存限制:65536输入有最多100,000 组数据每组数据就是包含5个数字的字符串输出对每组数据,输出将"12345"变换到给定字符串所需要的最少操作步数。
如果无法变换成功,输出-1样例输入124359999912374样例输出1-13提示由于测试数据太多,如果对每组数据都从头进行搜索,就会超时。
建议先做预处理,即以“12345”作为初始状态做一遍彻底的广搜,找出“12345”经合法变换能够到达的所有字符串,并记录到达这些字符串各需要多少步操作。
然后对读入的每组数据,在上述预处理记录的结果中进行查询即可。
2.寻找边缘给定一张R*C 的地图,由"X" 和"O" 组成。
现在需要重新处理这张地图,找到地图边缘的那些"O"。
你需要将这些地图边缘上的"O" 保留下来,然后将其他的"O" 全部替换为"X"。
地图边缘的"O" 指的是那些处于第一行/列或最后一行/列上的"O",以及从这些"O" 的相邻位置(上下左右)延伸出去的"O"。
时间限制:1000内存限制:65536输入第一行是一个正整数T,表示一共有T 组数据。
对于每组数据,其第一行是两个正整数R 和C,表示地图的大小,用一个空格分开。
接下来的R 行,每行包含了 C 个字符,分别是"X" 或"O"。
C语言中职期末试卷
**市中职中学2015—2016年度(下)期末 《C 语言程序设计基础》试卷 (考试时间:60分钟 总分:100分 适应班级: 级 班) 注:1、答题前,务必将自己的班级、姓名、学号填写在相应的位置上。
2、请将答案按照题号顺序在各题目的答题区域内作答;保持答题卷清洁。
3、超出答题区域书写的答案无效。
一、填空题(每题2分,共30分) 1、C 语言源程序是由 组成的,人们称C 语言为高级语言,一个函数由函数头、 两部分组成。
2、定义值为2016的符号常量VER 的命令是: 。
3、实型常量的十进制小数形式要求小数点两边 ,而指数形式中E(或e)的前后必须有数字,后边的数必须为 。
4、表达式5/2的值和表达式 (double)5/2 的值分别是 、 。
5、连续输入多个数值型数据时,数据之间用 分隔。
6、格式转换说明符要与输入地址列表中的变量。
7、C语言规定,为了在程序中能够正确使用输入输出函数,需要在源程序开始写上预处理命令。
8、程序设计的初期一般用自然语言、流程图、伪代码等工具来表示算法,其中表示具有直观、易于交流的特点。
9、模块化程序设计的思路是。
在C语言中实现程序化模块的工具是。
10、C语言规定,逻辑真用1表示,逻辑假用0表示。
设x为整形变量,值为1,则表达式(x&&1)= =(x%2)的值为。
11、与数学表达式|x|>10意思相同的C语言表达式为。
二、单项选择题(每题3分,共30分)(注:表示空格)1.下面正确的整型常量是()。
A.009B.x789 C.2e3D.9002.在C语言中,要求运算数必须是整型的运算符是()。
A、/ B、++ C、*=D、%3.有如下程序,若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是()。
int x1,x2;char y1,y2;scanf(“%d%d”,&x1,&x2);scanf(“%c%c”,&y1,&y2);A.1020AB B.10 20 ABC C.10AB 20AB D10 20AB4.根据下面的程序及数据的输入和输出的形式,程序中输入语句的正确形式应该为()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C) 一条预处理命令行必须以分号结束
处理的 7.设 int 型数据占 4 个字节,若有定义:int x[10]={0,2,4}; 则 sizeof(x)的值为 A) 3 B) 12 8.下列关于 C++函数的叙述中,正确的是 A)每个函数至少要有一个形参
C) 40
D) 10 。 B)每个函数都必须有返回值 D)函数不能自己调用自己
程序运行的结果是:ABCDEF
6 .#include <iostream.h> class point{ private: int x,y; public: point(int x1=0,int y1=0){ x=x1; y=y1; } virtual void move(int x1,int y1){ x+=x1; y+=y1; } virtual void disp(){ cout<<"点:("<<x<<','<<y<<')'; } }; class line:public point{ private: int xx,yy; public: line(int x1,int y1,int x2,int y2):point(x1,y1){ xx=x2; yy=y2; } void move(int x1,int y1){ point::move(x1,y1); xx+=x1; yy+=y1; } void disp(){ point::disp (); cout<<"-点:("<<xx<<','<<yy<<')'; } }; void main(){ line l(2,4,6,8); point p(l),*pp=&l; p.move (3,3); pp->move (4,4); p.disp ();
cout<<endl; pp->disp (); cout<<endl; } 结果: 点:(5,7) 点:(6,8)-点:(10,12) Press any key to continue 三.程序填空(每空 2 分,共 32 分) : 1. 设一个数列的第 1、2 项分别为 0 和 1,以后每个奇数编号的项是前两项之和,偶数编号 项是前两项之差的绝对值。下面程序的功能是生成该数列的前 20 项并存入一个数组 x,然 后将这 20 个数存入文本文件 data.txt。 #include <fstream.h> #include <math.h> void main() { int x[20],i; x[0]=0;x[1]=1 i=2; do{ x[i]= ; //x[i-1]+x[i-2] x[i+1]=abs(x[i-1]-x[i]); i= ; //i+2 }while( ); //i<19 ; if(!fout) return; for( ;i<20 ; j++){ //i=0 fout<<x[i]<<“ ”; fout.close(); } 2.以下程序实现将任意正整数转换成相应字符串。例如,将 1234 转换为“1234” 。 #include <iostream.h> class Cstack{ //定义字符栈 char s[80]; int top; //栈顶指示器 public: Cstack() { top=-1 ;} //把栈置为空 void push(char ch){ //将 ch 入栈 if(top==79) return; s[++top]= ch ; } char pop(){ //出栈并返回栈顶元素值(栈空时返回 0) if(top==-1)return 0; return ; //s[top--]
A)B+=3; B)a[5]=B+3; C)int x[B+3]; 4. a、b 均为 int 型且 b≠0,则表达式 a-a/b*b 的值为 。
A)0 B) a D)a 被 b 除商的整数部分 C)a 被 b 除的余数部分 5. 设 int a=5,b=6,c=7; 则 cout<<((a+b)<c&&b!=c)<<","<<((a+b)<c,b=c);的输出是 。 A) 0,0 B) 0,7 6. 以下关于编译预处理的叙述中,错误的是 A)预处理命令必须以“#”开始 C) 1,0 D) 1,7 。 B)一条预处理命令行必须独占一行 D) 预处理命令是在正式编译之前先被 。
C)函数在被调用之前必须先声明
9.下面有关重载函数的说法中正确的是 A) 重载函数必须具有不同的返回值类型
。 B) 重载函数形参个数必须不同 D) 重载函数名可以不同 。 D) 不确定的数 。
C) 重载函数必须有不同的形参表
10. 表达式 strcmp("box","boss") 的值是
B) 负整数 C) 0 11.设 int a[3][4],*p=a[0]; 以下不能正确访问数组元素 a[i][j]的是
A) 完全二叉树 B) 满二叉树 C) 二叉排序树 D) 普通的二叉树 18.设用一个大小为 6 的一维数组存储顺序循环队列,若当前 front 和 rear 的值分别为 3
和 5,当从队列中删除一个元素,再加入两个元素后,front 和 rear 的值分别是 A)5 和 0 B)4 和 7 C)无法完成要求的操作 D)4 和 1 19.以下关于关键字的描述中错误的是 。 A)关键字可由元素的一个或多个数据项组成 B) 可以按关键字进行查找
void main(){ A m,n(15,18); m.print(); n.print(); m+=n; m.print(); n.print(); } 程序运行的结果是: a=10, b=10 a=15,b=18 a=25,b=28 a=15,b=18 4. #include <iostream.h> void main(){ int x=3,y=3; switch(x%2) { case 1: switch (y%x){ case 0:cout<<"first\n"; case 1:cout<<"second\n";break; default: cout<<"hellow\n"; } case 2:cout<<"third\n"; } } 程序运行的结果是: first second third 5. #include <iostream.h> #include <string.h> void fun(char *str){ char t; int i,j; for(i=1;i<strlen(str);i++){ t=str[i]; for(j=i-1;j>=0&&t<str[j];j--) str[j+1]=str[j]; str[j+1]=t; } } void main(){ char s[]="CFBEAD"; fun(s); cout<<s<<endl; }
D) p=new int[5]={1,2,3,4,5,6}; 16.下列关于动态联编的描述错误的是 。 A) 动态联编在运行时选择联编函数 B) 动态联编也称为动态多态性
C) p=new int[10];
C) 函数重载和运符重载属于动态联编 D) 动态联编可用来选择虚函数 k+1 17.设二叉树的高度为 k(k≥0),若其包含的结点总数为 2 -1,则该二叉树是 。
D) public 成员 D) 3
。
A) 变量 a 的地址值 B) 无意义 C) 变量 p 的地址值 14.设 int i=5,f=15; 则执行语句 if(i=0) f-=5; 后 i 和 f 的值分别是 A) 5,15 B) 5,10 C) 0,15 15.设 int *p;以下对 new 运算符的正确使用形式是 A) p=new a[10]; B) *p=new int[10]; D) 0,10 。
。
C) 不同元素的关键字值可以相同
一的 20.直接插入排序在被排序的数据 A) 完全无序 时效率较高。 C) 逆序排列
D) 每个元素的关键字必须是唯
B) 基本有序
D) 最 大 值 与 最 小 值 相 差
不大 二.写出以下程序的运行结果(每题 4 分,共 20 分) 1. #include <iostream.h> void main(){ int a[8]={12,25,33,5,8,16,51,22},i; int *p=a; for(i=0;i<4;i++) cout<<*(p+i*2)<<endl; } 程序运行的结果是: 12 33 8 51 2. #include <iostream.h> int fun(){ static int d2=0,d1=1; int t=d2+d1; d1=d2; d2=t; return d2; } void main(){ for(int i=0;i<6;i++) cout<<fun()<<“ ”; cout<<endl; } 程序运行的结果是:1 1 2 3 5 8 3. #include <iostream.h> class A{ public: A(){ a=b=10; } A(int i,int j) { a=i; b=j; } void operator+=(const A &x){ a+=x.a; b+=x.b; } void print(); private: int a,b; }; void A::print(){ cout<<"a="<< a<<",b="<< b<<endl; }