C语言编程及上机题 联系客服

发布时间 : 星期二 文章C语言编程及上机题更新完毕开始阅读75d743e55ef7ba0d4a733b4b

C语言编程及上机题

1. 一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下,问第10次落

地时,共经过多少米?第10次反弹多高?请编程实现。

2. 试编程序,找出1至99之间的全部同构数。同构数是这样一组数:它出现在平方数的

右边。例如:5是25右边的数,25是625右边的数,5和25都是同构数。 3. 有一分数序列:

23581321,,,,,,??? 1235813

编写求这个数列前20项之和的程序。

4. 编写满足条件1+2+3+?+n≥500的最小n及和s的程序。

sin(x)?x?x33!?x55!?x77!?????(?1)nx2n?1(2n?1)!????5. 已知正弦值近似的多项式计算公式为:

输入x和ε,编写按上述公式计算sin(x)近似值且误差小于ε的程序。 设:x=1.57 ε=0.000001

6. 有一高楼,有阶梯若干级,每步跨2级,最后余1级;每步跨3级,最后余2级;每步

跨5级,最后余4级;每步跨6级,最后余5级;每步跨7级,正好到楼顶。计算该楼至少多少级。

7. 从键盘输入若干个整数(数据个数少于50个),其值在0至4的范围内,用-1作为输

入结束标志。统计每个整数的个数。试编程。

8. 求出1至599中能被3整除,且至少有一位数字为5的所有整数。如15,51,513等均

是满足条件的整数。要求每行输出六个数。

9. 用以下的递归公式求数列a0,a1,??,a19,递归公式为:

a0=0; a1=1; a2=1; ai = ai-3 +2ai-2 +ai-1(当i大于2时)。 10. 求满足条件abcd=(ab)2+(cd)2有所有四位数。

11. 生成一个数列的前100项。该数列的第一、第二项分别为2、3,以后每个奇数编号的

?e2??1??211414126????(?2?1n)???? (2?n()n?0,1,2,???)????????? ? ???? (n?1,2,3???)1!32!53n?!1)37!(2?n(2?n?1)项是前两项之和,偶数编号的项是前两项之差(前项减后项)。

12. 计算自然数e和π的值,e的值精确到小数点后6位。求e的近似值的计算公式:

求π/2的近似值的计算公式为: 取n=1000时的π值。

x?f(x2)?x2f(x1)x?1f(x2)?f(x1)13. 使用弦截法解下列方程的根:x3-5x2+16x-30=0。弦截法为:

1)设f(x)= x3-5x2+16x-30。

2)取两个不同的点x1和x2,且使f(x1)·f(x2)<0。

3)连接f(x1)和f(x2)得一弦线交X轴于x,则x点的坐标为: 求出x点的f(x)值。

4)若f(x)与f(x1)的符号相同,则根在(x,x2)区间内,将x作为新的x1;否则根在(x1,x)区间内,将x作为新的x2。

5)重复第3,4步,直到f(x)的绝对值小于0.0000001为上。此时将x作为该放程的近似根。

14. 用如下的迭代公式可以求的值,迭代公式为:

yn?1?23yn?x23yny?3x初始值y=x,精度要求为:| yn+1-yn|<=10-5,

依次求出当x=0.75,3.3,6.5,20.9时,对应的y值。

15. 编程题。任意输入10个整数,每一个整数的绝对值小于104,要求打印出每一个整数,

每一个整数的各位数字之和,以及这10个整数的累加和。 如输入为:476 1048 367?? 则输出为:476 17 1048 13 367 16 ??

16. 如果整数A的全部因子(包括1,但不包括A本身)之和等于B;且整数B的全部因

子(包括1,但不包括B本身)之和等于A,则将整数A和B称为亲密数。求3000以

x3

arcsinx?x?2?3?1?32?4?5x?51?3?52?4?6?7x?...?7(2n)!22n?(n!)?(2n?1)2x2n?1?...17. 18.

19.

20. 21. 22.

23.

24.

25. 26. 27.

内的全部亲密数。

arcsinx的级数展开式为:

求当x=0.5,n=10时,arcsin(x)的前11项的近似值。

mn

已知m和n均为小于15的正整数,设x=5,y=5,求x与y的最后三位数相同,且m+n之和为最小的m,n,x,y值。若无解,则输出“No solutions!”。

39

注:1)如5和5的值分别为125和1953125,它们的最后三位数相同。 2)用长整型数表示5的方幂。

求满足下列条件的三位数n,它除以11(整数相除)所得到的商等于n的各位数字的平方和,且其中至少有二位数字相同的数。如:131,它除以11的商为11,各位数字的平方和为11,又如550,也是满足条件的三位数。 找出所有满足下列条件的正整数对a、b:(1)a+b=99;(2)a

编程验证下列各题:设n是一个两位正整数,s1是n的各位数之和,s2是2*n的各位数字之和。若s1=s2,则n是9的倍数。输出所有满足这些条件的n、s1、s2。

雨水淋湿了算术书的一道题目,9个数字只能看清其中的4个,第一个数字虽然模糊不清,但可以看出不是1(即a不为1):[a*(b3+c)]2=8de9

其中a、b、c、d、e表示淋湿的数字,请编写程序求出这些数字。 首先将正整数:121、221、2198、1234、2111、0(“0”只作结束标记)存入整型数组中,然后在这些正整数中找出连续两个数字(或更多个数字)同为奇数字或同为偶数字的所有正整数。例如:221便是这样的一个数。

编程分别确定:什么进制下,891能被198整除;什么进制下,952能被259整除;什么进制下,561能被165整除。对上述每组数据,求出一个满足整除条件且大于9的最小进制基数d。将原来的一对数据、求出的进制数d以及原来一对数所对应的十进制数值作为一组输出,输出时每组占一行。

定义一个含有30个整型元素的数组,按顺序分别赋予从2开始的偶数;然后按顺序每五个数求出一个平均值,放在另一个数组中并输出。试编程。

通过赋初值按行顺序给一个2×3的二维数组赋予2、4、6、?等偶数,然后按列的顺序输出该数组。试编程。

通过循环按行顺序为一个5×5的二维数组赋1到25的自然数,然后输出该数组的左下半三角。试编程。

28. 数组a包括10个整数,把a中所有的后项除以前项之商取整后存入数组b,并按每行3

个元素的格式输出数组b。试编程。 29. 从键盘上输入一个字符,用折半查找法找出该字符在已排序的字符串a中的位置。若该

字符不在a中,则打印出**。试编程。

30. 从键盘上输入两个字符串a和b,要求不用库函数strcat把串b的前五个字符连接到串

a中;如果b的长度小于5,则把b的所有元素都连接到a中。试编程。 31. 从键盘输入一字符串a,并在a串中的最大元素后边插入字符串b(b[]=”ab”)。试编程。 32. 若有说明:int a[2][3]={{1,2,3},{4,5,6}};现要将a的行和列的元素互换后存到另一个二

维数组b中。试编程。

33. 编程实现,按如下递归公式,输出菲波那契数列的前20项的值。菲波那契数列的递归

定义如下:当n=0时,f0=0,当n=1时,f1=1,当n>1时,fn=fn-1+fn-2。 34. 编写一个函数,该函数能将字符数组中的字符顺序颠倒。由主函数输入五个不同的字符

串,每个字符串的长度大于7,调用上述函数分别颠倒各个字符串中字符的顺序,并输出结果。每行输出一个字符串。

35. 编程将一字符串做压缩处理。编程要求如下:(1)编写一个函数int compress(char s[ ]),

将s中连续出现的多个相同字符压缩为一个字符,统计被删除的字符个数。返回被删除的字符个数。(2)编写主函数main,从键盘上读入一行字符数据放入一个字符型数组中,调用compress函数对该字符数组中的字符做压缩处理,将压缩后的字符串输出。(3)用以下数据测试程序:@@@@@@ I wwilll successful &&&&&& and you too !!!!!###########

36. 编写一程序,将一字符串插入到另一字符串的指定位置。编程要求如下:(1)编写一个

函数char *insert_str(char *s1, char *s2, int n),将字符串s2插入到字符串s2中第n个字符(即数组下标为n-1的元素)开始的位置上,返回s1的首址;(2)编写主函数main,声明一个字符数组s存储由26个小写英文字符组成的字符串,从键盘读入若干组数据,每组有两个数据,第一个按整型读入,第二个按字符串读入。当输入的一组数据中的整型数为负数时,停止程序运行。每读入一组数据后,调用insert_str函数,按第1个数据的值将第2个数据(字符串)插入到字符串s中对应的位置上,每当在s中插入一个字符串后,将s字符串输出。(3)键盘输入两组测试数据为:10 9876和31共处 ExAmPLE。

37. 改错题(可调整语句顺序,增加少量变量说明或编译预处理命令,不准增减语句行。

以下改错题同此要求):从键盘上输入十个字符串,从中求出最长的一个字符串。 #include main( )

{ int i, maxlen, len;

char inline[10][100], maxline[100]; for (i=0; i<10; i++){ gets(inline[i]);

printf(“%s\\n”, inline[i]); }

maxlen=0;

for(i=0; i<10; i++){ strlenth (inline[i],len);

if (len>maxlen) strcpy(maxline, inline[i]), maxlen=len; }

printf (“max string is: %s\\n maxlen=%d\\n”, maxline, maxlen); }

strlenth(char p, int len)

{ len= =0;

while (p[len]!=?\\0?) ++len; }

cos(x)?1?x22!?x44!?x66!?x88!?????(?1)nx2n(2n)!????38. 改错题:cos(x)的计算公式为:

下面的程序用来分别求出x=0.0,0.5,3.14159/4,1.5时的cos(x)的值。精度要求:当

2 n

通项x/(2n)!小于等于0.0000001为止。含有错误的源程序为: # include # include main( )

{ int n; float f;

printf (“cos(0.0)=%f \\n”, cos1(0.0)); printf (“cos(0.5)=%f \\n”, cos1(0.5));

printf (“cos(%f)=%f \\n”, 3.14159/4, cos1(3.14159/4)); printf (“cos(1.5)=%f \\n”, cos1(1.5)); }

float cos1(float x) { int n; float s, term; term=1; s=0; n=1; while (term>=1e-7){ s+=term;

term=-x*x/n*(n+1); n+=2; } return s; }

39. 改错题:下面程序的功能为:对键盘输入的每个字母(不分大小写)出现的次数进行统

计。26种字母出现次数分别存放在数组的前26个元素中,最后一个元素中存放非字母字符出现的次数。含有错误的源程序如下: #include void count(letter) int letter[ ]; { int ch, i;

for (i=0; i<27; i++) letter[i]=0;

while ((ch=getchar())!=EOF) if (ch>=?A?&&ch<=?z?) ++ letter[ch];

else if (ch>=?a?&&ch<=?z?) ++letter[ch]; else ++letter[27]; } main( )

{ int le[27], i; count(le); for(; i=0; i<26; i++)

{ printf(“%c=d”, i+‘a’, lc[i]); if ((i+1)/8= =0) printf(“\\n”); }

printf (“other=d”, le[27]); printf(“\\n”); }