c语言竞赛题目精选,c语言竞赛题目精选

1、*1、过滤出 1-10000 之间所有相邻两位数相同的,比如 12336 等过滤掉, 剩下的数据输出并计算个数。 2、一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没记 住车号,只记下车号的一些特征。甲说:拍照的前两位数字是相同的;乙说: 牌照的后两位数字是相同的,但与前两位不同;并使数学家,他说:四位的车 号刚好是一个整数的平方。请根据以上线索编程求出车号。 3、一辆汽车加满油后,可行使 n 千米。旅途中有若干个加油站。若要使沿 途加油次数最少,设计一个有效算法,对于给定的 n 和 k 个加油站位置,指出 应在那些加油站停靠加油才能使加油次数最少。输入数据中,第一行有 2 个正 整数,分别表示汽车加满油后可行使 n 千米,且旅途中有 k 个加油站。接下来 的 1 行中,有 k+1 个整数,表示第 k 个加油站与第 k-1 个加油站之间的距离。 第 0 个加油站表示出发地,汽车已加满油。第 k+1 个加油站表示目地地。输出 为最少的加油次数,如果无法到达目的地,则输出“No Solution” 。提示:把两加油站的距离放在数组中,a1.k表示从起始位置开始跑,经过 k 个 。

2、加油站,ai表示第 i-1 个加油站到第 i 个加油站的距离。汽车在运行的过程中 如果能跑到下一个站则不加油,否则要加油。 输入数据示例 7 7 1 2 3 4 5 1 6 6 输出数据 4 4、在一个黑袋中共有 m 个白球和 n 个黑球(m,n0),袋外还有一些白球。 每次随机从袋中取出两球,若取出的球颜色相同,则放回一白球;若取出两球 颜色不同,则放回一黑球,直到取完(取出最后两球不放回) 。请编程求多少种 取法,并说明最后两球的颜色。 (用递归方法求解) 5、一个长 1000 单元的数组,每单元按序列放数据, (从 0 单元开始一次放 入 1,2,3,.,1000),输入 m,n,m 表示从 m 单元开始取出长度 n 的数据,插 入到 0 单元前面,0 到 m-1 单元一次后移到取出数据位置,经过连续 k 次操作 后,每次 m,n 数据不同,最后输出这 1000 单元数组中的数据。 输入数据示例(3 表示 k=3,以下三行是 m,n 的值) 。 3 9,8 18,9 100,89 * * 第二题: 用迭代法求 2 的平方根 double n=2; double a=0; doub。

3、le b=n; while(fabs(a-b)1E-15) a=(a+b)/2; b=_; printf(“%fn“,a); 第五题:轮转数(每个字符依次向右移) 例: 字符串 abcd 经过一次轮转后为 dabc 此时位移记作 1 字符串 abcd 进过两次轮转后为 cdab 此时位移记作 2 以下代码为求字符串 S,经过 n 次位移后的新字符串 void shift(char *s,int n) char *p; char *q; int len=strlen(s); if(len=0) return; char *s2=(char *)malloc(_); p=s; q=s2+n%len; while(*p) *q+=*p+;if(q-s2)=len)*q=_;q=s2; strcpy(s,s2); free(s2); 第六题: 金字塔数 space 为塔底边距离左边的空白长度 x 塔底中心字母 例:当 space=0,x=C 输出:A ABA ABCBA 当 space=2,x=EAABAABCBAABCDCBAABCDEDCBAvoid h(int space,char x)。

4、 int i; if(xZ) return; _; for(i=0;in) _;sai+j=t; return n; * * 一、 倒序数是将一个阿拉伯数的各位上的数字以逆序的形式写成的数。该阿拉 伯数的第一位变成最后位,最后位变成第一位。例如数 1245 被写成 5421。注意产生的新数字前边所有的数字 0 是被略去的。倒序数的尾部无多余的数字 0。请将阿拉伯数转变为倒序数。 输入 输入的第一行仅有一个正整数 n,表示有 n 组测试数据。接下来有 n 行,每 一行是一组测试数据,长度不超过 100。每一行上的字符串表示一个非负整 数,它是你需要转换的数。 输出 对每一组测试数据在一行上输出倒序数,该倒序数中前导的数字 0 被略去了。输入样例 输出样例 3 24 42 43400 434 305503 (25 分)二、 对一个正整数 n,求出 n!中末尾 0 的个数。 输入 输入有若干行。每一行上有一个整数 T,是测试数据组数,接着有 T 行,每 一行包含一个确定的正整数 n(n1000000000) 。 输出 对输入行中的每一个数据 n,输出一行,其内容是 n!中末尾 0 的个数。 。

5、输入样例 输出样例 3 3 0 100 24 1024 253 (25 分)三、 给定两个字符串 a 和 b,定义式子 a*b 表示两个字符串的连接。例如a=“abc” ,b=“def” ,则 a*b=“abcdef” 。如果将连接看成乘法,则按照普遍的方法,一个非负整数的幂表示为:a0=“” (the empty string) , a(n+1)=a*(an) 。 输入 输入字符串 s,每组样例一行,s 为可打印字符。s 的长度在 11000000 之间。最后一组数据后为句号(.) 。输出 每个字符串 s 输出最大的 n 满足 s=an,其中 a 为任意字符串。 输入样例 输出样例abcd 1aaaa 4ababab 3 (25 分)四、 若两个正整数的和为素数,则这两个正整数称之为“素数伴侣” ,如 2 和 5、6 和 13,它们能应用于通信加密。现在密码学会请你设计一个程序, 从已有的 N(N 为偶数)个正整数中挑选出若干对组成“素数伴侣” ,挑 选方案多种多样,例如有 4 个正整数:2,5,6,13,如果将 5 和 6 分为 一组中只能得到一组“素数伴侣” ,而将 2 和 5、。

6、6 和 13 编组将得到两组 “素数伴侣” ,能组成“素数伴侣”最多的方案称为“最佳方案” ,当然密 码学会希望你寻找出“最佳方案” 。 输入 输入文件的第一行有一个正偶数 N(N200) ,表示待挑选的自然数的个数。 第二行给出 N 个不超过 30000 的正整数,相邻的两个数之间用一个空格 分开。 输出 对每个正整数,输出一个整数 K,表示你求得的“最佳方案”组成“素数伴侣” 的对数。 输入样例 输出样例 42 2 5 6 13 * * 蛇行矩阵 【问题描述】 蛇形矩阵是由 1 开始的自然数依次排列成的一个矩阵上三角形。【要求】 【数据输入】本题有多组数据,每组数据由一个正整数 N 组成。 (N 不大于 100)【数据输出】对于每一组数据,输出一个 N 行的蛇形矩阵。两组输出之间不要 额外的空行。矩阵三角中同一行的数字用一个空格分开。行尾不要多余的空格。【样例输入】 5【样例输出】 1 3 6 10 15 2 5 9 14 4 8 13 7 12 11 敲七 【问题描述】 输出 7 和 7 的倍数,还有包含 7 的数字例如(17,27,37.70,71,72,73.)【要求】 【数。

7、据输入】一个整数 N。(N 不大于 30000)【数据输出】从小到大排列的不大于 N 的与 7 有关的数字,每行一个。【样例输入】 20【样例输出】 7 14 17小希的数表 【问题描述】 Gardon 昨天给小希布置了一道作业,即根据一张由不超过 5000 的 N(3=10)convert(result+1, n/10);*result = n%10; 3、递归实现回文判断(如:abcdedbca 就是回文,判断一个面试者对递归理解的简单程序)int find(char *str, int n) if(n=n; i-) resultj = *source+;resultj+1 = 0;find(source, result, n-1); 5、分解成质因数(如 435234=251*17*17*3*2,据说是华为笔试题)void prim(int m, int n) if(mn) while(m%n != 0) n+;m /= n;prim(m, n);printf(“%d*“, n);9、有 4 种面值的邮票很多枚,这 4 种邮票面值分别 1, 4, 12, 21,现从多张中最多任取 5 张进行组合,求取出这些邮票的最大连续组合值。 (据说是华为 2003 年校园招聘笔试题)#define N 5#define M 5int k, Found, FlagN;int StampM = 0, 1, 4, 12, 21;/ 在剩余张数 n 中组合出面值和 Valueint Combine(int n, int Value) if(n = 0 int Sum = 0;for(int i=0; i0; i+)if(Value-Stampi = 0) Flagk+ = i;Combine(n-1, Value-Stampi);Flag-k = 0;return Found;int main(int argc, char* argv) for(int i=1; Combine(N, i); i+, Found=0);10、大整数数相乘的问题。 (这是 2002 年在一考研班上遇到的算法题)void Multiple(char A, char B, char C) int TMP, In=0, LenA=-1, LenB=-。

《c语言竞赛题目精选》由会员ji****72分享,可在线阅读,更多相关《c语言竞赛题目精选》请在金锄头文库上搜索。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值