当前位置:首页 > c语言竞赛题目精选
*********************************************************************
1、过滤出1--10000之间所有相邻两位数相同的,比如12336等过滤掉,剩下的数据输出并计算个数。
2、一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:拍照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;并使数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索编程求出车号。
3、一辆汽车加满油后,可行使n千米。旅途中有若干个加油站。若要使沿途加油次数最少,设计一个有效算法,对于给定的n和k个加油站位置,指出应在那些加油站停靠加油才能使加油次数最少。输入数据中,第一行有2个正整数,分别表示汽车加满油后可行使n千米,且旅途中有k个加油站。接下来的1行中,有k+1个整数,表示第k个加油站与第k-1个加油站之间的距离。第0个加油站表示出发地,汽车已加满油。第k+1个加油站表示目地地。输出为最少的加油次数,如果无法到达目的地,则输出“No Solution”。 提示:
把两加油站的距离放在数组中,a[1..k]表示从起始位置开始跑,经过k个加油站,a[i]表示第i-1个加油站到第i个加油站的距离。汽车在运行的过程中如果能跑到下一个站则不加油,否则要加油。
输入数据示例 7 7
1 2 3 4 5 1 6 6 输出数据 4
4、在一个黑袋中共有m个白球和n个黑球(m,n>0),袋外还有一些白球。每次随机从袋中取出两球,若取出的球颜色相同,则放回一白球;若取出两球颜色不同,则放回一黑球,直到取完(取出最后两球不放回)。请编程求多少种取法,并说明最后两球的颜色。(用递归方法求解)
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; double b=n; while(fabs(a-b)>1E-15) {
a=(a+b)/2; b=________;
}
printf(\
第五题:轮转数(每个字符依次向右移) 例:
字符串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='E' A ABA ABCBA ABCDCBA ABCDEDCBA
void h(int space,char x) { int i;
if(x<'A'||x>'Z') return; _________________;
for(i=0;i for(i=0;i 第七题:中奖计算 函数返回所中的最大连续数字的个数 int g(int a,int b) { char sa[]=\char sb[]=\int n; int i,j; sprintf(sa,\sprintf(sb,\for(i=0;i<8;i++) { for(j=1;j<=8-i;j++) { char t=______; sa[i+j]=0; if(strstr(sb,sa+i)) { if(j>n) ________; } sa[i+j]=t; } } return n; } ******************************************************************************* 一、 倒序数是将一个阿拉伯数的各位上的数字以逆序的形式写成的数。该阿拉 伯数的第一位变成最后位,最后位变成第一位。例如数1245被写成5421。注意产生的新数字前边所有的数字0是被略去的。倒序数的尾部无多余的 数字0。请将阿拉伯数转变为倒序数。 输入 输入的第一行仅有一个正整数n,表示有n组测试数据。接下来有n行,每一行是一组测试数据,长度不超过100。每一行上的字符串表示一个非负整数,它是你需要转换的数。 输出 对每一组测试数据在一行上输出倒序数,该倒序数中前导的数字0被略去了。 输入样例 输出样例 3 24 42 43400 434 305 503 (25分) 二、 对一个正整数n,求出n!中末尾0的个数。 输入 输入有若干行。每一行上有一个整数T,是测试数据组数,接着有T行,每一行包含一个确定的正整数n(n≤1000000000)。 输出 对输入行中的每一个数据n,输出一行,其内容是n!中末尾0的个数。 输入样例 输出样例 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的长度在1—1000000之间。最后一组数据后为句号(.)。 输出 每个字符串s输出最大的n满足s=an,其中a为任意字符串。 输入样例 输出样例 abcd 1 aaaa 4 ababab 3 (25分) 四、 若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、 6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,
共分享92篇相关文档