重庆市第二届程序设计大赛题目
- 格式:doc
- 大小:50.00 KB
- 文档页数:10
二级C语言笔试试卷(A)1注意事项:1.一、二题为客观题,请将答案涂在机读答题卡上2.三、四、五、六题为主观题,请将答案做在答题纸上一、单项选择题。
(每题1分,共20分)1.在C程序旳函数调用时,主调函数中旳实参和被调函数中旳形参()。
(A)个数、次序必须相似,但数据类型可以不考虑(B)个数、次序和对应参数旳数据类型都应当相似(C)个数、次序和数据类型均可以不相似(D)对应参数数据类型应相似,但个数和次序可以不考虑2.如a为int型,则与体现式a等价旳C语言关系体现式是()(A) a>0 (B) a!=0(C) a==0 (D) a<0 3.循环语句for(a=0,b=0;(b!=45)| |(a<5);a++);旳循环次数是()(A) 4 (B) 3 (C) 5(D) 无数多次4.设有字符数组a,则对旳旳输入语句是()。
(A) gets('a');(B) scanf("%c",a);(C) scanf("%s",a);(D) gets("a");5. enumcolor{red,green,yellow=5,white,black};定义了一枚举类型。
编译程序为值表中各标识符分派旳枚举值依次为()。
(A)1、2、3、4、5(B)0、1、5、2、3(C)0、1、5、6、7(D)3、4、5、6、76.运行完下列程序后,在屏幕上旳内容是()。
void main (){ int a=0;a+=(a=12);printf ("%d\n",a);}(A)0 (B)6(C)12 (D)24 7.若x,y为实数类型旳变量,要判断x,y相等,最佳使用下列关系体现式()。
(A)x==y(B)x-y==0(C) fabs(x-y)<1e-8(D)labs(x-y)<1e-88.若有如下旳定义、阐明和语句,则值为101旳体现式是()。
重庆计算机二级c语言试题及答案一、选择题(每题2分,共40分)1. 在C语言中,以下哪个选项是正确的?A. 变量名可以以数字开头B. 变量名可以包含空格C. 变量名区分大小写D. 变量名可以包含特殊字符答案:C2. C语言中,以下哪个关键字用于定义一个函数?A. intB. returnC. voidD. function答案:A3. 下列哪个选项是C语言中的合法整数常量?A. 0x1AB. 0X1AC. 0x1aD. 0X1a答案:D4. C语言中,以下哪个选项不是合法的字符串常量?A. "Hello, World!"B. 'Hello, World!'C. "Hello\" World!"D. "Hello\nWorld!"答案:B5. 在C语言中,以下哪个选项是正确的?A. 所有变量必须在使用前声明B. 所有变量必须在函数开始时声明C. 变量声明可以在任何地方D. 变量声明只能在函数内部答案:A6. C语言中,以下哪个选项是正确的?A. 浮点数不能用于整数运算B. 浮点数的精度总是比整数高C. 浮点数的表示范围比整数小D. 浮点数可以直接与整数进行运算答案:D7. 在C语言中,以下哪个选项是正确的?A. 所有函数都必须有返回值B. 函数可以没有参数C. 函数可以有多个返回值D. 函数可以有多个返回类型答案:B8. C语言中,以下哪个选项是正确的?A. 数组的下标总是从1开始B. 数组的下标总是从0开始C. 数组的大小在运行时确定D. 数组的大小在编译时确定答案:D9. 在C语言中,以下哪个选项是正确的?A. 指针可以存储任何类型的数据B. 指针可以存储函数的地址C. 指针可以存储数组的地址D. 所有选项都是正确的答案:D10. C语言中,以下哪个选项是正确的?A. 所有变量的声明必须在函数的开始B. 变量的声明可以在代码的任何位置C. 变量的声明必须在代码块的开始D. 变量的声明只能在函数的开始或代码块的开始答案:D二、填空题(每题2分,共20分)1. 在C语言中,______关键字用于声明一个变量。
Visual FoxPro数据库程序设计(考试时间90分钟,满分100分)一、选择题(每小题2分,共70分)下列各题A),B),C),D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)程序流程图中指有箭头的线段表示的是[C]A)图元关系 B)数据流 C)控制流 D)调用关系(2)结构化程序设计的基本原则不包括[A]A)多态性 B)自顶向下 C)模块化 D)逐步求精(3)软件设计中模块划分应遵循的准则是[B]A)低内聚低耦合 B)高内聚低耦合C)低内聚高耦合 D)高内聚高耦合(4)在软件开发中,需求分析阶段产生的主要文档是[B]A)可行性分析报告 B)软件需求规格说明书C)概要设计说明书 D)集成测试计划(5)算法的有穷性是指[A]A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的 D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是[D]A)快速排序 B)冒泡排序C)直接插入排序 D)堆排序(7)下列关于栈的叙述正确的是[B]A)栈按“先进先出”组织数据 B)栈按“先进后出”组织数据C)只能在栈底插入数据 D)不能删除数据(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于[C]A)需求分析阶段 B)概念设计阶段C)逻辑设计阶段 D)物理设计阶段(9)有三个关系R,S和T如下:B C Dh O k1R S TB C Da o k1b 1 n1B C Da o k1a 2 x1由关系R和S通过运算得到关系T,则应使用的运算为[D]A) 并 B) 自然连接 C)笛卡尔积 D)交(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课程号,课名),选课SC(学号,课号,成绩),列表SC的关键字(键或码)为[C]A)课号,成绩 B)学号,成绩C)学号,课号 D)学号,姓名,成绩(11)在Visual Foxpro中,扩张名为mnx的文件是[D]A) 备注文件 B)项目文件 C) 表单文件 D)菜单文件(12)有如下赋值语句:a=”计算机”,b=”微型”,结果为”微型机”的表达式是[D]A)b+LEFT(a,3) B)b+RIGHT(a,1)C)b+LEFT(a,5,2) D)b+RIGHT(a,2)(13)在Visual Foxpro中,有如下内存变量赋值语句:[B]X={^2001-07-28 10:15:20PM}Y=.F.M=5123.45N=$123.45Z=”123.24”执行上述赋值语句之后,内存变量X,Y,M,N和Z的数据类型分别是A) D、L、Y、N、C B)T、L、Y、N、CC) T、L、M、N、C D)T、L、Y、N、S(14)下列程序的运行结果是[D]SET EXACT ONs="ni"+space(2)IF s=="ni"IF s="ni"?"one"ELSE?"two"ENDIFELSEIF s="ni"?"three"ELSEENDIFENDIFRETURNA) one B) two C)three D)four(15)如果内存变量和字段变量均有变量名“姓名”,那么引用引用内存变量的正确方法是[D]A)M.姓名 B)M->姓名 C)姓名 D)A)和B)都可以(16)要为当前表所有性别为“女”的职工增加100元工资,应使用命令[B]A)REPLACE ALL 工资 WITH 工资+100B)REPLACE 工资 WITH 工资+100 FOR 性别=“女”C)CHANGE ALL 工资 WITH 工资+100D)CHANGE ALL 工资 WITH 工资+100 FOR 性别=“女”(17)MODIFY STRUCTURE命令的功能是[B]A)修改记录值 B)修改表结构C)修改数据库结构 D)修改数据库或表结构(18)可以运行查询文件的命令是[A]A)DO B)BROWSEC)DO QUERY D)CREATE QUERY(19)SQL语句中删除视图的命令是[B]A)DROP TABLE B)DROP VIEWC)ERASE TABLE D)ERASE VIEW(20)设有订单表order(其中包含字段:订单号,客户号,职员号,签订日期,金额),查询2007年所签订单的信息,并按金额降序排序,正确的SQL命令是[A]A) SELECT*FROM order WHERE YEAR(签订日期)=2007 ORDER BY 金额 DESCB) SELECT*FROM order WHILE YEAR(签订日期)=2007 ORDER BY 金额 ASCC) SELECT*FROM order WHERE YEAR(签订日期)=2007 ORDER BY 金额 ASCD) SELECT*FROM order WHILE YEAR(签订日期)=2007 ORDER BY 金额 DESC(21)设有订单表order(其中包含字段:订单号,客户号,职员号,签订日期,金额),删除2002年1月1日以前签订的订单记录,正确的SQL命令是[C]A) DELETE TABLE order WHERE 签订日期<{^2002-1-1}B) DELETE TABLE order WHILE 签订日期>{^2002-1-1}C) DELETE FROM order WHERE 签订日期<{^2002-1-1}D) DELETE FROM order WHILE 签订日期>{^2002-1-1}(22)下面属于表单方法名(非事件名)的是 [B]A) lnit B)Release C)Destroy D)Caption(23)下列表单的哪个属性设置为真时,表单运行时将自动居中[A]A) AutoCenter B) AlwaysOnTop C)ShowCenter D)FormCenter(24)下列关于命令DO FORM XX NAME YY LINKED 的叙述中,正确的是[C]A) 产生表单对象引用变量XX,在释放变量XX时自动关闭表单B) 产生表单对象引用变量XX,在释放变量XX时并不关闭表单C) 产生表单对象引用变量YY,在释放变量YY时自动关闭表单D) 产生表单对象引用变量YY,在释放变量YY时并不关闭表单(25)表单里有一个选项按钮组,包含两个选项按钮Option1和Option2,假设Option2没有设置Click事件代码,而Option1以及选项按钮组和表单都设置了Click事件代码。
2024年等级考试-计算机二级-Java语言程序设计考试历年真题常考点试题带答案(图片大小可任意调节)第1卷一.单选题(共20题)1.编译JavaApplet源程序文件产生的字节码文件的扩展名为()A.javaB.classC.htmlD.exe2.获取 InetAddress 对象的 IP 地址所用到的方法是A.etHostlPAddress()B.getHostlP()C.getHostAddress()D. getHost()3.下列叙述中正确的是哪一个( ) 。
A.在面向对象的程序设计中,各个对象之间具有密切的关系B.在面向对象的程序设计中,各个对象都是公用的C.在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小D.上述 3种说法都不对4.有整型数组: int[] x={12,35,8,7,2};, 则调用方法 Arrays.sort(x)后,数组 x 中的元素值依次是 ( ).A.2 7 8 12 35B.12 35 8 7 2C.35 12 8 7 2D.8 7 12 35 25.定义类头时能使用的修饰符是A. privateB.staticC.abstractD.protected6.开发软件时对提高开发人员工作效率至关重要的是 ( ) 。
A.操作系统的资源管理功能B.先进的软件开发工具和环境C.程序员的数量D.计算机的并行处理能力7.下列有关Java的叙述错误的是A.是—种强类型语言B.与平台无关C.可以使用汉字变量名D.不检查数组下标越界8.下述概念中不属于面向对象方法的是 () 。
A.对象、消息B.继承、多态C.类、封装D.过程调用9.设 int 型变量 a、b,float 型变量 x、y,char 型变量 ch 均已正确定义并赋值,正确的 switch 语句是A.switch (x + y) { ...... }B.switch ( ch + 1 ) { ...... }C. switch ch D) { ...... }D.switch ( a + b ) { ...... }10.关于包的描述错误的是A.包可以将相关的类和接口组织在一起,便于识别和管理B.包中的类可以访问同一包的其它类的私有成员C.不同包中的相同命名,不会产生冲突D.用修饰的顶级类和接口对包外代码可见11.在 Java 中, 表示换行符的转义字符是 () 。
第⼆届全国⼤学⽣算法设计与编程挑战赛(冬季赛)题解第⼆届全国⼤学⽣算法设计与编程挑战赛(冬季赛)只会做⽔题555 剩下的连题解也没看懂QAQ⽬录A 塔签到#include<iostream>using namespace std;int main(){char c1;int n=26; //设定塔的层数为26for(int i=1;i<=n;i++){ //对塔每⼀层按照规律进⾏构造。
//⾸先进⾏输出空格的操作:对于第i⾏,字符前⾯的空格个数为n-i个。
for(int j = 1;j<=n-i;j++)cout<<" ";for(int j=1;j<=i;j++){ //按照规律1,输出第1~第i个⼤写字母。
c1=j+'A'-1; //第j个⼤写字母为'A'+j-1cout<<c1; //输出第j个⼤写字母}for(int j=i-1;j>=1;j--){ //按照规律1,输出第i-1~第1个⼤写字母,注意是倒序c1=j+'A'-1;cout<<c1;}cout<<endl;//第i⾏输出结束,进⾏换⾏。
}return 0;}B ⽇记签到#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 5;typedef long long LL;string s;int main() {s = "ibti lbtlovebte lbtlibtinbtnkbtkebtezbas jebte dosadnbtna ""ovakbtkebtemibtijaxaszxdbtddbtddbtddbtddbtddbtd";string res;for (int i = 0; i < s.size(); i++) {res.push_back(s[i]);if (s[i] == 'l' || s[i] == 'i' || s[i] == 'n' || s[i] == 'k' ||s[i] == 'e') {i += 3;}}cout << res << endl;return 0;}C 哥布林待补...D 质数区间待补...E 神仙爱采药贪⼼即可,如果背包满了,那么遇到1就把2换掉,否则就⼀直往背包⾥放即可#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 5;typedef long long LL;#define int LLint v, num1, num2, res, now;string s;cin >> v;cin >> s;for (int i = 0; i < s.size(); i++) {if (s[i] == '1') {if (num1 + num2 * 2 < v) {num1++;now++;} else {if (num2) {num2--;num1++;}}} else {if (num1 + num2 * 2 + 2 <= v) {num2++;now++;}}res += now;}cout << res << endl;return 0;}F 但更爱字符串模拟...#include <bits/stdc++.h>using namespace std;typedef long long LL;int const MAXN = 2e5 + 10;int n, m, T;string s = "";string s0 = "";string t = "";string s1 = "";int main() {int len = 0;while (getline(cin, s0)) {int f = 0;int da = 0;int flag = 0;s0.push_back('\n');for (int i = 0; i < s0.size(); i++) {if ((s0[i] >= 'A' && s0[i] <= 'Z') ||(s0[i] >= 'a' && s0[i] <= 'z')) {s = s + s0[i];if (s0[i] >= 'A' && s0[i] <= 'Z') da++;continue;}if (s[0] >= 'a' && s[0] <= 'z' || da > 1 || s.size() <= 1) { if (len <= 1) {f = 1;cout << s1;if (len == 1) cout << " ";t = "";s1 = "";len = 0;} else {f = 1;cout << t;cout << " (" << s1 << ") ";t = "";s1 = "";len = 0;}cout << s;} else {if (s0[i] == ' ') {if (s0[i - 1] == ',' || s0[i - 1] == '.' ||s0[i - 1] == '!') {cout << " ";continue;}t = t + s[0];if (len >= 1) s1 += " ";s1 = s1 + s;len++;f = 0;} else {if (len < 1) {f = 1;cout << s1;if (len == 1) cout << " ";s1 = "";len = 0;cout << s;} else {f = 1;t = t + s[0];cout << t;if (s != "," || s != ".") s1 = s1 + " " + s;cout << " (";cout << s1;cout << ")";t = "";s1 = "";len = 0;}}}if (f) cout << s0[i];if (s0[i] >='a'&&s0[i] <='z'||s0[i] >='A'&&s0[i] <='Z')f = 1;s = "";da = 0;}}return 0;}贴个标程吧,感觉标程写的很清晰:#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<vector>using namespace std;vector <string> word;//存放单词和符号bool bigletter(char c){//判断是不是⼤写字母if(c>='A'&&c<='Z') return true;return false;}bool smallletter(char c){//判断是不是⼩写字母if (c>='a'&&c<='z') return true;return false;}bool bigletterword(string s){//判断是不是wordif (!bigletter(s[0])) return false;if (s.size()<=1) return false;for (int i=1;i<s.size();i++){if (!smallletter(s[i])) return false;}return true;}void work(){//处理每⼀个单词或符号int n=word.size();for (int i=0;i<n;i++){int inow=i;if (!bigletterword(word[i]))//如果不需要缩写则直接输出cout<<word[i];if (bigletterword(word[i])) {if (i!=n-1){//最后⼀位要么跟着前⾯的缩写,要么就是只有⼀个符合的所以不⽤缩写 if (word[i+1]==" "&&bigletterword(word[i+2])){int j;for (j=i;j<n;j++){if ((j-i)%2==0){if (!bigletterword(word[j])){j--;break;}else cout<<word[j][0];}else if (word[j]!=" ") break;}//j停在了最后符合要求的word的最后⼀位的后⾯⼀位cout<<" (";for (int k=i;k<j-1;k+=2)cout<<word[k]<<' ';cout<<word[j-1]<<')';inow=j-1;//i直接跳过缩写的部分}else cout<<word[i];}else cout<<word[i];}i=inow;}int main(){string s;while(getline(cin,s)){if (s.size()==0) break;//如果输⼊为空就停⽌string w="";//存放单词for (int i=0;i<s.size();i++){//循环sif (bigletter(s[i])||smallletter(s[i])) w+=s[i];//如果是字母则直接压到s⾥if (!bigletter(s[i])&&!smallletter(s[i])){//否则把单词压到word了,并把符号也压进去 word.push_back(w);w="";w+=s[i];word.push_back(w);w="";}}word.push_back(w);//把最后⼀个单词压进去work();word.clear();//清空wordcout<<endl;}return 0;//完美结束}G 猫腥草争夺⼤战状压DP,待补...H ⽆限⼭河印的故事倍增+字符串hash 待补...I 奇怪的传输机增加了模拟每⼀天的状态即可#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 5;typedef long long LL;double n, now;int x, y;const double eps = 1e-8;// 和0做⽐较int sgn(double x) {if (fabs(x) < eps) return 0; // =0if (x < 0)return -1; // < 0elsereturn 1; // > 0}int main() {cin >> n >> x >> y;now = n;for (int i = 1; i <= y; i++) {now = 2.0 * now / 3.0;if (i >= x) {now = min(n, now + (n / 2));x = 1e5;}if(sgn(now-n/32)<0){cout << "N0!" << endl;printf("%d %.6lf\n", i, now);return 0;}}cout << "YE5!" << endl;printf("%.6lf\n", now);return 0;}J 奇怪的⼩鸭⼦也增加了数学题#include<bits/stdc++.h>using namespace std;const int N = 1e6 + 5;typedef long long LL;int main(){cin >> A >> B >> a >> b;int x = (A - a) / a / 2 + 1;int y = (B - b) / b / 2 + 1;cout << x * y << endl;return 0;}K 关于哥俩好的数字这件事暴⼒枚举数位和#include <bits/stdc++.h>using namespace std;const int N = 1e6 + 5;typedef long long LL;#define int LLvector<int> res[N];int get(int x) {int res = 0;while (x) {res += x % 10;x /= 10;}return res;}signed main() {for (int i = 1; i <= 1e7; i++) {res[get(i)].push_back(i);}int n;cin >> n;if(n==1)cout << 1 << endl;else if (n <= 10) {LL ress = 0;for (int i = 0; i < n; i++) {ress += res[n - 1][i];}cout << ress << endl;} else if (n >= 11) {LL ress = 1e18;for (int j = 9; j <= 20;j++){LL tmp = 0;for (int i = 0; i < n; i++) tmp += res[j][i];ress = min(ress, tmp);}cout << ress << endl;}return 0;}L 我们仍未知道那窝蛋的名字待补...M 出题⼈说这道题是⼀个签到题签到#include <bits/stdc++.h>using namespace std;int n;signed main() {cin >> n;if (n == 1)cout << "ADPC";elsecout << "12345";return 0;}。
关于举办重庆邮电大学第二届“C-world”程序设计大赛的通知各学院学生科技协会:为发掘大学生潜力,提升我校学生对C语言程序设计的学习兴趣及应用能力,引导并鼓励广大学生积极投身科技创新与实践活动中。
从而浓厚校园科技氛围,推动校园科技文化的发展。
特定于2012年3月9至3月25日举办重庆邮电大学第二届“C-world”程序设计大赛。
一、大赛主题感受程序魅力,放飞IT梦想二、参赛对象重庆邮电大学全日制在校本科生及研究生三、举办单位主办单位:共青团重庆邮电大学委员会承办单位:重庆邮电大学学生科技联合会协办单位:重庆邮电大学通信与信息工程学院学生科协重庆邮电大学计算机科学与技术学院学生科协重庆邮电大学自动化学院学生科协重庆邮电大学经济管理学院学生科协重庆邮电大学软件学院学生科协四、参赛须知1.报名方式:在提交初赛答卷的同时附上报名表2.参赛形式:个人形式参加3.组别:大赛分为新手组和高手组,大一学生只能报名参加新手组比赛,其他年级参赛者只能报名参加高手组比赛4.编程语言:C语言五、赛程安排1.活动流程:培训——>网络初赛——>上机决赛2.比赛培训:2012年3月12日(星期一)16:00,2215教室3.初赛安排:新手组—>网上答题(3月9日10:00—3月16日19:00)现场编程(3月18日)高手组—>网上答题(3月9日10:00—3月16日19:00)4.参赛方式:登陆大学生科技创新网(/kjcx)下载专区下载初赛试题新手组网络初赛试题发送至:cworldxsz@高手组网络初赛试题发送至:cworldgsz@5.上机决赛时间:新手组:3月25日(星期日)13:00-15:00高手组:3月25日(星期日)15:30-17:30地点:信科机房S311具体详见附件:《重庆邮电大学第二届“C-world”程序设计大赛比赛规则》六、注意事项请参赛同学通过“大学生科技创新网”相关专栏、宣传海报及展板等及时关注赛事动态,了解比赛进程。
四、读程序写出运行结果(每小题5分,共20分)1.有一表单程序的运行界面如图2所示。
以下是其文本框控件的valid事件代码。
程序运行后,在文本框输入“45673”。
请写出程序运行结果(文本框的新值)。
X=val(Thisform.text1.value)Y=100Do while x>0y=y-x%10x=int(x/10)enddoThisform.text1.value=str(y)2.设有数据表ST.DBF的结构内容如下:记录号编号(C)性别(C)成绩(N)1 001 男 862 122 女 623 225 男 584 220 女 795 010 女 89设计如图3所示表单,将st.dbf添加到表单的数据环境中,表单运行后,单击命令按钮“Command1”,标签Label1将显示什么?“Command1”命令按钮的click事件代码:X=1cj=成绩SCANIF=成绩>cjcj=成绩x=RECNO()ENDIFENDSCANGO xThisform.refreshz=学号+space(2)+性别+space(2)+allt(str(成绩)) bel1.caption=z3.下面程序运行时输入5,请写出程序执行结果。
SET TALK OFFCLEARINPUT “请输入层数” TO NFOR K=1 TO N?? SPACE(N-K)FOR J=1 TO K?? “*”ENDFOR?ENDFOR4.以下程序的运行结果是什么?主程序main.prgCleaa=1b=2c=3do sub1 with a?a,b,cretu*sub1.prgParapriv ca=10b=20c=30?a,b,cdo sub2retu*sub2.prgpriv aa=2b=2*a?a,b,cretu五、程序设计题(每小题10分,共20分)1.编写一个程序计算:S=1+2+3+……+N,N的值由用户确定。
重庆计算机二级c语言试题及答案一、选择题1. 在C语言中,以下哪个是合法的变量名?A. 2VarB. var2C. var_2D. _var2答案:B、C、D2. 下面哪个是正确的C语言语句?A. int a, b = 10;B. int a = 10, b;C. int a = 10, b = a;D. int a, int b = 10;答案:A、B、C3. 关于C语言中的sizeof运算符,下面哪个说法是正确的?A. sizeof(char)的结果是1B. sizeof(int)的结果是4C. sizeof(float)的结果是8D. sizeof(double)的结果是2答案:A、B4. 下面哪个不是C语言中的关键字?A. mainB. ifC. forD. while答案:A5. 下面哪个是C语言中的保留字?A. printfB. scanfC. returnD. continue答案:C、D二、填空题1. 在C语言中,能够表示整数常量的数据类型是______。
答案:int2. 在C语言中,用于定义宏的关键字是______。
答案:#define3. 在C语言中,两个整数相除的结果是______。
答案:整数相除的结果会舍去小数部分,只保留整数部分。
4. 在C语言中,用于声明常量的关键字是______。
答案:const5. 在C语言中,用于定义结构体类型的关键字是______。
答案:struct三、编程题1. 编写一个C语言程序,计算并输出1到100之间所有奇数的和。
```c#include <stdio.h>int main() {int sum = 0;int i;for (i = 1; i <= 100; i += 2) {sum += i;}printf("1到100之间所有奇数的和为:%d\n", sum);return 0;}```2. 编写一个C语言程序,判断一个输入的整数是否为质数。
重庆工学院第二届大学生程序设计大赛说明一、竞赛规则1. 比赛时间共4小时。
试题以中文表述。
考察内容以程序设计、数据结构、算法分析为主,为ACM(美国计算机协会)竞赛的命题形式。
3. 参赛学生可以携带诸如书、手册、程序清单等纸质参考资料。
4. 参赛学生不能携带任何可用计算机处理的软件或数据(如存储设备、计算器或电子辞典等)。
5. 参赛学生不能携带任何类型的通讯工具,包括无线电接收器、移动电话。
6. 在竞赛中,不同小组参赛选手之间不能交谈。
系统支持人员可以回答和系统相关的问题,例如解释系统错误信息。
7.结果上传服务器地址为:ftp:10.0.101.99 ,权限为上传,下载,删除。
用户名:cxxj 密码:3076 二、解题(程序运行)正确的判定裁判系统运行结果分为以下7 种:1. 正确:程序得到了正确的结果。
2. 输出格式错:虽然程序的结果是正确的,但是输出结果的格式与题目要求的不符,一般是由于在某些位置多输出或少输出了空格或空行。
3. 答案错误:程序运行完毕,但没有输出正确的结果。
4. 运行时错误:在程序的执行过程中,出现了堆栈溢出、访问无效内存单元、数组越界、计算中除以零等导致异常结束的情况。
5. 超过时间限制:程序没有在限定时间内执行完。
6. 超过内存设置:程序所使用的内存空间超过了题目的限定。
7. 无法编译:程序有语法错误,没有通过编译,请仔细检查。
注意:只有评测结果为“正确”的题才算正确,其余结果均为错误。
三、成绩(排名)的确定获胜原则:1、解题正确的数量多;2、如果选手解题数量相同,则完成时间少(交卷早);3、如果选手解题数量相同,完成时间少也相同(差距3分钟内),以算法效率高、注释清楚为佳;4、其它情况由校评判小组老师集体决定。
试题编号:重庆邮电大学2011~2012学年2学期C语言程序设计试卷(期末)(A卷)(闭卷)注意:所有试题的答案必须写在答题纸上。
一、基础知识测试题(本大题共16小题,24+24学时的学生请完成第1-15题,32+16学时的学生请完成第2-16题。
每小题4分,共60分)1请写出输出结果。
printf("%d, %d, %d, %d \n", 5%3, -5%3, -5%-3, 5%-3);2读程序,回答问题:#include <stdio.h>#include <math.h>void main(){float a,b,c,s,area; //问题(1):sizeof(float)的值是多少?printf(" Please input a,b,c: ");scanf(“%f,%f,%f”,&a, &b, &c);s=1.0/2*(a+b+c); // 问题(2):将1.0改为1,s的值会发生变化吗?area= sqrt(s*(s-a)*(s-b)*(s-c));printf("area = %f\n", area);}3读程序,回答问题:#include <stdio.h>void main(){ char cl,c2;printf(“请输入一个字符:”);cl=getchar(); //问题(1):getchar()函数的功能是什么?if(c1>=’a’&&c1<=’z’)c2=cl-32;//问题(2):c1>=’a’&&c1<=’z’与’a’<=c1<=’z’是否等价?printf(″%c,%d\n″,c2,c2);}4请写出输出结果。
printf(“%d %c\n”, ‘5’-‘0’, ‘5’-5);5读程序,回答问题:#include <stdio.h>void main(){ char grade;printf(“请输入一个字符:”);grade=getchar();switch(grade){case ‘A’: printf(“85~100\n”); break;//问题(1):break的作用是什么?case ‘B’: printf (“70~84\n”); break;case ‘C’: printf (“60~69\n”); break;case ‘D’: printf (“<60\n”); break;d efault: printf(“error\n”); break;}}//问题(2):输入A,程序的输出结果是什么?输入a,输出结果又是什么?6读程序,回答问题:#include <stdio.h>void main(){ int i;for(i=1;i<=6;i++){ if(i%2){printf(“#”);continue;}//问题(1):continue的含义是什么?printf(“*”);}printf(“\n”);}//问题(2):程序的输出结果是什么?7读程序,回答问题:#include <stdio.h>void main()//问题(1):程序的输出结果是什么?{ int i, j , s ; //问题(2):将下边的s=0移至此行,程序的输出结果又是什么?for(i=1;i<3;i++){ s=0;for (j=i;j<6;j++)s+=j;}printf(“%d\n” ,s);}8读程序,回答问题:void inv(int x[ ],int n){ int temp,i,j,m=(n-1)/2;for(i=0, j=n-1-i; i<=m; i++,j--){ temp=x[i]; x[i]=x[j]; x[j]=temp; }//问题(1):循环体里的语句的含义是什么?}//问题(2):函数的功能是什么?9读程序,回答问题:#include <stdio.h>void Inc_x( ){ int x=0;printf(“ x=%d ”,++x);}void Inc_y( ){ static int y=0;//问题(1):static的含义是什么?printf(“ y=%d ”,++y);}void main(){Inc_x( );Inc_y( );Inc_x( );Inc_y( );}//问题(2):程序的输出结果是什么?10读程序,回答问题:#include <stdio.h>#include <math.h>double S(double x, int n){if(n= =1)return x;elsereturn S(x,n-1)+pow(x,n);}void main(){printf(“%f”, S(2,3)); }//问题(1):程序的输出结果是什么?//问题(2):S函数被调用了几回?11读程序,回答问题:void fun(char s[]) //问题(1):形参char s[]用来存储什么?{int n=0,i;for(i=0;s[i]!=’\0’;i++)if(s[i]>=’0’ && s[i]>=’9’)s[n++]=s[i];s[n]=‘\0’;//问题(2):该语句的含义是什么?}12假设有如下两个定义:char x[]=”abcdefg”;char y[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’};问题(1):两个数组所需要的内存字节数是否相同?问题(2):puts(x+2)和putchar(x[2])的输出结果分别是什么?13读程序,回答问题:#include <stdio.h>void main(){int x[]={1,2,3,4,5,6,7,8,9}; //问题(1):该语句的含义是什么?int s=0,i,*p=x;for(i=1;i<9;i+=2)s+=*(p+i);printf(“s=%d\n”,s); //问题(2):程序的输出结果是什么?}14读程序,回答问题:int *f(int *x,int *y) //问题(1):返回值是指针类型还是整数类型?{if(*x<*y) //问题(2):此行中,*的含义是什么?return x;elsereturn y;}15假设有定义:int m[3][3]={1,4,7,2,5,8,3,6,9};问题(1):m[1][2]的值是多少?问题(2):m[1]的含义是什么?16假设有定义如下:struct student{int number;char name[20];int score;};读下列程序,并回答问题。
重庆市第二届程序设计大赛1 数字的游戏输入文件名:gaspar.in 输出文件名:estdout.pc2问题描述:N个教徒和N个非教徒在深海上遇险,必须将一半的人投入海中,其余的人才能幸免于难,于是他们想了一个办法:2N个人围成一圈,从第一个人开始依次循环报数,每数到第9个人就将他扔进大海,如此循环直到只剩下N个人为止。
问怎样的站法,才能使得每次投入大海的都是非教徒。
输入:输入文件由一行构成,就是N的值输出:输出文件是一行字符串,字符串由N个'@'字符(代表教徒)和N个'+'字符(代表非教徒)排列组成。
该排列使得按照提述方法每次投入大海的都是非教徒。
输入样本:15输出样本:@@@@+++++@@+@@@+@++@@+++@++@@+2 翻译输入文件:trans.in 输出文件:estdout.pc2问题描述:小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章。
这个软件的原理很简单,他只是从头到尾,一次将每个单词用对应的中文含义来替换。
对于每个英文单词,软件会先在内存中查找这个单词的中文含义,如果内存中有,软件就会用它来翻译;如果内存中没有,软件就会在外存中的词典里查找,查出单词的中文含义然后翻译,并将这个单词和含义放入内存,以备后续查找和翻译。
假设内存中有M个单元,每个单元能存放一个单词和含义。
每当软件将一个新单词存入内存前,如果当前内存中已经存入的单词数不超过M,软件会将新单词存入下一个未使用的内存单元;若内存中已存入M个单词,软件会清空最早进入内存的那个单词,腾出单元来,存放新单词。
假设一篇英语文章长度为N个单词,给定这篇待译文章,翻译软件需要去外存查找多少次词典?假设在翻译开始前,内存中没有任何单词。
输入:多组数据,每组数据共2行。
每行中两个数之间用一个空格隔开。
第一行为两个正整数M和N(0<M<=100,0<N<=1000),代表内存容量和文章长度。
第二行为N个非负整数,按照文章的顺序,每个数(大小不超过1000)代表一个英文单词。
文章中两个单词是同一个单词,当且仅当它们对应的非负整数相同。
当M=N=0时输入数据结束。
输出:每组数据占一行,分别包含一个整数,为软件需要查词典的次数。
输入样本:3 71 2 1 5 4 4 12 108 824 11 78 11 78 11 78 8 2640 0输出样本:563 自然数的计算输入文件:natrual.in 输出文件:estdout.pc2问题描述:我们要求找出具有以下性质的数的个数(包含输入的自然数本身)先输入一个自然数n(n<=1000),然后对此自然数进行如下操作:1.不作任何操作2.在他左边加上一个自然数,但该自然数不能超过原数最高位数字的一半3.加上数之后,继续按此规则进行处理,直到不能再加自然数为止输入:第一行一个数t,表示有t组数据输入之后每组数据占一行,每行一个自然数n输出:每组数据占一行,一个数,表示满足条件的数的个数输入样本:16输出样本:64. 自动纠正拼写错误输入文件:auto.in 输出文件:estdout.pc2问题描述:某些文件编辑器提供纠正英文单词拼写错误的功能。
你们本次要解决的问题就是实现这样一个能够完成自动纠正拼写错误(ACM)功能的应用程序。
ACM能够纠正以下几类的单词拼写错误:1.漏写或多写1个字母,例如单词“letter”被写成了“leter”,或者是“letter”被写成了“lettter”。
2.写错了一个字母,例如“letter”被写成了“ketter”。
3.两个相邻的字母书写顺序弄错了,例如“letter”被写成了“lettre”。
ACM的纠错功能是基于一个已知单词集的字典来进行的。
每当一个文档中含有字典中不存在的单词时,ACM就会试图用字典中与该单词最相似的单词替代它。
ACM对单词是相似的有这样的定义:只要两个单词能够按照上面叙述的3类拼写错误规则中的任何一种进行相互转换,就认为这两个单词是相似的。
如果在字典中没有发现相似的单词,就在原文本中保留这个未知的单词。
输入:在输入文件的第1行里将给出字典中已知的单词数量:整数n,其中0<=n<=1000。
在紧接着的n行里包含有字典中的n个单词。
在这n行后的第1行里将给出1个正整数q,其中0<=q<=1000,它表示需要查询单词的数量。
在这之后的q行里包含有q个需要查询的单词。
你可以假设在输入文件中每一个单词只能由26个小写字母('a'~'z')构成。
输出:针对每一个需要查询的单词,输出一行字符串。
要求:该字符串以需要查询的单词开始,并从下面3个黑体描述中选择一个合适的字串添加在后。
1.如果需要查询的单词在字典中就添加字串“is correct”2.如果需要查询的单词不在字典中,则添加字串“is a misspelling of <x>”,其中<x> 是指字典与需要查询的单词相似的单词。
若x有多个,则选择在字典中出现最早的那个单词输出。
3.如果前面两种情况都不满足,则添加字串“is unknown”。
输入样本:10thisisadictionarythatwewilluseforus6suasthedictionaryuswilll输出样本:su is a misspelling of usas is a misspelling of isthe is unknowndictonary is a misspelling of dictionary us is correctwilll is a misspelling of will5. 轰炸输入文件:bomb.in 输出文件:estdout.pc2问题描述:“我该怎么办?”飞行员klux向你求助。
事实上,klux面对的是一个很简单的问题,但是他实在是太菜了。
Klux要想轰炸某个区域内的一些地方,它们是位于平面上的一些点,但是klux遇到了抵抗,所以他只能飞一次,而且由于飞机比较破,一旦起飞就只能沿直线飞行,无法转弯。
现在他想一次轰炸最多的地方。
输入:输入由若干组数据构成,每组数据的第一行是整数n,然后是n行整数对组成(1<n<700),每对整数表示一个点的坐标,且没有一个点会出现两次。
当n为0时表示输入结束。
输出:针对没组数据输出一个数,它表示一条直线能覆盖的最多的点数输入样本:51 12 23 39 1010 11输出样本:36. 国家利益输入文件:country.in 输出文件:estdout.in问题描述:没有永远的朋友,也没有永远的敌人,国家的行为取决于国家利益,国家的地位取决于国家实力。
伊拉克战争结束后N个国家正在联合国开会商讨如何分配伊拉克的M块油田。
N个国家按国家实力编号1,2,3...N,1号国家实力最强,第一个发言,N 号最后一个发言;依次类推发言国家会提出一个分配方案,所有有表决权的国家进行表决(包括发言国家自己);如果50%或以上同意此方案,则会议结束,按照此国的方案分配油田,否则该国丧失表决权,下个国家重复上述过程。
那么第一个国家提出怎样的方案才能使本国利益最大化?提示:每个国家分得的油田都是整数,不会出现几个国家共同拥有一块油田。
每个国家都不希望别人的方案通过,但是每个国家都按照本国利益投票,比如1号国家提出一个方案,X号国家分Y油田,X号国家会进行比较,如果该方案被否决,那么下次2号提出的方案X号国家分Z油田,而Z < Y,那么X号国家会赞成1号的方案,否则反对。
输入:输入文件有由若干行构成,每行包括一组数据由2个整数N,M构成,(N,M <= 10^8),输入文件的最后一行是‘#’表示文件结束。
输出:按照输入文件的顺序对于每组输入数据输出一行,每行包括1个整数,1号国家能获得的最多油田数。
输入样本:7 1006 100#输出样本:97987. 拱猪计分输入文件:pig.in 输出文件:estdout.pc2问题描述:拱猪是一种有趣的扑克牌游戏。
即使你不知道他的玩法,你也可以由他的计分方式来了解他的趣味性。
假设在此我们仅考虑四个人的拱猪牌局,本题要求你根据下面的积分规则,在牌局结束时计算四位玩家所得分数。
1.我们分别以S、H、D及C来代表黑桃,红心,方块及梅花,并以数字1至13来代表A、2、...、Q、K等牌点,例如:H1为红心A,S13为黑桃K。
2.牌局结束时,由各玩家持有的有关计分的牌(计分牌)计算得分。
计分牌仅有S12(猪),所有红心牌,D11(羊)及C10(加倍)等16张牌。
其他牌均弃之不计。
若未持有这16张牌之中的任意一张,则以得零分计。
3.若持有C10的玩家只有该张牌而没有其他牌则得+50分,若除了C10还有其他计分牌,则将其他计分牌所得分数加倍计算。
4.若红心牌不在同一家,则H1至H13等13张牌均以负分计,其数值为-50,-2,-3,-4,-5,-6,-7,-8,-9,-10,-20,-30,-40.而且S12和D11分别以-100和+100分计算。
5.若红心牌H1至H13均在同一家,有下列情形:a)所有红心牌以+200分计算b)若S12、D11均在吃下所有红心牌的这一家,则此玩家得+500分c)而C10还是以前面的原则计算分数例一:若玩家持有计分牌如下:(每列代表一玩家所持有之牌)S12 H3 H5 H13D11 H8 H9C10 H1 H2 H4 H6 H7H10 H11 H12则各玩家得分依次序为:-148,+83,-138及-60。
例二:若各玩家持有计分牌如下(第四个玩家未持有任何计分牌)H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H13S12 C10D11则各玩家得分依次序为:+200,-200,+100及0。
例三:若有一玩家持有所有16张计分牌,则得分+1000分,其余玩家均得零分。
输入:每个输入文件有多组数据组成,每组测试数据有四行,每一行第一个数为该玩家所持有计分牌的总数,而后列出其所持有的所有计分牌,牌数与各计分牌均以一个以上的空格分开。
相邻两组测试数据之间不会有空白行,读到四家持牌数都为零表示文件结束。
输出:每一行输出一组测试数据对应的结果,一次输出各玩家所得分数,共四个整数(含正负号,0除外),相邻两个整数之间用一个空格隔开,符号和数字之间不可以有空格。
每组输出之间不需要空白行。
输入样本:4 S12 H3 H5 H133 D11 H8 H96 C10 H1 H2 H4 H6 H73 H10 H11 H1213 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12 H132 S12 C101 D11输出样本:-148 +83 -138 -60+200 -200 +100 08. 定向越野输入文件:cross.in 输出文件:estdout.pc2问题描述:XX大学城离市中心比较远,因此占地面积巨大,因而XX市团委准备充分利用资源,在大学城举办定向越野比赛,但规则与普通定向越野不同,每个队被要求从某个起点出发最后到达终点,只要是地图上每个标注的点都可以走,经过一个点时必须在打卡器上打卡做记录,记录该点的打卡器所在位置的海拔高度,高度用一个非负整数来度量,该书将会被保存在卡中。