C语言等级考试真题
- 格式:doc
- 大小:1.20 MB
- 文档页数:61
2024年6月青少年软件编程C语言等级考试试卷四级真题分数:100 题数:41.人以群分(25分)。
社交网络中我们给每个人定义了一个“活跃度”,现希望根据这个指标把人群分为两大类,即外向型(outgoing,即活跃度高的)和内向型(introverted,即活跃度低的)。
要求两类人群的规模尽可能接近,而他们的总活跃度差距尽可能拉开。
输入:第一行给出一个正整数N(2≤N≤105)。
随后一行给出N个正整数,分别是每个人的活跃度,其间以空格分隔。
题目保证这些数字以及它们的和都不会超过231。
输出:按下列格式输出:,其中N1是外向型人的个数;N2是内向型人的个数;N3是两群人总活跃度之差的绝对值。
2.那就别担心了(25分)。
下图转自“英式没品笑话百科”的新浪微博——所以无论有没有遇到难题,其实都不用担心。
博主将这种逻辑推演称为“逻辑自洽”,即从某个命题出发的所有推理路径都会将结论引导到同一个最终命题(开玩笑的,千万别以为这是真正的逻辑自洽的定义……)。
现给定一个更为复杂的逻辑推理图,本题就请你检查从一个给定命题到另一个命题的推理是否是“逻辑自洽”的,以及存在多少种不同的推理路径。
例如上图,从“你遇到难题了吗?”到“那就别担心了”就是一种“逻辑自洽”的推理,一共有3条不同的推理路径。
输入:首先在一行中给出两个正整数N(1<N≤500)和M,分别为命题个数和推理个数。
这里我们假设命题从1到N编号。
接下来M行,每行给出一对命题之间的推理关系,即两个命题的编号S1 S2,表示可以从S1推出S2。
题目保证任意两命题之间只存在最多一种推理关系,且任一命题不能循环自证(即从该命题出发推出该命题自己)。
最后一行给出待检验的两个命题的编号A B。
输出:在一行中首先输出从A到B有多少种不同的推理路径,然后输出Yes如果推理是“逻辑自洽”的,或No如果不是。
题目保证输出数据不超过109。
3.凑零钱(25分)。
韩梅梅喜欢满宇宙到处逛街。
2级计算机等级考试c语言试题及答案一、选择题(每题2分,共20分)1. C语言中,以下哪个选项是合法的变量名?A. 2ndVariableB. intC. _firstVariableD. variable-name答案:C2. 在C语言中,以下哪个关键字用于定义一个函数?A. classB. functionC. defD. void答案:D3. 下列哪个选项不是C语言的标准库函数?A. printfB. scanfC. strcatD. main答案:D4. C语言中,以下哪种数据类型用于存储字符?A. intB. charC. floatD. double5. 在C语言中,以下哪个选项是正确的字符串定义?A. "Hello"B. 'Hello'C. "Hello"[]D. 'Hello'[]答案:A6. C语言中,以下哪个选项用于定义一个整型数组?A. int array[10];B. int array[];C. int array[10]={0};D. int array[]={0};答案:A7. 在C语言中,以下哪个选项是正确的二进制数表示?A. 0b1010B. 0x2AC. 0101D. 0B1010答案:A8. C语言中,以下哪个选项是正确的注释方式?A. // This is a commentB. /* This is a comment */C. //* This is a comment */D. /* This is a comment */答案:B9. C语言中,以下哪个选项用于定义一个结构体?B. classC. unionD. enum答案:A10. 在C语言中,以下哪个选项是正确的文件包含指令?A. #include "stdio.h"B. #include <stdio.h>C. #include "stdio.h"D. #include <stdio.h>答案:B二、填空题(每题2分,共20分)1. C语言中,用于定义一个整型变量的关键字是________。
2023年9月青少年软件编程C语言等级考试试卷一级(含答案)分数:100 题数:5一、编程题(共5题,共100分)第1题. 日期输出给定两个整数,表示一个日期的月和日。
请按照"MM-DD"的格式输出日期,即如果月和日不到2位时,填补0使得满足2位。
时间限制:10000内存限制:65536输入2个整数m,d(0 < m <= 12, 0 < d <= 31)。
数据保证日期合法。
输出按照题目要求输出日期样例输入7 18样例输出07-18 。
参考答案:。
第2题. 计算(a+b)*(c-b)的值给定3个整数a、b、c,计算表达式(a+b)*(c-b)的值。
时间限制:1000内存限制:65536输入输入仅一行,包括三个整数a、b、c, 数与数之间以一个空格分开。
(-10,000 < a,b,c < 10,000)输出输出一行,即表达式的值样例输入2 3 5样例输出10 。
参考答案:。
第3题. 有一门课不及格的学生给出一名学生的语文和数学成绩,判断他是否恰好有一门课不及格(成绩小于60分)。
时间限制:10000内存限制:65536输入一行,包含两个在0到100之间的整数,分别是该生的语文成绩和数学成绩。
输出若该生恰好有一门课不及格,输出1;否则输出0。
样例输入50 80样例输出1 。
参考答案:。
第4题. 特殊求和如果一个数能够被7整除或者十进制表示中含有数字7,那么我们称这个数为幻数,比如17,21,73是幻数,而6,59不是。
对于给定的N,求出1~N中所有幻数的和。
时间限制:1000内存限制:65536输入一个整数N(1 < N < 10000)。
输出一个整数,表示1~N中所有幻数的和。
样例输入14样例输出21 。
参考答案:。
第5题. 比n小的最大质数对于给定的n,求比n小的质数中最大的一个。
质数是指一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数。
1、2、3、4、5、6、78910111213【参考答案】long fun ( char *p){long n=0;int flag=1;if(*p=='-') /*负数时置flag为-1*/ {p++;flag= -1;}else if(*p=='+') /*正数时置flag为1*/p++;while(*p!='\0'){n=n*10+*p-'0'; /*将字符串转成相应的整数*/p++;}return n*flag;}1415161718192021222324252627282930313233343536【参考答案】void fun(int tt[M][N],int pp[N]){int i,j,max;for(j=0;j<N;j++){max=tt[0][j]; /*假设各列中的第一个元素最大*/for(i=0;i<M;i++)if(tt[i][j]>max) /*如果各列中的元素比最大值大,则将这个更大的元素看作当前该列中最大元素*/max=tt[i][j];pp[j]=max; /*将各列的最大值依次放入pp数组中*/}}37【参考答案】unsigned fun(unsigned w){int n=1,j,s=1;unsigned t;t=w;/*首先确定w的位数,用变量n保存*/while(t>=10){/*每次循环使s的位数减1,同时n加1*/t=t/10;n++;}/*求10的n-1次方*/for(j=1;j<n;j++)s=s*10;/*用w对10的n-1次方求余即可得到所求*/return w%s;}38【参考答案】void fun(char*s){char ch;int i,m,n;i=0;m=n=strlen(s)-1;/*将第i个和倒数第i个数互换,但循环的次数为数组长度的一半*/while(i<(n+1)/2){/*使用中间变量叫唤*/ch=s[i];s[i]=s[m];s[m]=ch;i++; m--;}}39【参考答案】void fun( char s[],int c){int i=0;char *p;p=s;while(*p) /*判断是否为结束符*/{if(*p!=c) /*判断字符串中字符是否与指定字符相同*/ {s[i]=*p;/*不同将重新组合字符串,*/i++;}p++; /*相同则处理下一个字符。
2024年3月青少年软件编程C语言等级考试试卷一级真题(答案)分数:100 题数:5一、编程题(共5题,共100分)。
1.倒序输出。
依次输入4个整数a、b、c、d,将他们倒序输出,即依次输出d、c、b、a这4个数。
时间限制:1000。
内存限制:65536。
输入:一行4个整数a、b、c、d,以空格分隔。
0<a,b,c,d<108。
输出:一行4个整数d、c、b、a,整数之间以一个空格分隔。
样例输入:样例输出:参考答案:2.足球联赛积分。
在足球联赛里,一个球队赢下一场比赛得到3个积分,打平一场比赛得到1个积分,输掉比赛得到0分。
现已知一个球队在整个联赛里的比赛情况,求该球队最终的积分。
时间限制:1000。
内存限制:65536。
输入:三个整数x,y,z,以空格分开,分别表示这个球队赢下的比赛场数,打平的比赛场数,输掉的比赛场数。
(0≤x,y,z≤40)。
输出:一个整数,表示该球队最终的积分。
样例输入:样例输出:提示:63=19*3+6*1+4*0。
参考答案:3.苹果和虫子。
你买了一箱n个苹果,很不幸的是买完时箱子里混进了一条虫子。
虫子每x小时能吃掉一个苹果,假设虫子在吃完一个苹果之前不会吃另一个,那么经过y小时你还有多少个完整的苹果?时间限制:1000。
内存限制:65536。
输入:输入仅一行,包括n,x和y(均为整数)。
输出:输出也仅一行,剩下的苹果个数。
样例输入:样例输出:提示:是要求完整的苹果数。
参考答案:4.整数的个数。
给定k(1<k<100)个正整数,其中每个数都是大于等于1,小于等于10的数。
写程序计算给定的k个正整数中,1,5和10出现的次数。
时间限制:10000。
内存限制:65536。
输入:输入有两行:第一行包含一个正整数k,第二行包含k个正整数,每两个正整数用一个空格分开。
输出:输出有三行,第一行为1出现的次数,,第二行为5出现的次数,第三行为10出现的次数。
样例输入:样例输出:参考答案:5.求满足条件的3位数。
全国计算机等级考试c语言试题及答案一、选择题(每题2分,共20分)1. 下列关于C语言的描述中,错误的是:A. C语言是一种高级编程语言B. C语言可以直接在操作系统上运行C. C语言具有结构化的特点D. C语言具有丰富的库函数答案:B2. 在C语言中,用于定义数组的关键字是:A. structB. enumC. unionD. int答案:D3. 下列关于指针的描述中,正确的是:A. 指针可以存储函数的地址B. 指针不能存储变量的地址C. 指针不能存储数组的地址D. 指针不能存储指针的地址答案:A4. 在C语言中,用于定义结构体的关键字是:A. structB. unionC. enumD. typedef答案:A5. 下列关于循环的描述中,错误的是:A. for循环可以嵌套使用B. while循环不能嵌套使用C. do-while循环至少执行一次D. 循环语句可以没有循环体答案:B6. 在C语言中,用于定义函数的关键字是:A. structB. unionC. enumD. int答案:D7. 下列关于文件操作的描述中,错误的是:A. 文件指针是指向文件的指针B. 文件操作需要包含头文件stdio.hC. 文件操作只能使用二进制方式打开D. 文件操作可以使用"r"、"w"、"a"等模式答案:C8. 在C语言中,用于定义枚举的关键字是:A. structB. unionC. enumD. typedef答案:C9. 下列关于预处理指令的描述中,错误的是:A. #include用于包含头文件B. #define可以定义宏C. #ifdef可以用于条件编译D. #pragma可以用于编译器指令答案:C10. 在C语言中,用于定义联合的关键字是:A. structB. unionC. enumD. typedef答案:B二、填空题(每题2分,共20分)1. 在C语言中,表示逻辑“与”的运算符是______。
2024年3月青少年软件编程C语言等级考试试卷四级真题分数:100 题数:4一、编程题(共4题,共100分)1.最长上升子序列一个数的序列b i,当b1 < b2 < ... < b S的时候,我们称这个序列是上升的。
对于给定的一个序列(a1, a2, ..., a N),我们可以得到一些上升的子序列(a i1, a i2, ..., a iK),这里1 <= i1 < i2 < ... < i K <= N。
比如,对于序列(1, 7, 3, 5, 9, 4, 8),有它的一些上升子序列,如(1, 7), (3, 4, 8)等等。
这些子序列中最长的长度是4,比如子序列(1, 3, 5, 8). 你的任务,就是对于给定的序列,求出最长上升子序列的长度。
时间限制:11000内存限制:65536输入输入的第一行是序列的长度N (1 <= N <= 1000)。
第二行给出序列中的N个整数,这些整数的取值范围都在0到10000。
输出最长上升子序列的长度。
样例输入样例输出试题编号:20240323-4-01试题类型:编程题标准答案:试题难度:一般试题解析:展示地址:点击浏览考生答案:考生得分:0是否评分:已评分评价描述:2.重启系统小明帮助管理一个处理数据的计算系统,有N个待处理的任务,需要按照顺序来完成这些任务,即每次所完成任务的编号都要大于前一个完成任务的编号,且单个任务不可以分解完成。
计算系统运行着一个奇怪的保护程序,它限制了系统当前所能处理的数据量不能超过上次完成任务所处理的数据量。
重启系统可以使它立刻恢复到最高性能(一开始系统拥有最高性能,最高性能大于任何待处理任务的数据量)。
小明有一次重启系统的权限(也可以不使用),你能帮他算出最多能完成几个任务吗?时间限制:1000内存限制:65536输入第一行:N (2 <= N <= 1000) 待处理的任务数第二行:N个整数,每个任务的数据量输出输出只包括一行,这一行只包含一个整数,表示最多能完成的任务数。
2023年9月青少年软件编程C语言等级考试试卷五级(含答案)分数:100 题数:4一、编程题(共4题,共100分)第1题.红与黑有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。
你站在其中一块黑色的瓷砖上,只能向相邻的黑色瓷砖移动。
请写一个程序,计算你总共能够到达多少块黑色的瓷砖。
时间限制:1000内存限制:65536输入:包括多个数据集合。
每个数据集合的第一行是两个整数W和H,分别表示x方向和y方向瓷砖的数量。
W和H都不超过20。
在接下来的H行中,每行包括W个字符。
每个字符表示一块瓷砖的颜色,规则如下:(1)‘.’黑色的瓷砖;(2)‘#’白色的瓷砖;(3)‘@’黑色的瓷砖,并且你站在这块瓷砖上。
该字符在每个数据集合中唯一出现一次。
当在一行中读入的是两个零时,表示输入结束。
输出:对每个数据集合,分别输出一行,显示你从初始位置出发能到达的瓷砖数(记数时包括初始位置的瓷砖)。
样例输入:6 9....#......#..............................#@...#.#..#.0 0样例输出:45参考答案:#include <iostream>#define xa x+a[i]#define ya y+b[i]using namespace std;int graph[21][21];int w=0,h=0;int X1=0,Y1=0,cnt=0;const int a[]={-1,0,1,0},b[]={0,-1,0,1};void dfs(int x,int y){graph[x][y]=0;cnt++;for(int i=0;i<4;i++){if(graph[xa][ya]==1 && xa>0 && xa<=w && ya>0 && ya<=h)dfs(xa,ya);}}void get(){for(int i=1;i<=w;i++){for(int j=1;j<=h;j++){char a;cin>>a;if(a=='#') graph[i][j]=0;else if(a=='.') graph[i][j]=1;else if(a=='@'){X1=i,Y1=j;graph[i][j]=1;}}}dfs(X1,Y1);cout<<cnt<<endl;cnt=0;}int main(){while(1){cin>>h>>w;if(h==0 && w==0) break;get();}return 0;}第2题.装箱问题一个工厂制造的产品形状都是长方体,它们的高度都是h,长和宽都相等,一共有六个型号,他们的长宽分别为1*1,2*2,3*3,4*4,5*5,6*6。
C语言关键字速记(必考):enum char case const unsigned do default double else extern float for goto if int long register short signed struct switch typedef union void volatile while break return continue autoC语言的最小单位是函数。
C语言的结构有:顺序结构、循环结构和分支结构。
全国计算机等级考试c语言大题改错题(每小题10分,2小题/套)第1套1.程序Cmody021.c输出如下所示图形:*************************2.程序Cmody022.c的功能是求解百元买百鸡问题:设一只公鸡2元、一只母鸡1元、一只小鸡0.5元。
问一百元买一百只鸡,公鸡、母鸡、小鸡数可分别为多少?有多少种分配方案?-------------------------Cmody021.c-------------------#include<stdio.h>void main(){/**/int i;j;/**/for(i=1;i<=5;i++){for(j=1;j<=5-i;j++)printf(" ");/**/ for(j=1;j<=5;j++)/**/printf("*");printf("\n");}}-------------------------Cmody022.c------------------- #include<stdio.h>#include<conio.h>/**/int fun();/**/{int hen,cock,chicken,n=0;clrscr();for(cock=0;cock<=50;cock+=1)for(hen=0;hen<=100;hen=hen+1){chicken=2*(100-hen-2*cock);/**/if(cock+hen+chicken=100)/**/{n++;printf("%d-->hen:%d,cock:%d,chicken:%d\n",n,hen,cock,chi cken);if(n==20)getch();}}return n;}void main(){int num;num=fun();printf("\nThere are %d solutions.\n",num);getch();}第2套1.程序Cmody031.c的功能是:从键盘上输入两个整数,及一个运算符(+、-、*、/或%),进行相应的运算后输出运算的结果。
2024年6月青少年软件编程C语言等级考试试卷一级真题分数:100 题数:51.奇迹(20分)。
经典电影《阿甘正传》有句台词,说:(奇迹每天都发生)。
本题就请你直接在屏幕上输出这句话。
输入:本题没有输入。
输出:在一行中输出。
样例输入:无。
样例输出:2.九牛一毛(20分)。
这是一道脑筋急转弯题:猪肉一斤15元,鸡肉一斤20元,那么一毛钱能买多少头牛?答案是:9——因为“九牛一毛”。
本题就请你按照这个逻辑,计算一下N块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。
输入:输入在一行中给出一个不超过1000的正整数N,即以“元”为单位的货币量。
输出:在一行中顺序输出N块钱能买多少斤猪肉、多少斤鸡肉、多少头牛。
三个数字都取整数,其间以1个空格分隔,行首尾不得有多余空格。
样例输入:样例输出:3.题A除以B(20分)。
给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。
输入:输入在第一行给出两个整数A和B(-100≤A,B≤100),数字间以空格分隔。
输出:在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为“Error”。
输出的商应保留小数点后2位。
4.进化论(20分)。
在“一年一度喜剧大赛”上有一部作品《进化论》,讲的是动物园两只猩猩进化的故事。
猩猩吕严说自己已经进化了9年了,因为“三年又三年”。
猩猩土豆指出“三年又三年是六年呐”。
本题给定两个数字,以及用这两个数字计算的结果,要求你根据结果判断,这是吕严算出来的,还是土豆算出来的。
输入:输入第一行给出一个正整数N,随后N行,每行给出三个正整数A、B和C。
其中C不超过10000,其他三个数字都不超过100。
输出:对每一行给出的三个数,如果C是A×B,就在一行中输出“Lv Yan”;如果是A+B,就在一行中输出“Tu Dou”;如果都不是,就在一行中输出“zhe du shi sha ya!”。
青少年软件编程(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 >的子序列。
2023年9月青少年软件编程C语言等级考试试卷四级(含答案)分数:100题数:4一、编程题(共4题,共100分)第1题.酒鬼Santo刚刚与房东打赌赢得了一间在New Clondike的大客厅。
今天,他来到这个大客厅欣赏他的奖品。
房东摆出了一行瓶子在酒吧上。
瓶子里都装有不同体积的酒。
令Santo高兴的是,瓶子中的酒都有不同的味道。
房东说道:“你可以喝尽可能多的酒,但是一旦打开酒盖你就必须把它喝完,喝完一瓶后把它放回原处。
还有一件最重要的事,你必须从左至右依次喝,并且不能连续超过三瓶,不然会给你带来坏运气。
”现在可怜的Santo站在酒吧前努力的想着,他到底应该喝哪几瓶才能使喝的酒最多呢?请帮助他找出他应该喝的酒瓶号,因为思考让他感到不安。
时间限制:2000内存限制:131072输入:第一行一个整数N,有N个酒瓶,N<=700接下有N行,第I+1行的数字代表酒瓶I中酒的体积。
输出:一个数字,喝的酒的最大总体积,遵守以上规则,使得三个连续瓶子中至少一个瓶子是满的。
样例输入:661013981样例输出:33参考答案:#include<bits/stdc++.h>using namespace std;int f[701][5];int main(){int n;int a[1000];cin>>n;for(int i=1;i<=n;i++){cin>>a[i];}for(int i=1;i<=n;i++){f[i][0]=f[i-1][3];int mx=f[i][0];for(int j=1;j<=2;j++){f[i][j]=f[i-1][j-1]+a[i];mx=max(mx,f[i][j]);}f[i][3]=mx;}cout<<f[n][3];}第2题.大盗阿福阿福是一名经验丰富的大盗,趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。
2024年6月青少年软件编程C语言等级考试试卷三级真题分数:100 题数:51.谷歌的招聘(20分)。
2004年7月,谷歌在硅谷的101号公路边竖立了一块巨大的广告牌用于招聘。
内容超级简单,就是一个以结尾的网址,而前面的网址是一个10位素数,这个素数是自然常数e中最早出现的10位连续数字。
能找出这个素数的人,就可以通过访问谷歌的这个网站进入招聘流程的下一步。
自然常数e是一个著名的超越数,前面若干位写出来是这样的:其中粗体标出的10位数就是答案。
本题要求你编程解决一个更通用的问题:从任一给定的长度为L的数字中,找出最早出现的K位连续数字所组成的素数。
输入:输入在第一行给出2个正整数,分别是L(不超过1000的正整数,为数字长度)和K(小于10的正整数)。
接下来一行给出一个长度为L的正整数N。
输出:在一行中输出N中最早出现的K位连续数字所组成的素数。
如果这样的素数不存在,则输出“404”。
注意,原始数字中的前导零也计算在位数之内。
例如在200236中找4位素数,0023算是解;但第一位2不能被当成0002输出,因为在原始数字中不存在这个2的前导零。
2.吉利矩阵(20分)。
所有元素为非负整数,且各行各列的元素和都等于7的3x3方阵称为“吉利矩阵”,因为这样的矩阵一共有666种。
本题就请你统计一下,把7换成任何一个[2,9]区间内的正整数L,把矩阵阶数换成任何一个[2,4]区间内的正整数N,满足条件“所有元素为非负整数,且各行各列的元素和都等于L”的NxN方阵一共有多少种?输入:输入在一行中给出2个正整数L和N,意义如题面所述。
数字间以空格分隔。
输出:在一行中输出满足题目要求条件的方阵的个数。
3.胖达与盆盆奶(20分)。
大熊猫,俗称“胖达”,会排队吃盆盆奶。
它们能和谐吃奶的前提,是它们认为盆盆奶的分配是“公平”的,即:更胖的胖达能吃到更多的奶,等胖的胖达得吃到一样多的奶。
另一方面,因为它们是排好队的,所以每只胖达只能看到身边胖达的奶有多少,如果觉得不公平就会抢旁边小伙伴的奶吃。
c语言等级考试试题C语言等级考试试题一、选择题(每题2分,共20分)1. 在C语言中,以下哪个选项不是基本数据类型?A. intB. floatC. doubleD. string2. 以下哪个是正确的C语言常量定义方式?A. const int Max = 100;B. int const Max = 100;C. const int max = 100;D. int const max = 100;3. 在C语言中,以下哪个语句可以正确地声明一个指针变量?A. int *ptr;B. ptr int;C. int *ptr = 0;D. int ptr = 0;4. 以下哪个表达式的结果为真?A. 5 > 3B. 'A' == 65C. 10 % 3 == 1D. All of the above5. 在C语言中,以下哪个函数用于计算两个数的最大值?A. max()B. min()C. abs()D. pow()6. 以下哪个循环语句可以正确地实现从1到10的计数?A. for (int i = 10; i >= 1; i--)B. for (int i = 1; i <= 10; i++)C. while (int i = 1; i <= 10; i++)D. do { int i = 1; } while (i <= 10);7. 在C语言中,以下哪个关键字用于定义函数?A. ifB. elseC. functionD. void8. 以下哪个是C语言中正确的数组声明?A. int array[10] = {0};B. int array[] = {0, 1, 2, 3};C. int array[10] = 0;D. int array = {0, 1, 2, 3};9. 在C语言中,以下哪个操作符用于计算两个数的乘积?A. +B. -C. *D. /10. 以下哪个选项是C语言中的条件运算符?A. &&B. ||C. ? :D. ++二、填空题(每空2分,共20分)11. 在C语言中,`printf`函数用于______。
全国计算机等级考试c语言题库
全国计算机等级考试C语言题库
一、选择题
C语言中,注释部分由 _______ 组成。
A. //和/*/
B. //和////
C. //
D. //和// 和 ///*/
答案:C
在C语言中,字符型数据在内存中以 _______ 形式存储。
A. ASCII码
B. 16进制码
C. 补码
D. 原码
答案:A
下列叙述中,正确的是 _______ 。
A. C语言程序将从源文件的第一行开始执行
B. 凡是以main作为函数名的函数,其功能都必须是作为C程序的入口点
C. 编译预处理命令写在程序的开头,凡是在编译预处理命令后面的语句都必须在编译之前执行
D. 注释部分对程序的运行结果不产生影响,它只是起到帮助理解代码的作用
答案:D
二、填空题
在C语言中,整数类型包括 _______ 、 _______ 、 _______ 和 _______ 。
答案:short、int、long、long long
在C语言中,sizeof(float)的值是 _______ 。
答案:4
函数中局部变量的生命周期是 _______ 。
答案:从定义开始到函数结束
三、简答题
1. 写出C语言中的三种基本控制结构,并简要说明它们的作用。
答案:C语言中的三种基本控制结构是顺序结构、选择结构和循环结构。
顺序结构按照程序中语句的顺序执行,选择结构根据条件判断执行不同的分支,循环结构重复执行某段代码直到满足某个条件为止。
c语言等级考试试题一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef2. 下列哪个选项不是C语言的标准输入输出函数?A. printf()B. scanf()C. coutD. getchar()3. 在C语言中,全局变量的生命周期是?A. 只在定义它的函数中有效B. 从定义开始到程序结束C. 只在main函数中有效D. 只在定义它的代码块中有效4. C语言中,以下哪个操作符用于按位取反?A. !B. ~C. ^D. &&5. 下列哪个不是C语言中合法的赋值运算符?A. +=B. +=C. --D. ++6. 在C语言中,int类型的变量通常占用多少字节的内存空间?A. 1B. 2C. 4D. 87. C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcat()B. strcpy()C. strncpy()D. strncat()8. 下列哪个是C语言中的条件运算符?A. ?B. ||C. &&D. ++9. 在C语言中,以下哪个类型用于表示字符?A. intB. charC. floatD. double10. C语言中,以下哪个函数用于计算并返回字符串的长度?A. strlen()B. strcat()C. strcpy()D. strncat()二、填空题(每题3分,共15分)11. 在C语言中,一个浮点数变量声明为 `float x;`,其默认的初始值是______。
12. 当使用 `scanf()` 函数读取字符串时,通常会使用占位符______。
13. 在C语言中,`sizeof` 运算符可以用来获取数据类型或变量的______。
14. 如果一个变量声明为 `static int count;`,那么它的生命周期是 ______。
15. C语言中的 `break` 语句通常用于 ______ 结构中,以提前退出循环。
2024年6月青少年软件编程C语言等级考试试卷二级真题分数:100 题数:51.冠军魔术(20分)。
2018年FISM(世界魔术大会)近景总冠军简纶廷的表演中有一个情节:以桌面上一根带子为界,当他将纸牌从带子的一边推到另一边时,纸牌会变成硬币;把硬币推回另一边会变成纸牌。
这里我们假设纸牌会变成等量的硬币,而硬币变成纸牌时,纸牌的数量会加倍。
那么给定纸牌的初始数量,当他来回推了N次(来/回各算一次)后,手里拿的是纸牌还是硬币?数量是多少?输入:输入在一行里给出两个正整数,分别是纸牌的初始数量和魔术师推送的次数。
这里假设初始状态下魔术师手里全是纸牌。
输出:如果最后魔术师手里是纸牌,输出0和纸牌数量;如果是硬币,则输出1和硬币数量。
数字间须有1个空格。
题目保证结果数值不超出整型范围(即231-1)。
2.找座位(20分)。
组织一场考试时,监考老师手里会有一份签到表,按座位号的顺序列出学生。
但学生要根据这份表找到自己的座位编号就很麻烦了。
本题就要求你编写程序,帮助学生快速找到他们的座位号。
输入:输入第一行给出一个不超过103的正整数N,是参加考试的学生数。
以下N行,第i行给出座位号为i的学生的学号(i=1,……, N)。
学号是一个不超过8位、完全由数字组成的字符串。
输入保证每个学生只分配一个座位。
接下来一行给出一个不超过105的正整数M,是待查询的学生数。
以下M行,每行给出一个待查询的学生的学号。
输出:对每一个待查询的学生,如果他在考场里有座位,则在一行中输出其座位号;否则输出“NA”(Not Available的缩写),表示座位号不存在。
3.英语老师小助手(20分)。
英语老师要求学生按照如下规则写一串字母:规则1,如果写了某个大写字母,下一个就必须写同个字母的小写,或者写字母表中前一个字母的大写。
规则2,如果写了某个小写字母,下一个就必须写同个字母的大写,或者写字母表中下一个字母的小写。
例如“zZzZYXWwxyYX”就是一个合法的字母串;而“wVUuvUTsR”就是非法的。
A)栈是先进后出的线性表B)栈只能顺序存储C)栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针(3)对于长度为的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是A)冒泡排序为C)快速排序为(4)对长度为比较次数为A)(5)下列对于线性链表的描述中正确的是A)存储空间不一定是连续,且各元素的存储顺序是任意的你B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面C)存储空间必须连续,且前件元素一定存储在后件元素的前面D)存储空间必须连续,且各元素的存储顺序是任意的(6)下列对于软件测试的描述中正确的是A)软件测试的目的是证明程序是否正确B)软件测试的目的是使程序运行结果正确C)软件测试的目的是尽可能多地发现程序中的错误D)软件测试的目的是使程序符合结构化原则(7)为了使模块尽可能独立,要求A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(8)下列描述中正确的是A)程序就是软件B)软件开发不受计算机系统的限制C)软件既是逻辑实体,又是物理实体D)软件是程序、数据与相关文档的集合(9)数据独立性是数据库技术的重要特点之一,所谓数据独立性是指______A)数据与程序独立存放B)不同的数据被存放在不同的文件中C)不同的数据只能被对应的应用程序所使用D)以上三种说法都不对(10)用树形结构表示实体之间联系的模型是A)关系模型(11)算法具有五个特性,A)有穷性(12)以下选项中可作为A)(13)以下叙述中正确的是A)用B)用C)用D)用(14)以下不能定义为用户标识符的是A)(15)以下选项中不能作为合法常量的是A)(16)数字字符main(){ charprintf("%c,",}程序运行后的输出结果是A)(17)有以下程序main(){ int m=12, n=34;printf("%d%d",m++, ++n);printf("%d%d\n",n++, ++m);}程序运行后的输出结果是A)(18)有定义语句:。
A)C)(19)有以下程序main(){ int m,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想从键盘上输入数据,使变量456,pA)C)(20)有以下程序main(){ int a,b,d=25;a=d/10%9; b=a&&(-1);printf("%d,%d\n",a,b);}程序运行后的输出结果是A(21)有以下程序main(){ int i=1,j=2, k=3;if(i++==1&&(++j==3||k++==3))printf("%d %d %d\n",i,j,k);}程序运行后的输出结果是A)(22)若整型变量件表达式A)(23)有以下程序main(){ int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;while(i++<7) if(p[i]%2) j+=p[i];printf("%d\n",j);}程序运行后的输出结果是A)(24)有以下程序main(){ char a[7]="a0\0a0\0"; int i,j;i=sizeof(a); j=strlen(a);printf("%d %d\n",i,j);}程序运行后的输出结果是A)(25)以下能正确定义一维数组的选项是A)C)(26)有以下程序int f1(int x,int y){ return x>y?x:y; }int f2(int x,int y){ return x>y?y:x; }main(){ int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g);}程序运行后的输出结果是A)(27)已有定义:确的是______A)数组C)(28)有以下程序void f(int *x,int *y){ int t;t=*x;*x=*y;*y=t;}main(){ int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p<q){f(p,q); p++; q--;}for(i=0;i<8;i++) printf("%d,",a[i]);}程序运行后的输出结果是A)C)(29)有以下程序main(){ int a[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++) p[i]=i;for(i=0;i<3;i++) printf("%d",a[1][i]);}程序运行后的输出结果是A)(30)以下叙述中错误的是A)对于整体输入或输出B)数组名代表的是数组所占存储区的首地址,其值不可改变C)系统将给出“下标越界”的出错信息D)可以通过赋初值的方式确定数组元素的个数(31)有以下程序#define N 20fun(int a[],int n,int m){ int i,j;for(i=m;i>n;i--)a[i+1]=a[i];}main(){ int i,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++) printf("%d",a[i]);}程序运行后的输出结果是A)(32)有以下程序main(){ int a[3][2]={0},(*ptr)[2],i,j;for(i=0;i<2;i++) {ptr=a+i; scanf("%d",ptr); ptr++; } for(i=0;i<3;i++){ for(j=0;j<2;j++) printf("%2d",a[i][j]);printf("\n");}}若运行时输入:A)产生错误信息(33)有以下程序prt(int *m,int n){ int i;for(i=0;i<n;i++) m[i]++;}main(){ int a[]={1,2,3,4,5},i;prt(a,5);for(i=0;i<5;i++) printf("%d,",a[i]);}程序运行后的输出结果是A)C)(34)有以下程序main(){ int a[]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p<a+10;p++) print(}程序运行后的输出结果是A)C)(35)有以下程序#define P 3void F(int x){ return(P*x*x);}main(){ printf("%d\n",F(3+5));}程序运行后的输出结果是A)(36)有以下程序main(){ int c=35; printf("%d\n",c&c);}程序运行后的输出结果是A)(37)以下叙述中正确的是A)预处理命令行必须位于源文件的开头B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间(38)若有以下说明和定义union dt{ int a;char b;double c;}data;以下叙述中错误的是A)B)变量C)程序段:D)(39)以下语句或语句组中A)C)(40)设有如下说明typedef struct ST{ long a;int b;char c[2];}NEW;则下面叙述中正确的是A)以上的说明形式非法C)(41)有以下程序main(){ int a=1,b;for(b=1;b<=10;b++){ if(a>=8) break;if(a%2==1){a+=5; continue;}a-=3;}printf("%d\n",b);}程序运行后的输出结果是A)(42)有以下程序main(){ char s[]="159",*p;p=s;printf("%c",*p++); printf("%c",*p++);}程序运行后的输出结果是A)(43)有以下函数fun(char{ while((*a!='\0')&&(*b!='\0')&&(*a==*b)){ a++;return(*a-*b);}该函数的功能是A)计算B)将C)将D)比较(44)有以下程序main(){ int num[4][4]={{1,2,3,4},{5,6,7,8},for(i=0;i<4;i++){ for(j=0;j<=i;j++) printf("%4c",for(j=_____;j<4;j++) printf("%4d",num[i][j]);printf("\n");}}若要按以下形式输出数组右上半三角1 2 3 46 7 811 1216则在程序下划线处应填入的是A)(45)有以下程序point(charmain(){ charpoint(p);}程序运行后的输出结果是A)(46)程序中若有如下说明和定义语句char fun(char *);main(){ char *s="one",a[5]={0},(*f1)()=fun,ch;......}以下选项中对函数A)(47)有以下结构体说明和变量定义,如图所示: struct node{int data; struct node *next;} *p,*q,*r;data next data next data next现要将下不能完成指定操作的语句是A)C)(48)以下对结构体类型变量A){ int n;float m;}AA;AA td;C){ int n;}aa;struct aa td;(49)以下与函数A)(50)有以下程序#include <stdio.h>void WriteStr(char *fn,char *str){ FILE *fp;fp=fopen(fn,"w");fputs(str,fp);fclose(fp);}main(){ WriteStr("t1.dat","start");WriteStr("t1.dat","end");}程序运行后A)二、填空题(每空(1)某二叉树中度为个叶子结点。