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

合集下载

C语言编程题经典40题(附解答)

C语言编程题经典40题(附解答)
字符串
字符串在C语言中通常表示为字符数组。可以通过字符数组来存储和操作字符串。字符串的常用函数 包括strcpy()、strcat()、strlen()等。
03
进阶题目
函数与递归
总结词
理解函数定义、参数传递、递归调用等概念,掌握函数的使用方法。
题目1
编写一个函数,判断一个整数是否为素数。
题目2
编写一个函数,计算斐波那契数列的第n项。
培养逻辑思维
C语言强调结构化和严谨 的编程风格,学习C语言 有助于培养逻辑思维和问 题解决能力。
为什么选择这40道题目
经典题目
精选的40道题目均来自经典的C语言题目库,具有较高的代表性和难 度。
覆盖面广
题目涵盖了C语言的主要知识点,包括数据类型、控制结构、函数、 指针等,有助于全面提升编程能力。
难度适中
实现二叉树的基本操作(创建、插 入、删除、遍历)
题目12
实现堆排序算法
04
THANKS
感谢观看
01
02
文件打开
使用fopen()函数打开文件,并返回一 个FILE类型的指针。
03
文件读取
使用fscanf()、fgets()等函数从文件中 读取数据。
文件关闭
使用fclose()函数关闭文件。
05
04
文件写入
使用fprintf()、fputs()等函数将数据写 入文件。
动态内存分配
总结词
动态内存分配允许程序员在运行时根 据需要分配或释放内存,提高了程序 的灵活性和可扩展性。
数组与字符串
01
理解数组的概念和使用方法
02
掌握字符串的存储和操作
03
熟悉数组和字符串的常用函数

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语言考试题型及答案一、选择题(每题2分,共20分)1. C语言中,用于定义变量的关键字是?A. varB. letC. intD. define答案:C2. 下列哪个选项不是C语言中的基本数据类型?A. intB. floatC. stringD. double答案:C3. 在C语言中,哪个运算符用于取模?A. %B. /C. *D. -答案:A4. C语言中,用于输出的函数是?A. scanf()B. printf()C. gets()D. puts()答案:B5. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. +=D. -答案:A6. C语言中,哪个关键字用于定义函数?A. functionB. defC. voidD. int答案:C7. 在C语言中,哪个关键字用于循环?A. whileB. forC. doD. All of the above答案:D8. C语言中,哪个关键字用于跳过当前循环的迭代?A. continueB. breakC. returnD. exit答案:A9. 在C语言中,哪个函数用于计算数组的长度?A. length()B. size()C. sizeof()D. count()答案:C10. C语言中,哪个关键字用于定义结构体?A. structB. typeC. classD. union答案:A二、填空题(每题2分,共20分)1. 在C语言中,使用________关键字可以定义一个指针变量。

答案:int*2. C语言中,字符串字面量是用________括起来的字符序列。

答案:""3. C语言中,________函数用于将字符串复制到另一个字符串。

答案:strcpy()4. C语言中,________运算符用于比较两个值是否相等。

答案:==5. C语言中,________关键字用于定义一个枚举类型。

答案:enum6. C语言中,________函数用于打开一个文件。

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

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

C语言程序设计竞赛题及其答案数学与统计学院第三届计算机程序设计竞赛题竞赛需知:1、答案必须写在答题纸上。

2、程序采用C/JAVA/VB/VFP语言实现均可。

3、考虑到各种因素,程序的键盘输入和结果输出可以用伪代码或者自然语言表示。

但是必须说明输入变量和输出变量。

4、题目最好能用完整、正确的语言程序来解决问题,如确实无法编写完整语言程序的,可以写出程序主要框架和流程,必要时可以用伪代码或者自然语言描述算法(程序)。

一、玫瑰花数(20分)如果一个四位数等于它的每一位数的4次方之和,则称为玫瑰花数。

例如:++1634+=,4^44^34^64^1编程输出所有的玫瑰花数。

#includevoid main(){int i,j,k,l,m;for(i=999;i<=9999;i++){j=i/1000;k=i%10;l=i/100-10*j;m=i/10-100*j-10*l;if(i==j*j*j*j+k*k*k*k+l*l*l*l+m*m*m*m) printf("%d\n",i);}}二、菱形图案(20分)对给定的奇数n,编程打印菱形图案。

输入样例:7输出样例:*************************#include#includevoid main(){int i,j,k;int n;scanf("%d",&n);for(i=0;i<n;i++)< p="">{for(j=0;j<="" p="">printf("");for(k=0;k<n-2*j;k++)< p="">printf("*");printf("\n");}}三、钻石奖励(20分)海盗们决定用“投环套物”的方式来奖励最近一次行动中贡献最大的人。

蓝桥杯第八届c语言试题及答案

蓝桥杯第八届c语言试题及答案

蓝桥杯第八届c语言试题及答案蓝桥杯第八届C语言试题及答案1. 题目一:字符串反转要求:编写一个函数,实现字符串的反转。

```cvoid reverseString(char* str) {int i = 0, j = strlen(str) - 1;while (i < j) {char temp = str[i];str[i] = str[j];str[j] = temp;i++;j--;}}```答案:上述代码定义了一个名为`reverseString`的函数,它接受一个字符数组`str`作为参数。

通过交换数组两端的字符,实现了字符串的反转。

2. 题目二:寻找最大数要求:给定一个整数数组,找出数组中的最大数。

```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. 题目三:计算阶乘要求:编写一个函数,计算一个整数的阶乘。

```clong long factorial(int n) {if (n == 0) return 1;long long result = 1;for (int i = 1; i <= n; i++) {result *= i;}return result;}```答案:函数`factorial`接受一个整数`n`作为参数。

如果`n`为0,直接返回1,因为0的阶乘定义为1。

否则,初始化结果为1,并通过循环计算从1到`n`的乘积,最后返回计算出的阶乘值。

c语言的考试题目答案及解析

c语言的考试题目答案及解析

c语言的考试题目答案及解析1. 题目:以下哪个选项是C语言中的合法变量名?A. 2variableB. variable2C. _variableD. variable-2答案:C解析:在C语言中,变量名必须以字母或下划线开头,不能以数字开头。

因此,选项A和D是不合法的。

选项B虽然以字母开头,但是数字紧跟字母,没有下划线或空格分隔,所以也是不合法的。

选项C 以下划线开头,符合变量命名规则。

2. 题目:以下哪个选项是C语言中正确的字符串字面量?A. "Hello, World!"B. 'Hello, World!'C. "Hello, World!"D. "Hello, World!"答案:A解析:在C语言中,字符串字面量应该用双引号括起来。

选项B使用了单引号,这是用于字符字面量的,而不是字符串。

选项C和D是重复的,并且由于格式问题,它们可能没有正确显示,但假设它们是正确的字符串字面量,那么答案应该是A,因为它是第一个出现的合法字符串字面量。

3. 题目:以下哪个选项是C语言中正确的函数声明?A. int function(int x) {}B. void function() {}C. int function(int x, int y) {}D. All of the above答案:D解析:在C语言中,函数声明可以包含参数列表,也可以没有参数。

选项A和C都包含了参数列表,并且参数类型是int,这是合法的。

选项B没有参数列表,并且指定了返回类型为void,这也是合法的。

因此,所有选项都是正确的函数声明。

4. 题目:以下哪个选项是C语言中正确的条件语句?A. if (x > 0) { ... }B. if x > 0 { ... }C. if (x > 0) { ... } else { ... }D. if (x > 0) { ... } elseif { ... }答案:C解析:在C语言中,条件语句必须使用if关键字,并且条件表达式需要用括号括起来。

蓝桥杯专科组c语言试题及答案

蓝桥杯专科组c语言试题及答案

蓝桥杯专科组c语言试题及答案蓝桥杯专科组C语言试题及答案1. 单项选择题(1) 在C语言中,下列哪个选项是正确的字符串定义方式?A. char str[] = "Hello";B. char str[] = 'Hello';C. char str[] = {"Hello"};D. char str[] = "Hello";答案:A(2) 下列关于C语言函数的描述中,错误的是?A. 函数可以没有返回值。

B. 函数可以有多个返回值。

C. 函数可以有默认参数。

D. 函数可以有不定数量的参数。

答案:C2. 程序填空题请在空白处填入正确的代码,以实现以下功能:计算并输出1到100之间所有偶数的和。

#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. 编程题编写一个C语言程序,实现以下功能:接受用户输入的两个整数,输出它们的和。

#include <stdio.h>int main() {int num1, num2, sum;printf("Enter two integers: ");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("The sum is: %d\n", sum);return 0;}4. 简答题(1) 请简述C语言中指针的概念。

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

第三届蓝桥杯——蓝桥杯c语言本科组(带答案)

第三届蓝桥杯——蓝桥杯c语言本科组(带答案)
华生:“我猜也是!”
于是,两人沉默了好久,还是没有算出合适的结果来。
请你利用计算机的优势,找到破解的答案。
把ABCDE所代表的数字写出来。
答案写在“解答.txt”中,不要写在这里!
3.
有一群海盗(不多于20人),在船上比拼酒量。过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了。再打开一瓶酒平分,又有倒下的,再次重复......直到开了第4瓶酒,坐着的已经所剩无几,海盗船长也在其中。当第4瓶酒平分喝下后,大家都倒下了。
#include <cstdio>
int main()
{
long int X=10, Y=90;
for(int k=1; k<=120; k++)//半分钟一个单位
{
if(k%2==1) Y -= X;//因为X出生半分钟后就要吃Y,尔后没1分钟要吃Y,所以永远都是奇数个半分钟的时候吃Y,又因为此时X不会增长(题目为了减小讨论的复杂度),所以直接减X数量即可。
14 10 6 2
15 11 7 3
16 12 8 4
下面的代码实现的功能就是要把一个方阵顺时针旋转。
void rotate(int* x, int rank)
{
int* y = (int*)malloc(___________________); //填空
for(int i=0; i<rank * rank; i++)
{
GoNext(x,r,c);
return;
}
int rr = GetRowStoneNum(x,r);
int cc = GetColStoneNum(x,c);
if(cc>=3) //本列已满

c语言程序设计比赛试题及答案

c语言程序设计比赛试题及答案

c语言程序设计比赛试题及答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的合法整数常量?A. 0x1AB. 01AC. 0b1010D. 1.23答案:A2. C语言中,哪个关键字用于定义一个函数?A. structB. intC. voidD. return答案:B3. 下列哪个选项是C语言中正确的注释方式?A. // 这是注释B. /* 这是注释 */C. //* 这是注释D. /* 这是注释答案:B4. C语言中,哪个运算符用于求两个数的和?A. +B. -C. *D. /答案:A5. 在C语言中,哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A6. C语言中,哪个关键字用于定义一个枚举类型?A. structB. unionC. enumD. typedef答案:C7. 下列哪个选项是C语言中合法的变量名?A. 2variableB. variable2C. _variableD. variable$2答案:B8. 在C语言中,哪个关键字用于定义一个指针?A. intB. floatC. charD. *答案:D9. C语言中,哪个函数用于将字符串复制到另一个字符串?A. strcpyB. strcatC. strcmpD. strlen答案:A10. 在C语言中,哪个函数用于计算字符串的长度?A. strcpyB. strcatC. strcmpD. strlen答案:D二、填空题(每题2分,共20分)1. C语言中,用于定义一个整型数组的关键字是________。

答案:int2. C语言中,用于定义一个字符型数组的关键字是________。

答案:char3. C语言中,用于定义一个浮点型数组的关键字是________。

答案:float4. C语言中,用于定义一个双精度浮点型数组的关键字是________。

答案:double5. C语言中,用于定义一个字符串的关键字是________。

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

C语言大赛题目精选(带答案)
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)
Enter year/month/day:1992 10 25
He was sleeping at day.
Enter year/month/day:1993 10 25
He was sleeping at day
2.
12."抓交通肇事犯
一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:
/*判定year为闰年还是平年,lp=0为平年,非0为闰年*/for(i=1;i<day.month;i++)/*计算本年中自1月1日起的天数*/
day.day+=day_tab[lp];
returnday.day;}*运行结果
Enter year/month/day:1991 10 25
He was fishing at day.
*程序与程序注释
#include<stdio.h>
#include<math.h>
void main(){int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1;
float max=0,term;
for(i8=0;i8<3;i8++)/*穷举所有可能的存款方式*/

c语言考试题及答案以及解析

c语言考试题及答案以及解析

c语言考试题及答案以及解析一、选择题1. 下列哪个选项是C语言中的关键字?A. intB. floatC. doubleD. string答案:A解析:在C语言中,关键字是保留的词汇,用于表示特定的语法结构。

int是C语言中用于声明整型变量的关键字。

2. C语言中,哪个运算符用于计算两个数的乘积?A. +B. -C. *D. /答案:C解析:在C语言中,乘法运算符是星号(*),用于计算两个数的乘积。

二、填空题1. 在C语言中,以下代码片段的输出结果是:```cint main() {int a = 5;printf("%d", a);return 0;}```输出结果为:_________答案:5解析:代码中的printf函数用于输出变量a的值,a被初始化为5,因此输出结果为5。

2. 下列代码段中,变量b的值是多少?```cint main() {int a = 10, b;b = a + 5;printf("%d", b);return 0;}```变量b的值为:_________答案:15解析:变量b被赋值为变量a加上5,由于a的值为10,所以b的值为15。

三、简答题1. 简述C语言中的数组是什么,并给出一个数组的声明和初始化的例子。

答案:C语言中的数组是一种数据结构,用于存储相同类型的多个元素。

数组的声明需要指定元素的类型和数组的长度。

数组的初始化可以在声明时完成。

解析:例如,声明一个整型数组并初始化:```cint numbers[5] = {1, 2, 3, 4, 5};```2. 解释C语言中的函数是什么,并给出一个简单函数的定义和调用的例子。

答案:C语言中的函数是一段具有特定功能的代码块,可以接收参数,并返回一个值。

函数的定义包括函数的返回类型、名称、参数列表和函数体。

函数的调用是使用函数名称和必要的参数来执行函数。

解析:例如,定义一个函数来计算两个数的和,并调用它:```cint add(int x, int y) {return x + y;}int main() {int result = add(5, 10);printf("%d", result);return 0;}```四、编程题1. 编写一个C语言程序,实现输入两个整数,输出它们的和。

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

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

C语言程序设计大赛题目和答案/*-------------------第一题某人到商店购物,身上有钱m元,商店里有商品n件,如果只能买1件或2件商品,且想一次性把钱花完,编程求是否可行?输入数据:第一行输入两个整数n和m(1≤n≤30000,1≤m≤10000),下面n行中每一行都是一个整数a,表示商店中商品的价格,1≤a≤10000。

输出数据:如果可以恰好用m元钱买到1件或者是2件东西,则第一行输出YES,随后的一行或两行输出所买商品的价格;否则输出NO。

输入样例:5 201371318输出样例:YES713-----------------------*/#include <stdio.h>#include <malloc.h>void main(){int m, n;int *a;int i,j;scanf("%d%d",&n,&m); //输入商品数及钱的多少a=(int*)malloc(n*sizeof(int));for(i=0;i<n;i++) scanf("%d",a+i); //输入每件商品的价格for(i=0;i<n;i++)if(a[i]==m) {printf("%s\n%d\n","YES",a[i]); break;}elsefor(j=i+1;j<n;j++)if(a[i]+a[j]==m){printf("%s\n%d\n%d\n","YES",a[i],a[j]); return;}if (i==n) printf("\nNO\n");}/*----------------------第二题写出一个程序,接受一个以N/D的形式输入的分数,其中N为分子,D为分母,输出它的小数形式。

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

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

C语言程序设计大赛题目和答案在C语言程序设计领域,程序设计大赛是一种常见的形式,它旨在考察参赛者的编程能力和解决问题的能力。

本文将介绍一些常见的C 语言程序设计大赛题目和对应的答案,帮助读者了解这些题目的难度和解题思路。

一、题目一:计算数列和题目描述:给定一个正整数n,计算1到n的所有整数的和。

解答思路:可以使用循环结构来解决该问题。

初始化一个累加器sum,然后通过循环依次将1到n的数累加到sum中,最终得到结果。

```c#include <stdio.h>int main() {int n;int sum = 0;printf("请输入一个正整数n:");scanf("%d", &n);for (int i = 1; i <= n; i++) {sum += i;}printf("1到%d的和为:%d\n", n, sum);return 0;}```二、题目二:判断素数题目描述:给定一个正整数n,判断其是否为素数(只能被1和自身整除的数)。

解答思路:可以使用循环结构和条件判断来解决该问题。

通过循环从2到n-1依次判断n是否能被这些数整除,如果能,则n不是素数;如果循环结束后仍然没有找到能整除的数,则n是素数。

```c#include <stdio.h>#include <stdbool.h>bool isPrime(int n) {if (n <= 1) {return false;}for (int i = 2; i < n; i++) {if (n % i == 0) {return false;}}return true;}int main() {int n;printf("请输入一个正整数n:");scanf("%d", &n);if (isPrime(n)) {printf("%d是素数\n", n);} else {printf("%d不是素数\n", n);}return 0;}```三、题目三:矩阵乘法题目描述:给定两个矩阵A和B,计算它们的乘积矩阵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个字符。

C语言程序设计竞赛试题参考答案

C语言程序设计竞赛试题参考答案

C语言程序设计竞赛试题参考答案第七届“蓝桥杯”全国软件与信息技术专业人才大赛清远职业技术学院选拔赛《C语言程序设计》参考答案1.标题:年龄巧合(填空题,20分)答案: 19882.标题:海盗分金币(填空题,20分)答案: 31293.标题:啤酒和饮料(填空题,20分)答案: 114.标题:兔子繁殖(程序填空,20分)(1) i=1;i<=38;i++(2) f3=f1+f2(3) f1=f2(1) f2=f35.题目:杨辉三角(编程题 20分)代码如下:#include#includeint main(){int i,j,k,n;static int a[50][50];printf("Input lines\",&n);scanf("%d",&n);a[1][1]=a[2][1]=a[2][2]=1;for(i=3;i<=n;i++)for(j=1;j<=i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=1;i<=n;i++){for (k=1;k<=n-i;k++)printf(" ");for(j=1;j<=i;j++)printf("%2d ",a[i][j]);printf("\");}getch();return 1;}1-3题参考代码1、代码如下:#includeint main(void){int a, b, c, d;int age;int year;for(a=0; a<=2; a++){for(b=0; b<=9; b++){for(c=0; c<=9; c++){for(d=0; d<=9; d++){age = a+b+c+d;year = 2014-(a*1000+b*100+c*10+d);if(age == year){printf("%d%d%d%d ",a,b,c,d); }}}}}2、代码如下:#includeint main(void){for(int i=1; i<100000; i++){ int x = i;if((x+1)%5 != 0) continue;x = (x+1)/5 * 4;if((x+1)%5 != 0) continue;x = (x+1)/5 * 4;if((x+1)%5 != 0) continue;x = (x+1)/5 * 4;if((x+1)%5 != 0) continue;x = (x+1)/5 * 4;if((x+1)%5 != 0) continue;x = (x+1)/5 * 4;if(x>=1000 &&x<=1999)printf("%d",i);}return 1;}return 1;}3、代码如下:#includeint main(void){int x,y;for(x=0; x<=100; x++){for(y=0; y<=100; y++){if(23*x + 19*y == 823)if(x<y)< bdsfid="173" p=""></y)<> printf("%d %d\",x, y);}}return 1;}。

c 竞赛试题及答案

c 竞赛试题及答案

c 竞赛试题及答案本文提供了 C 竞赛的试题及其对应的答案。

通过这些试题的学习和答案的分析,读者可以更好地理解 C 竞赛的考察内容和解题思路,提高自己的编程水平。

试题一:以下是一个 C 语言的函数,请写出该函数的功能和完整代码:```cint calculate(int a, int b) {int result = a * a + b * b;return result;}```答案一:上述函数的功能是计算两个整数的平方和。

下面是完整的代码:```c#include <stdio.h>int calculate(int a, int b) {int result = a * a + b * b;return result;}int main() {int a = 3;int b = 4;int sum = calculate(a, b);printf("The sum of squares is %d\n", sum);return 0;}```试题二:以下是一个 C 语言的代码,请写出该代码的输出结果:```c#include <stdio.h>int main() {int a = 5;int b = 10;int c = a + b;printf("a = %d\n", a);printf("b = %d\n", b);printf("c = %d\n", c);return 0;}```答案二:上述代码的输出结果为:```a = 5b = 10c = 15```试题三:以下是一个 C 语言的代码,请写出该代码的输出结果:```c#include <stdio.h>int main() {int a = 10;if (a > 5) {printf("Hello\n");} else {printf("World\n");}return 0;}```答案三:上述代码的输出结果为:```Hello```试题四:以下是一个 C 语言的代码,请写出该代码的输出结果:```c#include <stdio.h>int main() {int i;for (i = 0; i < 5; i++) {printf("%d ", i);}return 0;}```答案四:上述代码的输出结果为:```0 1 2 3 4```通过以上试题及其对应的答案,我们可以看到 C 竞赛的考察范围涵盖了基本语法、函数定义、条件语句和循环语句等内容。

C语言题目及答案.

C语言题目及答案.

C语言题目及答案.目录1.Climb the Taishan Mountain(II)2.Peach3.逆序输出数列4.逆序数5.计算高度6.分解质因数7.输出数字8.Problem B:数字之和9.换零钱10.素数求和11.求阶乘和11.Problem F:求一批正整数中的偶数和12.统计各种字符个数13.求最大公约数14.求最大公约数15.零起点学算法101——统计字母数字等个数16.网站泄密17.老外买瓷砖18.堆瓷砖19.新年大酬宾20.定制瓷砖21.句子比较大小22.鹦鹉学舌3——C语言初学者百题大战之十三23.鹦鹉学舌2——C语言初学者百题大战之十二24.百鸡问题25.零起点学算法89——程序设计竞赛26.零起点学算法89——程序设计竞赛27.Problem A:计算数列和28.找钱问题29.Median30.素月31.输入任意N个数,求和32.多项式求和33.人口问题34.数字菱形Climb the Taishan Mountain(II)Time Limit:1000MS Memory Limit:65536KTotal Submit:753 Accepted:495DescriptionLabor day is coming.Since the holiday is long,Many students are planning to have a tour. The Taishan Mountain is very beautiful, so WangPeng and his classmates want to climb the Taishan Mountain. Mountaineering sports is WangPeng's avocation, so he is very excited. Suddenly, a very amusing idea comes to him. The Taishan Mountain has many stairs, and he can climb the mountain one step by 2 stairs or by 1 stairs. How many ways does he have to climb the mountain? For example, the stairs is 2, he has 2 ways.The first one is the first step by 1 stair, and the next step by 1 stair.And the second way is only one step by 2 stairs.InputThe input is including many test cases. Every line is one test case with a integer number N(N<=40). N is the stairs of the Taishan Mountain.OutputYou should output how many ways WangPeng can climb the mountain, each case output a line.Sample Input123Sample Output123#includeint main(){int n,i,j,a[41];while(scanf("%d",&n)!=EOF){a[0]=1;a[1]=2;{a[i]=a[i-1]+a[i-2];}printf("%d\",a[n-1]);}}PeachTime Limit:1000MS Memory Limit:65536KTotal Submit:689 Accepted:495DescriptionAlmost all young man know Monkey Sun whose name is Sun Wukong. One day he steals many peaches from the kingdom ofheaven. First day, he ate a half of the peaches, then ate another one of the left peaches.The next day, he ate a half of the left peaches, then another one.Until the n-th day ,before he ate he found only one peach. Please help Sun Wukong to calculate how many peaches he took from the kingdom of heaven.InputThe input file contains one or more test cases, each line is the days N(1 < n < 30). OutputFor each test case, output a line indicating the number of peaches Monkey Sun had the first day.Sample Input24Sample Output422#includeint main(){int n,t,i,s;while(scanf("%d",&n)!=EOF){t=1;s=0;{s=(t+1)*2;t=s;}printf("%d\",t);}}循环练习a+b——C语言初学者百题大战之二十二Time Limit:1000MS Memory Limit:65536KTotal Submit:3739 Accepted:2513Description终于到循环结构了。

(完整版)C语言题库(带详解答案)

(完整版)C语言题库(带详解答案)

一单项选择题1.(A)是构成C语言程序的基本单位。

A、函数B、过程C、子程序D、子例程2.C语言程序从 C开始执行。

A) 程序中第一条可执行语句 B) 程序中第一个函数C) 程序中的main函数 D) 包含文件中的第一个函数3、以下说法中正确的是(C)。

A、C语言程序总是从第一个定义的函数开始执行B、在C语言程序中,要调用的函数必须在main( )函数中定义C、C语言程序总是从main( )函数开始执行D、C语言程序中的main( )函数必须放在程序的开始部分4.下列关于C语言的说法错误的是(B)。

A) C程序的工作过程是编辑、编译、连接、运行B) C语言不区分大小写。

C) C程序的三种基本结构是顺序、选择、循环D) C程序从main函数开始执行5.下列正确的标识符是(C)。

A.-a1B.a[i]C.a2_iD.int t5~8题为相同类型题考点:标识符的命名规则(1)只能由字母、数字、下划线构成(2)数字不能作为标识符的开头(3)关键字不能作为标识符选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int为关键字,不满足(3)6.下列C语言用户标识符中合法的是( B)。

A)3ax B)x C)case D)-e2 E)union选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1);7.下列四组选项中,正确的C语言标识符是(C)。

A) %x B) a+b C) a123 D) 123选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)8、下列四组字符串中都可以用作C语言程序中的标识符的是(A)。

A、print _3d db8 aBcB、I\am one_half start$it 3paiC、str_1 Cpp pow whileD、Pxq My->book line# His.age选项B中的“\”,”$” ,选项D中“>”,”#”,”.”,”-”不满足(1);选项C中的while 为关键字,不满足(3)9.C语言中的简单数据类型包括(D)。

c语言试题目及答案

c语言试题目及答案

c语言试题目及答案1. 选择题1) 在C语言中,下面哪个选项是无效的标识符?A. myVarB. _varC. 3varD. var3正确答案:C. 3var2) 下面哪行代码可以正确输出字符串 "Hello, World!"?A. printf("Hello, World!");B. print("Hello, World!");C. console.log("Hello, World!");D. cout << "Hello, World!";正确答案:A. printf("Hello, World!");3) 在C语言中,下面哪个数据类型可以用来存储小数值?A. intB. charC. floatD. bool正确答案:C. float2. 填空题1) 下划线是在C语言中用作什么目的?答案:下划线是用来连接多个单词以创建一个标识符。

2) 在C语言中,用于存储单个字符的数据类型是__char__。

3) C语言中,用于声明变量的关键字是__int__。

3. 程序分析题给定以下C语言程序,请写出代码中缺失的部分:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两数之和为:%d", sum);return 0;}```程序分析:上述代码是一个简单的C语言程序,用于接收用户输入的两个整数,并计算它们的和。

缺失部分为```printf("两数之和为:%d", sum);```中的换行符。

c语言程序设计大赛初赛试题及答案

c语言程序设计大赛初赛试题及答案

c语言程序设计大赛初赛试题及答案一、选择题(每题2分,共10分)1. 下列哪个选项是C语言中的关键字?A. intB. floatC. stringD. array答案:A2. C语言中,用于定义一个整型变量的关键字是?A. intB. charC. floatD. double答案:A3. 下列哪个选项不是C语言的标准输入输出函数?A. printfB. scanfC. coutD. getchar答案:C4. 在C语言中,下面哪个选项是正确的字符串定义?A. char str[] = "Hello";B. char str[] = {"Hello"};C. char str[] = 'Hello';D. char str[] = "Hello";答案:A5. 下列哪个选项是C语言中正确的注释方式?A. // This is a commentB. /* This is a comment */C. //* This is a commentD. /* This is a comment */答案:B二、填空题(每题3分,共15分)1. 在C语言中,定义一个整型数组可以使用关键字_________。

答案:int2. C语言中,_________函数用于输出字符串。

答案:printf3. C语言中,_________函数用于从标准输入读取一个字符。

答案:getchar4. C语言中,_________关键字用于定义一个函数。

答案:void5. C语言中,_________关键字用于定义一个结构体。

答案:struct三、编程题(每题10分,共20分)1. 编写一个函数,计算并返回两个整数的和。

```cint add(int a, int b) {return a + b;}```答案:```cint add(int a, int b) {return a + b;}```2. 编写一个程序,读取用户输入的两个整数,然后输出它们的乘积。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2)由于“打鱼”和“晒网”的周期为5天,所以将计算出的天数用5去除;3)根据余数判断他是在“打鱼”还是在“晒网”;
若余数为1,2,3,则他是在“打鱼”
否则是在“晒网”
在这三步中,关键是第一步。求从
1990年1月1日至指定日期有多少天,要判断经历年份中是否有闰年,二月为29天,平年为28天。闰年的方法可以用伪语句描述如下:
0<=i5<=(20-8*i8)/5
0<=i3<=(20-8*i8-5*i5)/3
0<=i2<=(20-8*i8-5*i5-3*i3)/2
0<=i1=20-8*i8-5*i5-3*i3-2*i2
可以用穷举法穷举所有的i
8、"i
5、"i
3、"i2和i1的组合,代入求本利的公式计算出最大值,就是最佳存款方案。
牌照的前两位数字是相同的;乙说:
牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:
四位的车号刚好是一个整数的平方。请根据以上线索求出车号。
*问题分析与算法设计
按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。
*程序与程序注释
#include<stdio.h>
printf("\n平均分为%
5."2f\n",result);}
1.1
1."打鱼还是晒网
中国有句俗语叫“三天打鱼两天晒网”。某人从
1990年1月1日起开始“三天打鱼两天晒网”,问这个人在以后的某一天中是“打鱼”还是“晒网”。
*问题分析与算法设计
根据题意可以将解题过程分为三步:
1)计算从
1990年1月1日开始至指定日期共有多少天;
/*判定year为闰年还是平年,lp=0为平年,非0为闰年*/for(i=1;i<day.month;i++)/*计算本年中自1月1日起的天数*/
day.day+=day_tab[lp];
returnday.day;}*运行结果
Enter year/month/day:1991 10 25
He was fishing at day.
double Aver(int p[],int count) //求出结果,p为整型数组,count为数组大小{double result=0;
for(inti=0;i<count-1;i++) //排序
for(int j=i;j<count;j++){if(p[i]<p[j]){int temp=p[i];
*pow((double)(1+2*
0."0063*12),(double)i2)
*pow((double)(1+3*
0."0069*12),(double)i3)
*pow((double)(1+5*
0."0075*12),(double)i5)
*pow((double)(1+8*
0."0084*12),(double)i8);
for(i=0;i<4;i++)/*假定只有第i个人为窃贱*/{for(j=0;j<4;j++)/*将第i个人设置为1表示窃贱,其余为0*/
if(j==i)a[j]=1;
else a[j]=0;
made fixed deposit for 8 year:
0times
made fixed deposit for 5 year:
4times
made fixed deposit for 3 year:
0times
made fixed deposit for 2 year:
0times
made fixed deposit for 1 year:
如果((年能被4除尽且不能被100除尽)或能被400除尽)
则该年是闰年;
否则不是闰年。
C语言中判断能否整除可以使用求余运算(即求模)
*程序与程序注释
#include<stdio.h>
int days(struct date day);
struct date{
int year;
int month;
int day;
*程序与程序注释
#include<stdio.h>
#include<math.h>
void main(){int i8,i5,i3,i2,i1,n8,n5,n3,n2,n1;
float max=0,term;
for(i8=0;i8<3;i8++)/*穷举所有可能的存款方式*/
for(i5=0;i5<=(20-8*i8)/5;i5++)
0times
Total:
8841."01
可见最佳的存款方案为连续四次存5年期。
4.
51."谁是窃贼
公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中:
甲说:
“乙没有偷,是丁偷的。”
乙说:
“我没有偷,是丙便的。”
丙说:
“甲没有偷,是乙偷的。”
p[i]=p[j];
p[j]=temp;}}
printf("评委打分按顺序:
");
for(int m=0;m<10;m++) //显示排序后结果
printf("%d ",p[m]);
printf("\n");
for(int k=1;k<count-1;k++) //求出去掉首尾的平均分
resu置变量的初始值:
日*/
for(yearday=0,year=1990;year<today.year;year++){term.year=year;
yearday+=days(term);/*计算从1990年至指定年的前一年共有多少天*/}yearday+=days(today);/*加上指定年中到指定日期的天数*/day=yearday%5;/*求余数*/

题目:
青年歌手参加歌曲大奖赛,有10个评委进行打分,试编程求这位选手的平均得分。
3种方法:
分别要求使用到排序,数组,函数,指针。
分析:
这道题的核心程序是排序,将评委打的10个分数利用数组按增序(或降序)排列,计算数组中除了第一个和最后一个分数以外的数的平均分
答案:
#include<stdio.h>
丁说:
“我没有偷。”
请根据这四人的答话判断谁是盗窃者。
*问题分析与算法设计
假设
A、
B、
C、D分别代表四个人,变量的值为1代表该人是窃贱。
由题目已知:
四人中仅有一名是窃贱,且这四个人中的每个人要么说真话,要么说假话,而由于甲、乙、丙三人都说了两句话:
“X没偷,X偷了”,故不论该人是否说谎,他提到的两人中必有一人是小偷。故在列条件表达式时,可以不关心谁说谎,谁说实话。这样,可以列出下列条件表达式:
if(day>0&&day<4) printf("he was fishing at that day.\\n");/*打印结果*/elseprintf("He was sleeping at that day.\\n");}int days(struct date day){staticintday_tab[2][13]=
分析题意,设2000元存20年,其中1年存i1次,2年存i2次,3年存i3次,5年存i5次,8年存i8次,则到期时存款人应得到的本利合计为:2000*(1+rate1)i1*(1+rate2)i2*(1+rate3)i3*(1+rate5)i5*(1+rate8)i8其中rateN为对应存款年限的利率。根据题意还可得到以下限制条件:0<=i8<=2
%d times\\n",n8);
printf("made fixed deposit for 5 year:
%d times\\n",n5);
printf("made fixed deposit for 3 year:
%d times\\n",n3);
printf("made fixed deposit for 2 year:
Enter year/month/day:1992 10 25
He was sleeping at day.
Enter year/month/day:1993 10 25
He was sleeping at day
2.
12."抓交通肇事犯
一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:
};
void main(){struct date today,term;
intyearday,year,day;
printf("Enter year/month/day:
");
scanf("%d%d%d",&today.year,&today.month,&today.day);/*输入日期*/term.month=12;/*设置变量的初始值:
甲说:
”乙没有偷,是丁偷的。”B+D=1
相关文档
最新文档