C语言比赛样题

合集下载

C语言大赛题目

C语言大赛题目

C语言大赛题目第一道题回文时间限制:1000MS内存限制:65536KB题目简介“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。

请写一个程序判断读入的字符串是否是“回文”。

标准输入输入包含多个测试实例,输入数据的第一行是一个正整数n,表示测试实例的个数,后面紧跟着是n个字符串。

标准输出如果一个字符串是回文串,则输出"yes",否则输出"no".范例输入4levelabcdenoonhaha范例输出yesnoyesno第二道题阶乘的精确值时间限制:1000MS内存限制:65000KB题目简介输入不超过1000的正整数n,输出n!=1×2×3×……×n的精确结果。

标准输入标准输出范例输入30范例输出265252859812191058636308480000000第三道题6174问题时间限制:1000MS内存限制:65000KB题目简介假设你有一个各位数字互不相同的四位数,把所有数字从大到小排序后得到a,从小到大排序后得到b,然后用a-b替换原来这个数,并继续操作。

例如,从1234出发,一次可以得到4321-1234=3087,8730-378=8352,,8352-2358-6174。

有趣的是,7641-1467=6174,回到了他自己。

输入一个n位数,输出操作数列,直到出现循环(即新得到的数曾经得到过)。

输入保证在循环之前最多只会产生1000个整数。

标准输入输入一个四位数的整数。

标准输出输出操作数列,每两个数字间用“->”隔开,“->”与数字间有个空格,最后一个数字输出时后面不能带有空格。

范例输入12348913范例输出1234 -> 3087 -> 8352 -> 6174 -> 61748913 -> 8442 -> 5994 -> 5355 -> 1998 -> 8082 -> 8532 -> 6174 -> 6174 第四道题Text Reverse时间限制:1000MS内存限制:65000KB题目简介KMY写单词的时候喜欢反过来写。

C语言竞赛练习题40题(答案)

C语言竞赛练习题40题(答案)

C语言竞赛练习题11.求最大数问555555的约数中最大的三位数是多少?*问题分析与算法设计根据约数的定义,对于一个整数N,除去1和它自身外,凡能整除N的数即为N的约数。

因此,最简单的方法是用2到N-1之间的所有数去除N,即可求出N的全部约数。

本题只要求取约数中最大的三位数,则其取值范围可限制在100到999之间。

*程序说明与注释#include<stdio.h>void main(){long i;int j;printf("Please input number:");scanf("%ld",&i);for(j=999;j>=100;j--)if(i%j==0){printf("The max factor with 3 digits in %ld is:%d,\\n",i,j);break;}}*运行结果输入:555555输出:The max factor with 3 digits in 555555 is:7772.高次方数的尾数求13的13次方的最后三位数*问题分析与算法设计解本题最直接的方法是:将13累乘13次方截取最后三位即可。

但是由于计算机所能表示的整数范围有限,用这种“正确”的算法不可能得到正确的结果。

事实上,题目仅要求最后三位的值,完全没有必要求13的13次方的完整结果。

研究乘法的规律发现:乘积的最后三位的值只与乘数和被乘数的后三位有关,与乘数和被乘数的高位无关。

利用这一规律,可以大大简化程序。

*程序说明与注释#include<stdio.h>void main(){int i,x,y,last=1; /*变量last保存求X的Y次方过程中的部分乘积的后三位*/printf("Input X and Y(X**Y):");scanf("%d**%d",&x,&y);for(i=1;i<=y;i++) /*X自乘Y次*/last=last*x%1000; /*将last乘X后对1000取模,即求积的后三位*/ printf("The last 3 digits of %d**%d is:%d\\n",x,y,last%1000); /*打印结果*/}*运行结果Input X and Y(X**Y):13**13The last 3 digits of 13**13 is:253Input X and Y(X**Y):13**20The last 3 digits of 13**20 is:8013.借书方案知多少小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?*问题分析与算法设计本问题实际上是一个排列问题,即求从5个中取3个进行排列的方法的总数。

C语言程序设计大赛题目和答案

C语言程序设计大赛题目和答案

C语言程序设计大赛题目和答案在这篇文章中,我们将介绍一些C语言程序设计大赛的题目和对应的答案。

希望通过这些题目和答案的展示,能够对大家在C语言程序设计方面的知识有所帮助。

题目一:计算圆的周长和面积编写一个C程序,计算给定半径的圆的周长和面积,并输出结果。

```c#include <stdio.h>int main() {double radius, perimeter, area;printf("请输入圆的半径:");scanf("%lf", &radius);perimeter = 2 * 3.14159 * radius;area = 3.14159 * radius * radius;printf("圆的周长为:%.2lf\n", perimeter);printf("圆的面积为:%.2lf\n", area);return 0;}```题目二:查找数组中的最大值编写一个C程序,从给定的整型数组中查找并输出最大的元素。

```c#include <stdio.h>#define MAX_SIZE 100int main() {int array[MAX_SIZE], size, i;int max;printf("请输入数组的大小:");scanf("%d", &size);printf("请输入数组的元素:");for(i = 0; i < size; i++) {scanf("%d", &array[i]);}max = array[0];for(i = 1; i < size; i++) {if(array[i] > max) {max = array[i];}printf("数组中的最大值为:%d\n", max);return 0;}```题目三:判断素数编写一个C程序,判断给定的整数是否为素数。

初中c语言竞赛编程试题及答案

初中c语言竞赛编程试题及答案

初中c语言竞赛编程试题及答案# 初中C语言竞赛编程试题及答案一、选择题(每题2分,共10分)1. 下列哪个关键字用于定义C语言中的结构体()- A. `int`- B. `struct`- C. `float`- D. `char`答案:B2. C语言中,哪个函数用于计算并返回字符串的长度?() - A. `strlen()`- B. `strcpy()`- C. `strcat()`- D. `strrev()`答案:A3. 如果`int a = 10;`,那么表达式`a++`的值是()- A. 9- B. 10- C. 11- D. 8答案:B4. C语言中,用于执行条件判断的关键字是()- A. `if`- B. `for`- C. `while`- D. `switch`答案:A5. 下列哪个不是C语言的标准输入输出库函数?()- A. `printf()`- B. `scanf()`- C. `getchar()`- D. `puts()`答案:C二、填空题(每空3分,共15分)1. 在C语言中,用于定义一个函数的关键字是______。

答案:void2. 当需要频繁修改数组中的元素时,应使用______数组,因为它可以在运行时改变大小。

答案:动态3. C语言中,`printf`函数中的转义字符`\n`代表______。

答案:换行4. 一个C语言程序的执行从______函数开始。

答案:main5. 在C语言中,用于计算两个整数的乘积的运算符是______。

答案:\*三、简答题(每题10分,共20分)1. 请简述C语言中指针的概念及其用途。

答案:指针是C语言中的一种变量类型,它存储的是另一个变量的内存地址。

指针的主要用途包括动态内存分配、数组操作、函数参数传递等,它们使得程序更加灵活和高效。

2. 解释C语言中数组和指针之间的关系。

答案:在C语言中,数组名可以作为指针使用,它指向数组的第一个元素的地址。

C语言程序设计竞赛题及其答案

C语言程序设计竞赛题及其答案

scanf("%d",&K); for(i=0;i<K;i++) scanf("%d",&a[i]); if(M<1||M>2000||K<1||K>10) { printf("Impossible"); exit(0); } for(i=0;i<K;i++) if(M%a[i]==0) }
printf("钻石个数:%d",count); } 四、连续正整数(20 分) 一个正整数有可能可以被表示为 n(n>=2) 个连续正整数之和,如: 15=1+2+3+4+5 15=4+5+6 15=7+8 请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。 输入数据:一个正整数,以命令行参数的形式提供给程序。 输出数据:在标准输出上打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该 序列的最小正整数开始、以从小到大的顺序打印。如果结果有多个序列,按各序列的最小正整数的 大小从小到大打印各序列。此外,序列不允许重复,序列内的整数用一个空格分隔。如果没有符合 要求的序列,输出 “NONE” 。 例如,对于 15,其输出结果是: 1 2 3 4 5 4 5 6 7 8 对于 16,其输出结果是: NONE #include<stdio.h> void main() { int i,j,h,k,n; n=1;k=0; scanf("%d",i); for(j=1;j<=i/2+1;j++) { k=k+j; if(k==i) {for(h=n;h<=i/2+1;h++) printf("%d "h); printf("\n");n++;} j++; } }

c语言奥赛高中组试题及答案

c语言奥赛高中组试题及答案

c语言奥赛高中组试题及答案1. 题目一:字符串反转要求:编写一个C语言函数,实现字符串的反转。

```cvoid reverseString(char *str) {int length = 0;while (str[length] != '\0') {length++;}for (int i = 0; i < length / 2; i++) {char temp = str[i];str[i] = str[length - i - 1];str[length - i - 1] = temp;}}```答案:函数`reverseString`接受一个字符数组`str`作为参数,首先计算字符串的长度,然后使用一个循环交换字符串的首尾字符,直到中间位置。

2. 题目二:计算数组中的最大值要求:给定一个整数数组,编写一个C语言函数,找出并返回数组中的最大值。

```cint findMax(int arr[], int size) {int max = arr[0];for (int i = 1; i < size; i++) {if (arr[i] > max) {max = arr[i];}}return max;}```答案:函数`findMax`接受一个整数数组`arr`和数组的大小`size`作为参数,初始化最大值为数组的第一个元素,然后遍历数组,比较并更新最大值。

3. 题目三:判断回文数要求:编写一个C语言函数,判断一个整数是否是回文数。

```cint isPalindrome(int x) {int original = x;int reversed = 0;while (x > 0) {int digit = x % 10;reversed = reversed * 10 + digit;x /= 10;}return original == reversed;}```答案:函数`isPalindrome`接受一个整数`x`作为参数,通过反转整数的每一位来创建一个新的整数`reversed`,然后比较原始整数和反转后的整数是否相等。

C语言大赛模拟试题

C语言大赛模拟试题

第四届全国ITAT教育工程就业技能大赛模拟试题(比赛科目:C语言程序设计)该试卷只用于测试考试环境,非预赛模拟题,仅供参考。

一、单选题(15题每题1分共15分)1.一个c程序的执行是从_____。

(知识点:1.3)A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束2.下列字符串为标识符的是_____。

(知识点:3.2)A)_1_A B)5_student C)long D)!DF3.下面字符常量正确的是_____。

(知识点:3.5)A)“c”B)‘\\''C)‘n’D)‘ab’4.已知各变量的类型说明如下:int k,a,b;unsigned w=5;double x=1.42;则以下不符合c语言语法的表达式是______。

(知识点:3.9)A)x%(-3)B)w+=-2C)k=(a=2,b=3)D)a+=a-=a=35.若以下变量均是整型,且num=sum=7;则执行表达式sum=num++,sum++,++num后sum 的值为____。

(知识点:3.8)A)7B)8C)9D)106.printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。

如果字符串长度大于5,则输出方式为____。

(知识点:4.4)A)从左起输出该字串,右补空格B)按原字符长从左向右全部输出C)右对齐输出该字串,左补空格D)输出错误信息7.有一函数关系见下表:x yx<0x-1x=0xx>0x+1下面程序段中能正确表示上面关系的是_____。

(知识点:5.3)A)y=x+1;B)y=x-1;if(x>=0)if(x!=0)if(x==0)y=x;if(x>0)y=x+1;else y=x-1;else y=x;C)if(x<=0)D)y=x;if(x<0)y=x-1;if(x<=0)else y=x;if(x<0)y=x-1;else y=x+1;else y=x+1;8.若运行时给变量x输入12,则以下程序的运行结果是_____。

C语言竞赛题30题

C语言竞赛题30题

41.哪个大夫哪天值班医院有A、B、C、D、E、F、G七位大夫,在一星期内(星期一至星期天)每人要轮流值班一天。

现在已知:A大夫比C大夫晚一天值班;D大夫比E大夫晚二天值班;B大夫比G大夫早三天值班;F大夫的值班日在B和C大夫的中间,且是星期四;请确定每天究竟是哪位大夫值班?*问题分析与算法设计由题目可推出如下已知条件:*F是星期四值班;*B值班的日期在星期一至星期三,且三天后是G值班;*C值班的日期在星期五至星期六,且一天后是A值班;*E两天后是D值班;E值班的日期只能在星期一至星期三;在编程时用数组元素的下标1到7表示星期一到星期天,用数组元素的值分别表示A~F 七位大夫。

-------------------------------------------------------42.区分旅客国籍在一个旅馆中住着六个不同国籍的人,他们分别来自美国、德国、英国、法国、俄罗斯和意大利。

他们的名字叫A、B、C、D、E和F。

名字的顺序与上面的国籍不一定是相互对应的。

现在已知:1)A和美国人是医生。

2)E和俄罗斯人是技师。

3)C和德国人是教师。

4)B和F曾经当过兵,而德国人从未参过军。

5)法国人比A年龄大;意大利人比C年龄大。

6)B同美国人下周要去西安旅行,而C同法国人下周要去杭州度假。

试问由上述已知条件,A、B、C、D、E和F各是哪国人?*问题分析与算法设计首先进行题目分析,尽可能利用已知条件,确定谁不是哪国人。

由:1) 2) 3)可知:A不是美国人,E不是俄罗斯人,C不是德国人。

另外因为A与德国人的职业不同,E与美、德人的职业不同,C与美、俄人的职业不同,故A不是俄罗斯人或德国人,E不是美国人或德国人,C不是美国人或俄罗斯人。

由4)和5)可知B和F不是德国人,A不是法国人,C不是意大利人。

由6)可知B不是美国人,也不是法国人(因B与法国人下周的旅行地点不同);C不是法国人。

将以上结果汇总可以得到下列条件矩阵:. 美(医生) 英法德(技师) 意大利俄(教师)A(医生) X . X X . XB X . X X . .C(技师) X . X X X XD . . . . . .E(教师) X . . X . XF . . . X . .43.谁家孩子跑最慢张王李三家各有三个小孩。

C语言技能大赛练习题3

C语言技能大赛练习题3

测试三一、下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。

1)表达式3.6-5/2+1.2+5%2的值是A)4.3 B) 4.8 C) 3.3 D) 3.82)在以下给出的表达式中,与while(E)中的(E)不等价的表达式是A)(!E=0)B) (E>0||E<0) C) (E==0) D) (E!=0)3)设有以下语句int a=1,b=2,c;c=a^(b<<2);执行后,c的值为A)6 B) 7 C) 8 D) 94)若有以下程序main(){int y=10;while(y- -);printf(“y=%d\n”y);}程序运行后的输出结果是A)y=0 B)y=-1 C) y=1 D)while构成无限循环5)有以下程序main(){int a=0,b=0,c=0,d=0;if(a=1) b=1;c=2;else d=3;printf(“%d,%d,%d,%d\n”,a,b,c,d);}程序输出A)0,1,2,0 B) 0,0,0,3 C)1,1,2,0 D)编译有错6)有以下程序main(){int i,j,x=0;for(i=0;i<2;i++){ x++;for(j=0;j<=3;j++){if(j%2) continue;x++;}x++;}printf(“x=%d\n”,x);}程序执行后的输出结果是A)x=4 B) x=8 C) x=6 D) x=127)以下叙述中错误的是A)C语言源程序经编译后生成后缀为.obj的目标程序B)C语言经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D)C语言的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令8)以下叙述中错误的是A)C程序必须由一个或一个以上的函数组成B)函数调用可以作为一个独立的语句存在C)若函数有返回值,必须通过return语句返回D)函数形参的值也可以传回对应的实参9)下列叙述中正确的是()。

C语言竞赛练习题40题

C语言竞赛练习题40题

C语言竞赛练习题1.求最大数问555555的约数中最大的三位数是多少?2.高次方数的尾数求13的13次方的最后三位数。

3.借书方案知多少小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?4.数制转换将任一整数转换为二进制形式。

5.打鱼还是晒网中国有句俗语叫“三天打鱼两天晒网”。

某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。

6.抓交通肇事犯一辆卡车违反交通规则,撞人后逃跑。

现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。

甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。

请根据以上线索求出车号。

7.该存多少钱假设银行一年整存零取的月息为0.63%。

现在某人手中有一笔钱,他打算在今后的五年中的年底取出1000元,到第五年时刚好取完,请算出他存钱时应存入多少。

8.怎样存钱利最大假设银行整存整取存款不同期限的月息利率分别为:0.63%期限=1年0.66%期限=2年0.69%期限=3年0.75%期限=5年0.84%期限=8年利息=本金*月息利率*12*存款年限。

现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。

9.捕鱼和分鱼A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。

日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。

B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。

C、D、E依次醒来,也按同样的方法拿走鱼。

问他们合伙至少捕了多少条鱼?10.出售金鱼买卖提将养的一缸金鱼分五次出售系统上一次卖出全部的一半加二分之一条;第二次卖出余下的三分之一加三分之一条;第三次卖出余下的四分之一加四分之一条;第四次卖出余下的五分之一加五分之一条;最后卖出余下的11条。

C语言大赛题目精选(带答案)

C语言大赛题目精选(带答案)
牌照的前两位数字是相同的;乙说:
牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:
四位的车号刚好是一个整数的平方。请根据以上线索求出车号。
*问题分析与算法设计
按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。
*程序与程序注释
#include<stdio.h>
for(i3=0;i3<=(20-8*i8-5*i5)/3;i3++)
for(i2=0;i2<=(20-8*i8-5*i5-3*i3)/2;i2++){i1=20-8*i8-5*i5-3*i3-2*i2;
term=
2000."0*pow((double)(1+
0."0063*12),(double)i1)
/*计算到期时的本利合计*/
if(term>max){max=term;n1=i1;n2=i2;n3=i3;n5=i5;n8=i8;}}
printf("For maxinumprofit,he should so save his money in a bank:
\\n");printf("made fixed deposit for 8 year:
甲说:
”乙没有偷,是丁偷的。”B+D=1
乙说:
“我没有偷,是丙偷有。”B+C=1
丙说:
“甲没有偷,是乙偷的。”A+B=1
丁说:
“我没有偷。”A+B+C+D=1
其中丁只说了一句话,无法判定其真假,表达式反映了四人中仅有一名是窃贱的条件。

NOIP2022(第二十届)初赛普及组C语言试题及答案

NOIP2022(第二十届)初赛普及组C语言试题及答案

NOIP2022(第二十届)初赛普及组C语言试题及答案第二十届全国青少年信息学奥林匹克联赛初赛普及组C语言试题竞赛时间:2022年10月12日14:30~16:30选手注意:l试题纸共有8页,答题纸共有2页,满分100分。

请在答题纸上作答,写在试题纸上的一律无效。

一、单项选择题(共20题,每题1.5分,共计30分;每题有且仅有一个正确选项)1.以下哪个是面向对象的高级语言()。

A.汇编语言B.C++C.FortranD.Baic2.1TB代表的字节数量是()。

A.2的10次方B.2的20次方C.2的30次方D.2的40次方3.二进制数00100100和00010101的和是()。

A.00101000B.001010100C.01000101D.001110014.以下哪一种设备属于输出设备()。

A.扫描仪B.键盘C.鼠标D.打印机5.下列对操作系统功能的描述最为完整的是()。

A.负责外设与主机之间的信息交换B.负责诊断机器的故障C.控制和管理计算机系统的各种硬件和软件资源的使用D.将源程序编译成目标程序6.CPU、存储器、I/O设备是通过()连接起来的。

A.接口B.总线C.控制线D.系统文件7.断电后会丢失数据的存储器是()。

A.RAMB.ROMC.硬盘D.光盘8.以下哪一种是属于电子邮件收发的协议()。

A.SMTPB.UDPC.P2PD.FTP9.下列选项中不属于图像格式的是()。

A.JPEG格式B.T某T格式C.GIF格式D.PNG格式10.链表不具有的特点是()。

A.不必事先估计存储空间B.可随机访问任一元素C.插入删除不需要移动元素D.所需空间与线性表长度成正比11.下列各无符号十进制整数中,能用八位二进制表示的数中最大的是()。

A.296B.133C.256D.19912.下列几个32位IP地址中,书写错误的是()。

A.162.105.128.27B.192.168.0.1C.256.256.129.1D.10.0.0.113.要求以下程序的功能是计算:=1+1/2+1/3+...+1/10。

C语言程序设计大赛题目

C语言程序设计大赛题目

C语言程序设计大赛题目C语言程序设计大赛题目Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-199981.角谷猜想日本一位中学生发现一个奇妙的“定理”,请角谷教授证明,而教授无能为力,于是产生角谷猜想。

猜想的内容是:任给一个自然数,若为偶数除以2,若为奇数则乘3加1,得到一个新的自然数后按照上面的法则继续演算,若干次后得到的结果必然为1。

请编程验证。

*问题分析与算法设计本题是一个沿未获得一般证明的猜想,但屡试不爽,可以用程序验证。

题目中给出的处理过程很清楚,算法不需特殊设计,可按照题目的叙述直接进行证。

*程序说明与注释#include<>intmain(){intn,count=0;printf("Pleaseenternumber:");scanf("%d",&n);/*输入任一整数*/do{if(n%2){n=n*3+1;/*若为奇数,n乘3加1*/printf("[%d]:%d*3+1=%d\n",++count,(n-1)/3,n);}elsen/=2;/*若为偶数n除以2*/printf("[%d]:%d/2=%d\n",++count,2*n,n);}}while(n!=1);/*n不等于1则继续以上过程*/}2.四方定理数论中着名的“四方定理”讲的是:所有自然数至多只要用四个数的平方和就可以表示。

请编程证此定理。

*问题分析与算法设计本题是一个定理,我们不去证明它而是编程序验证。

对四个变量采用试探的方法进行计算,满足要求时输出计算结果。

#include<>#include<>intmain(){intnumber,i,j,k,l;printf("Pleaseenteranumber=");scanf("%d",&number);/*输入整数*/for(i=1;i<="" p="">for(j=0;j<=i;j++)for(k=0;k<=j;k++)for(l=0;l<=k;l++)if(number==i*i+j*j+k*k+l*l)/*若满足定理要求则输出结果*/{printf("%d=%d*%d+%d*%d+%d*%d+%d*%d\n",number,i,i, j,j,k, k,l,l);exit(0);}3.验证尼科彻斯定理,即:任何一个整数的立方都可以写成一串连续奇数的和#include<>intmain(){inta,b,c,d;printf("Pleaseenteranumber:");scanf("%d",&a);/*输入整数*/b=a*a*a;/*求整数的三次方*/printf("%d*%d*%d=%d=",a,a,a,b);for(d=0,c=0;c<="">d+=a*a-a+1+c*2;/*求数列的前a项的和*/printf(c"+%d":"%d",a*a-a+1+c*2);}if(d==b)printf("Y\n");/*若条件满足则输出“Y”*/elseprintf("N\n");/*否则输出“N”*/}4.自动发牌一副扑克有52张牌,打桥牌时应将牌分给四个人。

C语言竞赛练习题40题

C语言竞赛练习题40题

C语言竞赛练习题1.求最大数问555555的约数中最大的三位数是多少?2.高次方数的尾数求13的13次方的最后三位数。

3.借书方案知多少小明有五本新书,要借给A,B,C三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?4.数制转换将任一整数转换为二进制形式。

5.打鱼还是晒网中国有句俗语叫“三天打鱼两天晒网”。

某人从1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。

6.抓交通肇事犯一辆卡车违反交通规则,撞人后逃跑。

现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。

甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。

请根据以上线索求出车号。

7.该存多少钱假设银行一年整存零取的月息为0.63%。

现在某人手中有一笔钱,他打算在今后的五年中的年底取出1000元,到第五年时刚好取完,请算出他存钱时应存入多少。

8.怎样存钱利最大假设银行整存整取存款不同期限的月息利率分别为:0.63%期限=1年0.66%期限=2年0.69%期限=3年0.75%期限=5年0.84%期限=8年利息=本金*月息利率*12*存款年限。

现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。

9.捕鱼和分鱼A、B、C、D、E五个人在某天夜里合伙去捕鱼,到第二天凌晨时都疲惫不堪,于是各自找地方睡觉。

日上三杆,A第一个醒来,他将鱼分为五份,把多余的一条鱼扔掉,拿走自己的一份。

B第二个醒来,也将鱼分为五份,把多余的一条鱼扔掉,保持走自己的一份。

C、D、E依次醒来,也按同样的方法拿走鱼。

问他们合伙至少捕了多少条鱼?10.出售金鱼买卖提将养的一缸金鱼分五次出售系统上一次卖出全部的一半加二分之一条;第二次卖出余下的三分之一加三分之一条;第三次卖出余下的四分之一加四分之一条;第四次卖出余下的五分之一加五分之一条;最后卖出余下的11条。

全国软件大赛C语言组试题一

全国软件大赛C语言组试题一

第一届全国软件专业人才设计与开发大赛题目选拔试题暨答案2010-12-29 22:58一、基础篇(50分)1、单选(每题1分,10小题共10分)1).执行下列程序中的输出语句后,x的值是______.main(){int x;printf(“%d\n”,(x=5*6,x*2,x+20));}A)30 B)60 C)50 D)802).在C语言中,下列选项属于合法的长整型常数的是_______.A)0L B)1234567 C)0.0234567 D)3.14159e33).若有定义:int a,b;char x,y;并有以下输入数据:14 22 XxYy(回车)则能给a赋整数14,给b赋整数22,给x赋字符x,给y赋字符y的正确程序段是________.A)scanf(“%d %d”,&a,&b);x=getchar();y=getchar();B)scanf(“%d%d %c %c”,&a,&b,&x,&x,&y,&y);C)scanf(“%d %d %c%c%c %c”,&a,&b,&x,&x,&y,&y);D)scanf(“%d%d %c %c”,&a,&b,&x,&y);4).当c的值不为0时,下列选项中能正确将c的值赋给变量a、b的是_______.A)c=b=a;B)(a=c)‖(b=c);C)(a=c)&&(b=c);D)a=c=b;5).语句printf(“%d\n”,strlen(“asd\n\x12\1\\”));的输出结果是______.A)9 B)11 C)7 D)86).下列程序的运行结果是________.main(){ int y=10;do { y- -;} while(- -y);printf(“%d\n”,y- -);}A)-1 B)1 C)8 D)07).阅读下面程序,该程序段的功能是_____.#include <stdio.h>main(){ int c[ ]={23,1,56,234,7,0,34},i,j,t;for(i=1;i<7;i++){ t=c[i];j=i-1;while(j>=0&&t>c[j]){ c[j+1]=c[j];j- -;}c[j+1]=t;}for(i=0;i<7;i++)printf(“%d ”,c[i]);putchar('\n');}A)对数组元素的升序排列B)对数组元素的降序排列C)对数组元素的倒序排列D)对数组元素的随机排列8).有如下程序:#define f(x)x*xmain(){ int i;i=f(4+4)/(2+2);printf(“%d\n”,i);}该程序执行后的输出结果是_______.A)28 B)21 C)16 D)49).下列程序的运行结果是_______.main(){ unsigned c1=0xff,c2=0x00;c1=c2|c1>>2;c2=c1^0236;printf(“%x,%x\n”,c1,c2);}A)0x3f,0XA1 B)3f,A1 C)ffff,61 D)3f,a110).有以下程序:#include <stdio.h>main(){ FILE *fp;int i=20,j=30,k,n;fp=fopen(“d1.dat”,“w”);fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”,j);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d%d”,&k,&n);printf(“%d %d\n”,k,n);fclose(fp);}该程序运行后的输出结果是_______.A)20 30 B)20 50 C)30 50 D)30 20第一届全国软件专业人才设计与开发大赛题目选拔试题暨答案2010-12-29 23:002、多选(每题2分,共10题,共20分,错选,漏选均不得分)1).下列符号串中,不属于C语言合法标识符的有_____.A)_1_2_3 B)a-b-c C)int D)9cd2).下列选项中,没有构成死循环的程序段有_____.A)int i=100;B)for(;;)while(1){ i=i%100+1;if(i>=100)break;}C)int k=0;D)int s=36;do { ++k;} while(k>=0);while(s);——s;3).下列判断正确的是_______.(知识点10.3)A)char *a=“china”;等价于char *a;*a=“china”;B)char str[6]={“china”};等价于char str[ ]= {“china”};C)char *s=“china”;等价于char *s;s=“china”;D)char c[4]=“abc”,d[4]=“abc”;等价于char c[4]=d[4]=“abc”;4).设有如下定义:char *s[2]={“abcd”,“ABCD”};则下列说法正确的有_____.A)s数组元素的值分别是“abcd”和“ABCD”两个字符串的首地址B)s是指针数组名,它含有两个元素分别指向字符型一维数组C)s数组的两个元素分别存放的是含有四个字符的一维字符数组中的元素D)s数组的两个元素中分别存放了字符'a'和'A'的地址5).若有以下说明:int a[5][9];则下列选项中对数组元素a[i][j]的引用错误的有_______.(0<=i<4,0<=j<9)A)*(&a[0][0]+9*i+j)B)*(a+i)(j)C)*(*(a+i)+j)D)*(a[i]+j)6).若有定义:char *st=“how are you!”;下面程序段正确的有_____.(知识点:7.3)A)char a[11],*p;strcpy(p=a+1,&st[4]);B)char a[11];strcpy(++a,st);C)char a[11];strcpy(a,st);D)char a[ ],*p;strcpy(p=&a[1],st+2);7).设有以下说明语句:Struct stu{ int a;float b;}stutype;则下列叙述正确的有_______.A)struct是结构体类型的关键字B)struct stu是用户定义的结构体类型C)stutype是用户定义的结构体类型名D)a和b都是结构体成员名8).设有定义语句:int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,下列选项中能完成次操作的语句有_______.A)for(i=0;i<6;i++)printf(“%2d”,*(p++));B)for(i=0;i<6;i++)printf(“%2d”,*(p+i));C)for(i=0;i<6;i++)printf(“%2d”,*p++);D)for(i=0;i<6;i++)printf(“%2d”,(*p)++);9).下列叙述正确的有_____.A)函数可以嵌套定义,但不能嵌套调用B)函数可以嵌套调用,也可以嵌套定义C)函数不可以嵌套定义,但可以递归调用D)函数可以嵌套调用,但不能嵌套定义10).下列选项中可以将变量n清零的表达式有_______.A)n=n&~n B)n=n&0 C)n=n^n D)n=n|n第一届全国软件专业人才设计与开发大赛题目选拔试题暨答案2010-12-29 23:03二、智力题(30分)1、单选题:(每小题4分,5小题,共20分)1)给你8颗小石头和一架托盘天平。

c语言奥赛高中组试题及答案

c语言奥赛高中组试题及答案

c语言奥赛高中组试题及答案1. 阅读以下C语言程序代码,并回答后面的问题。

```c#include <stdio.h>int main() {int a = 5, b = 10, c;c = a + b;printf("%d", c);return 0;}```(1) 程序的输出结果是什么?(2) 如果将变量`a`的值改为`3`,程序的输出结果会如何变化?2. 以下C语言代码段中,函数`sum`的功能是什么?```cint sum(int x, int y) {return x + y;}```(1) 函数`sum`接受几个参数?(2) 函数`sum`的返回类型是什么?3. 考虑下面的C语言代码,分析并回答问题。

```c#include <stdio.h>int main() {int i;for (i = 0; i < 5; i++) {printf("%d ", i);}return 0;}```(1) 循环将执行多少次?(2) 每次循环中`printf`函数输出的值是什么?4. 阅读以下C语言代码,并回答问题。

```c#include <stdio.h>int main() {char ch = 'A';printf("%c", ch);return 0;}```(1) 程序的输出结果是什么?(2) 如果将字符变量`ch`的值改为小写字母`a`,程序的输出结果会如何变化?5. 以下C语言代码段中,`if`语句的作用是什么?```cint a = 10;if (a > 5)printf("a is greater than 5");```(1) 当变量`a`的值大于5时,会发生什么?(2) 如果将变量`a`的值改为`3`,`if`语句还会执行吗?答案:1. (1) 程序的输出结果是15。

全国大学生c语言设计大赛初赛试题及答案

全国大学生c语言设计大赛初赛试题及答案

全国大学生c语言设计大赛初赛试题及答案全国大学生C语言设计大赛初赛试题及答案一、选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 以下哪个函数用于计算字符串的长度?A. strlen()B. strcpy()C. strcat()D. strcmp()答案:A3. C语言中,以下哪个运算符用于取地址?A. *B. &C. %D. /答案:B4. 下列哪个选项是正确的C语言注释?A. // 这是一条注释B. /* 这是一条注释 */C. /* 这是一条注释D. // 这是一条注释答案:A5. 在C语言中,以下哪个选项表示一个无限循环?A. for(;;)B. while(1)C. do{}while(0)D. all of the above答案:D6. C语言中,以下哪个函数用于打开文件?A. fopen()B. fclose()C. freopen()D. remove()答案:A7. 以下哪个选项是C语言中的布尔类型?A. intB. floatC. charD. bool答案:D8. 在C语言中,以下哪个关键字用于定义一个函数?A. functionB. defC. voidD. int答案:C9. 下列哪个选项是C语言中合法的变量名?A. 2variableB. variable2C. variable_2D. all of the above答案:C10. 在C语言中,以下哪个函数用于将字符串复制到另一个字符串?A. strcpy()B. strcat()C. strcmp()D. strlen()答案:A二、填空题(每题2分,共20分)1. 在C语言中,字符型数据在内存中的存储形式是______。

答案:ASCII码2. C语言中,用于定义一个整型数组的关键字是______。

c语言全国各届信息技术大赛试题(值得计算机专业学习).doc

c语言全国各届信息技术大赛试题(值得计算机专业学习).doc

5有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3报数),凡是数到3的人退出圈子,问最后留下的是原来的几号的那个人。

#include <stdio.h> void main(){int n, i, k, m;int array[50], *p;printf(M please input the number of persons: n = \n H);scanf("%d", &n);p = array;for (i 二0; i v n; i++)*(p+i) = i+1;i = 0; //i为每次循环计数变量k = 0; // k为按1,2,3报数时的计数变量m = 0; // m为退岀人数计数变量while(m < n-l) 〃当退出人数比n-1少时执行循环体{if( *(p+i) != 0 )k++;if(k == 3) //对退出的人编号置为0{*(p+i) = 0;k 二0;m++;}i++;if(i == n)i = 0;}while(*p == 0)p++; printf("The last one isNo. %d\n",*p);6编写一个函数求字符串的长度。

并在main 函数中输入字符串,并输出其长度。

#include <stdio.h> void main(){int strLen(char *str);intlen;char string[20];printf("please input a string: \n M);scanf(”%s”, string);len = strLen(string);printf("The length of the string is: %2d\n", len);}int strLen(char *str){char *p;int count = 0;p = str;while(水p){P++; count++;}return (count);}7有一个字符串,包含n个字符。

noip初赛c语言试题及答案

noip初赛c语言试题及答案

noip初赛c语言试题及答案1. 选择题1.1 以下哪个选项是C语言中合法的变量名?A. 2variableB. variable2C. intD. _variable1.2 正确答案是 D。

变量名可以以字母或下划线开头,不能以数字开头,也不能是C语言的关键字。

1.3 以下哪个选项是C语言中合法的整型常量?A. 0x1AB. 0123C. 1.2E3D. 0b10101.4 正确答案是 A。

0x1A 是十六进制表示的整数,0123 是八进制表示的整数,1.2E3 是浮点数,0b1010 是二进制表示的整数,但不是合法的C语言常量。

1.5 以下哪个选项是C语言中合法的字符串常量?A. "Hello, World!"B. 'Hello, World!'C. "HelloD. "Hello\"1.6 正确答案是 A。

"Hello, World!" 是合法的字符串常量,'Hello, World!' 是字符常量,"Hello 是不完整的字符串常量,"Hello\" 是非法的字符串常量,因为反斜杠后面没有字符。

2. 填空题2.1 以下C语言代码中,变量a的值是多少?```cint a = 5;printf("%d", a);```2.2 答案是 5。

变量a被初始化为5,然后通过printf函数输出。

2.3 以下C语言代码中,变量b的值是多少?```cint b = 10;b = b + 5;printf("%d", b);```2.4 答案是 15。

变量b被初始化为10,然后增加5,最后输出15。

3. 编程题3.1 编写一个C语言程序,计算并输出100以内所有偶数的和。

```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {if (i % 2 == 0) {sum += i;}}printf("Sum of even numbers from 1 to 100 is: %d\n", sum);return 0;}```3.2 程序的输出是:Sum of even numbers from 1 to 100 is: 2550。

c语言竞赛试题及答案

c语言竞赛试题及答案

c语言竞赛试题及答案一、选择题(共10题,每题4分,共40分)1. 下列哪个关键字不是C语言的保留字?A. switchB. floatC. caseD. double答案:C. case2. 在C语言中,以下哪种数据类型可以存储整数值?A. charB. floatC. doubleD. void答案:A. char3. 下列哪个运算符是用于判断两个值是否相等的?A. ==B. !=C. >=D. +答案:A. ==4. 在C语言中,以下哪个关键字可以用于定义一个常量?A. constB. staticC. externD. volatile答案:A. const5. 下列哪个循环结构在条件不满足时至少会执行一次循环体?A. whileB. do-whileC. forD. if答案:B. do-while6. 下列哪个函数可以用于从键盘获取用户输入的整数?A. printf()B. scanf()C. gets()答案:B. scanf()7. 在C语言中,以下哪个标识符是合法的?A. 1variableB. _variableC. variable%D. variable+答案:B. _variable8. 下列哪个运算符的优先级最高?A. +B. /C. =D. *答案:C. =9. C语言中,以下哪个库函数可以用于计算绝对值?A. abs()B. pow()C. floor()答案:A. abs()10. 在C语言中,以下哪个宏定义可以用于调试程序时输出信息?A. #define DEBUG 1B. #ifdef DEBUGC. #ifndef DEBUGD. #include <stdio.h>答案:B. #ifdef DEBUG二、编程题(共两道题目,每题30分,共60分)1. 编写一个程序,要求用户输入一个整数n(n>0),计算并输出1到n的所有整数的平方。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

比赛时间4个小时,满分100分,还有附加题50分。

一、单项选择题:(共15题,每题2分,共30分)
1)若int x=2,求x的19次方,下列语句正确的是______
A. for(int i=0;i<19;i++) x*=2;
B. for(int i=0;i<19;i++) x*=x;
C. x=x<<19;
D. x=x<<18;
答案为D
2)关于下列代码,说法正确的是______
char *p="abcd";
p[0]=0;
A. 编译错
B. p指向的串变为空串
C. p指向串变为:"0bcd"
D. 运行异常
答案为D
二、程序填空:(共5题,每题6分,每题可能有多个空,共30分)
任意给定一个4位数(不能所有位都相同),比如:3278,重新组合出最大数:8723,再重新组合出最小数:2378,相减,得到新的4位数(如不足则补0),重复这个过程,最后必然得到一个数字:6174。

这个现象被称为:数字黑洞。

下面的函数实现由给定的4位整数求出下一个整数的功能。

请完善之。

int f(int n)
{
int N[4];
for(int i=0;i<4;i++)
{
N[3-i]=n%10;
__________;
}
for(i=0;i<3;i++)
for(int j=0;j<3-i;i++)
if(__________)
{
int t=N[j+1];
N[j+1]=N[j];
N[j]=t;
}
int n_min=0;
for(i=0;i<4;i++)
n_min=n_min*10+N[i];
int n_max=0;
for(i=3;i>=0;i++)
n_max=n_max*10+N[i];
return n_max-n_min;
}
答案:n/=10
N[j]>N[j+1]
三、编程题:(共两题,每题20分,共40分)
1)4位反序数。

设N是一个四位数,它的k倍(1<k<10)恰好是其反序数,试编程输出所有的N及其对应的k倍。

反序数就是将整数的数字倒过来形成的整数。

例如:1234的反序数是4321。

int z;
int a,b,c,d,e,f,g,k;
for(a=1;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
for(d=0;d<10;d++)
{
f=a*1000+b*100+c*10+d;
g=a+b*10+c*100+d*1000;
for(k=2;k<10;k++)
{
e=f;
e=e*k;
if(e==g)
{
cout<<f<<" ";
cout<<k<<endl;
}
}
}
cin>>z;
return 0;
2)字谜。

下列乘法算式中:每个汉字代表1个数字(1~9)。

相同的汉字代表相同的数字,不同的汉字代表不同的数字。

赛软件* 比赛= 软件比拼
试编程确定使得整个算式成立的数字组合。

int z;
int a,b,c,d,e,f,g,h;
for(a=1;a<10;a++)
for(b=1;b<10;b++)
for(c=1;c<10;c++)
{
f=100*a+10*b+c;
for(d=1;d<10;d++)
{
g=10*d+a;
for(e=0;e<10;e++)
{
h=b*1000+c*100+d*10+e;
if(((f*g)==h)&&(a!=b)&&(a!=c)&&(a!=d)&&(a!=e)&&(b!=c)&&(b!=d)&&(b!=e)&&(c!=d)&&(c!=e)&&(d!=e))
{
cout<<f<<"*"<<g<<"="<<h<<endl;
}
}
}
}
cin>>z;
return 0;
465 * 14 = 6510 但是由于每个汉字都不能是0,因此可能无解。

四、附加编程题:天平。

(50分)
一根均匀的木棍,中间吊起来成为天平。

木棍的左右两边各有N(N<=7)个均匀的刻度。

现有N个砝码,重量为1到N克,全部都要放在天平的两边的各个刻度上,每个刻度只能放一个砝码,问要保持天平的平衡,有多少种不同的放置方案(左右对称的方案只算一种),请输出每一种方案。

例如,N=5时,
请输出:
4[2] 5[1] -- 2[1] 1[2] 3[3] (4[2]的含义是4克的砝码放在刻度为2的位置)
5[2] 4[1] -- 1[1] 2[2] 3[3]
……
注意:
1[2] 2[1] 3[3] -- 4[2] 5[1] 由于和第一种左右对称,不能输出。

4[2] 5[1] -- 1[2] 2[1] 3[3] 由于和第一种只是输出顺序的不同,也不能输出。

相关文档
最新文档