二级C上机考试考试题库、程序修改题

更新时间:2023-03-15 15:08:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

程序修改题 答案:

1.先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。 例如:当s中字符串为:“ABCDE”时,则t中的字符串应为:“ABCDEEDCBA”。 for(i=0;i

2.从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中,高位仍在高位,低位仍在低位。例如当s中的数为:7654321时,t中的数为:7531。 void fun (long *t) sl=sl*10;

3.将n个无序整数从小到大排序。 for(i=j+1;i

4.将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。

例如,当s中的数为:87653142时,t中的数为:8642。 if(d%2==0) s/=10;

5.计算正整数num的各位上的数字之积。例如,若输入:252,则输出应该是:20。若输入:202,则输出应该是:0。 long k=1; num/=10;

6.将字符串中的字符按逆序输出,但不改变字符串中的内容。例如,若字符串为abcd,则应输出dcba。 void fun(char *a) printf(\

7.用选择法对数组中的n个元素按从小到大的顺序进行排序。 p=j; p=i;

8.删除p所指字符串中的所有空白字符(包括制表符、回车符及换行符)。 输入字符串时用'#'结束输入。

for(i=0,t=0; p[i]; i++) c[t]='\\0';

9.求出s所指字符串最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值NULL。 a=NULL;

if(*r==*p)

10.将s所指字符串中出现的与t1所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。 while(*r)

*a=*r; a++; r++;

11.从s所指字符串中,找出与t所指字符串相同的子串的个数作为函数值返回。例如,当s所指字符串中的内容为:“abcdabfab”,t所指字符串内容为:“ab”,则函数返回整数3。 r++; p++; if(*r=='\\0')

12.:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有为素数的因子)。 例如,若输入整数:2310,则应输出:2、3、5、7、11。 IsPrime(int n) if(!(n%i))

13.求k!(13),所求阶乘的值作为函数值返回。例如:若k=10,则应输出:3628800。 if (k>0)

else if(k==0)

14.将m(1<=m<=10)个字符串连接起来,组成一个新串,放入pt所指存储区中。例如:把3个串:“abc”,“CD”,“EF”连接起来,结果是:“abcCDEF”。 int k, q, i; pt[i]=str[k][i];

15.实现两个整数的交换。例如给a和b分别输入:60和65,输出为:a=65 b=60。 void fun(int *a, int *b) t=*b; *b=*a; *a=t;

16.求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。 m=i;

if(a[k]>a[m])m=k;

17.判断ch中的字符是否与str所指串中的某个字符相同;若相同,什么也不做,若不同,则将其插在串的最后。 void fun(char *str, char ch) if(*str !=ch) str[1]='\\0';

18.计算整数n的阶乘。 result*=n--; return result;

19.将p所指字符串中每个单词的最后一个字母改成大写(这里的\单词\是指有空格隔开的字符串)。例如,若输入:“I am a student to take the examination”则输出:“I aM AstudenT tO takE thE examinatioN”。 if(*p==' ')

*(p-1)=toupper(*(p-1));

20.根据形参m,计算如下公式的值。 t=1+1/2+1/3+1/4+...+1/m

例如,若输入5,则应输出2.283333。 t+=1.0/i; return t;

21.将tt所指字符串中的小写字母都改为对应的大写字母,其他字符不变。 例如,若输入“Ab,cD”,则输出“AB,CD”。 if(('a'<=tt[i])&&(tt[i]<='z')) tt[i]-=32;

22.用冒泡法对6个字符串按由小到大的顺序进行排序。 for(j=i+1; j<6; j++) *(pstr+i)=*(pstr+j);

23.根据整型形参m,计算如下公式的值。 y=1+1/2*2+1/3*3+1/4*4+...+1/m*m。

例如,若m中的值为:5,则应输出:1.463611。 for(i=2; i<=m; i++) y+=1.0/(i*i);

24.通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。 t=*x; *x=y; return(t);

25.给定程序MODI1.C中fun函数的功能是:求s=aa?aa-...-aaa-aa-a(此处aa?aa表示n个a,a和n的值在1至9之间)

例如a=3,n=6,则以上表达式为: s=333333-33333-3333-333-33-3 其值是:296298

a和n是fun函数的形参,表达式的值作为函数值传回main函数。 long s=0, t=0; t=t/10;

26.用下面的公式求π的近似值,直到最后一项的绝对值小于指定的数(参数num)为止: 例如,程序运行后,输入0.0001,则程序输出3.1414.

while (fabs(t)>=num) t=s/n;

27.在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。Fun的功能是计算数组元素中值为正数的平均值(不包括0)。如数组中元素中的值依次为:39,-47,21,2,-8,15,0。则程序的运行结果为:19.250000。 double sum=0.0; sum /=c;

28.计算并输出high以内最大的10个素数之和。high的值由主函数传给fun函数。 若high的值为: 100, 则函数的值为: 732。 while((2<=high)&&(n<10)) yes=0; break;

29.计算并输出下列级数的前N项之和Sn,直到Sn+1 大于q为止,q的值通过形参传入。 SN=2/1+3/2+4/3+??+N+1/N。例如,若q的值为:50.0,则函数值为:49.394948。 s=s+(n+1.)/n; return t;

30.计算s=f(-n)+f(-n+1)+??+f(0)+f(1)+f(2)+??+f(n)的值。例如,当n为5时,函数值应为:10.407143。

|(x+1)/(x-2) x>0且x!=2 f(x)|0 x=0或x=2 |(x-1)/(x-2) x<0 double f(double x) return s;

31.(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不等,z和y的值不等。 例如,当x的值为9、y的值为11、z的值为15时,函数值为-3.50。 #define FU(m,n) ((m)/(n)) return (value);

32.利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值; 反之,返回-1。 int fun(int a[],int m) else if(m>a[mid])

33.用二分法求方程2x(3)-4x(2)+3x-6=0的一个根,并要求绝对误差不超过0.001。 例如,若给m输入-100,给n输入90,则函数求得的一个根值为2.000 double r;

while(fabs(n-m)>0.001)

34.求出两个非零正整数的最大公约数,并作为函数值返回。

例如,若给num1和num2输入49和21,则输出的最大公约数为7;若给num1和num2分别输

入27和81,则输出最大公约数为27。 t=a;a=b;b=t; return(b);

35.按以下递归公式求函数值。 fun(n)=|10 (n=1) |fun(n-1)+2 (n>1)

例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。 int fun(int n) if(n==1)

36.用递归算法计算斐波拉契数列中第n项的值。从第一项起,斐波拉契数列为:1、1、2、3、5、8、13、21、?

例如,若给n输入7,该项的斐波拉契数值为:13。 switch(g)

case 1: return 1; case 2:return 1;

37.按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。

例如:s所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。 sum=0.0;

if((i+1)%5==0)

38.把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。例如,输入的数为:55 12 34输出结果应当是:a=55.0 , b=34.0 , c=12.0。 float k; if(*a<*c)

39.将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。 例如,若输入:77777,则输出将是:32767。 n=*p-'0';

n=n*8+*p-'0';

40.将p所指字符串中的所有字符复制到b 中,要求每复制三个字符之后插入一个空格。 例如,在调用fun函数之前给a输入字符串:ABCDEFGHIJK, 调用函数之后,字符数组b中的内容则为:ABC DEF GHI JK。 b[k]=*p; b[k++]='';

41.给一维数组a输入任意4个整数, 并按下例的规律输出。例如输入1、2、3、4, 程序运行后将输出以下方阵。

本文来源:https://www.bwwdw.com/article/sy6v.html

Top