(2)printf(\
【参考答案】将a、b两个两位正整数合并成一个新的整数放在c中。合并
的方式是:将a中的十位和个位数依次放在变量c的千位和十位 void fun(int a, int b, long *c)
{ /*b 获取b的个位,a/10 获取a的十位,a 获取a的个位,b/10
获取b的十位*/
*c=b/10+(a)*10+(b)*100+(a/10)*1000; }
二级 C_第42套上机题
【参考答案】将形参n所指变量中,各位上为偶数的数去掉,剩余的数按
原来从高位到低位的顺序组成一个新数 (1) 10 (2) 0 (3) x
【参考答案】给n输入5,则输出120.000000。 (1)if( n==0)
(2)result *=n--;或{result *=n; n--;}
【参考答案】将一个数字字符串转换为一个整数(不得调用C语言提供的将
字符串转换为整数的函数)。例如,若输入字符串\-1234\,则函数把它
转换为整数值-1234。 long fun ( char *p) {
long n=0; int flag=1;
if(*p=='-') /*负数时置flag为-1*/ {p++;flag= -1;}
else if(*p=='+') /*正数时置flag为1*/ p++;
while(*p!='\\0')
{n=n*10+*p-'0';/*将字符串转成相应的整数*/ p++; }
return n*flag; }
二级 C_第43套上机题
【参考答案】把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[ 1]、a[2]…中,把奇数从数组中删除,偶数的个数通过函数值返回。 (1) a[i]%2 (2) a[j] (3) j
【参考答案】当给n输入5时,函数值为18;当给n输入3时,函数值为14。 (1)int fun (int n)
(2)if (n==1)
【参考答案】使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*
号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。 void fun( char *a,int n ) {
int i=0,k=0; char *p, *t;
p=t=a;/*将指针移动到字符串末尾*/ while(*t) t++;
t--; /*从后往前如果是'*' 则使k++,找到最后一个*所在的位置,
并记录'*'的个数*/
while(*t=='*')/*指针t指向前一个,同时标量k增加一*/ {k++;t--;} if(k>n)
{while(*p&&p a[i]='\\0'; } } 二级 C_第44套上机题 【参考答案】有N×N矩阵,以主对角线为对称线,对称元素相加并将结果 存放在左下三角元素中,右上三角元素置为0。 (1) [N] (2) t[i][j] (3) t[j][i] 【参考答案】计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值 。其中x和y的值不相等,z和y的值不相等。 (1)#define FU(m,n) (m)/(n) (2)return (value); 【参考答案】将字符串中的前导*号全部删除,中间和尾部的*号不删除。 void fun( char *a ) { char *p=a; while(*p=='*') p++;/*指针p指向字符串第一个字母*/ for(;*p!='\\0';p++,a++) *a=*p; /*从第一个字母开始,其后的字符都放入指针a所指的字符串 中*/ *a='\\0'; /*在字符串最后加上字符串结束标识*/ } 二级 C_第45套上机题 【参考答案】从文件中找出指定学号的学生数据,读入此学生数据,对该 学生的分数进行修改,使每门课的分数加3分 (1)fp (2) == (3) fp 【参考答案】先对头两个字符进行排序,然后把第三个字符插入到前两个 字符中,插入后前三个字符依然有序 (1)n=strlen( aa ) ; (2)ch=aa[i]; 【参考答案】找出学生的最高分,并由函数值返回。 double fun( STREC *h ) { double max=h->s; while(h!=NULL) /*通过循环找到最高分数*/ {if(max return max; } 二级 C_第46套上机题 【参考答案】若x=2.5,函数值为1.917915。 (1)x (2)n (3)fabs(t) 【参考答案】求整数x的y次方的低3位值。例如,整数5的6次方为15625, 此值的低3位值为625。 (1)for(i=1;i<=y;i++) (2)t=t00; 【参考答案】计算并输出当x<0.97时,如下多项式的值,直到|Sn-Sn- 1|<0.000001为止。 double fun(double x) { double s1=1.0,p=1.0,sum=0.0,s0,t=1.0; int n=1; do { s0=s1; sum+=s0; t*=n; p*=(0.5-n+1)*x; s1=p/t; n++; }while(fabs(s1-s0)>=1e-6); return sum; } 二级 C_第47套上机题 【参考答案】是根据形参炸响,只算一次响声,第一次响声是在第0s。 (1)i (2)t++ (3)count 【参考答案】根据输入的三个边长(整型值),判断能否构成三角形。若能 构成等边三角形,则返回3; (1)return 3; (2)return 1; 【参考答案】计算并输出3~n之间所有素数的平方根之和。 double fun(int n) { int m,k,i; double s=0.0; for(m=3;m<=n;m++) { k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>=k+1) s+=sqrt(m); } return s; } 二级 C_第48套上机题 【参考答案】逆置数组元素中的值。 (1) n/2 (2) i (3) a[n-i-1]或a[n-1-i] 【参考答案】将一个由八进制数字字符组成的字符串转换成十进制整数 (1)n= *p-'0'; (2)n=n*8+*p-'0'; 【参考答案】:函数返回该学号的学生数据,指定的学号在主函数中输入 。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1, STREC fun( STREC *a, char *b ) {int i; STREC str={\若没找到指定的学号,在结构体变量中给学 号置空串,给成绩置-1*/ for(i=0;i if(strcmp(a[i].num,b)==0) /*找到指定学号的学生数据*/ str=a[i]; return str; /*返回学生记录*/ } 二级 C_第49套上机题 【参考答案】把形参a所指数组中的最大值放在a[0]中,接着求出a所指数 组中的最小值放在a[1]中,再把a所指数组元素中的次大值放在a[2]中, (1) a[] (2) 2 (3) i+1 【参考答案】 (1)sum=0.0; (2)if((i+1)%5==0) 按顺序给s所指数组中的元素赋予从2开始的偶数,然后再按顺序对每五个 元素求一个平均值, 【参考答案】把低于平均分的学生数据放入b所指的数组中,低于平均分 的学生人数通过形参n传回,平均分通过函数值返回。 double fun( STREC *a, STREC *b, int *n ) { int i,j=0; double av=0.0; for(i=0;i av=av/N; /*求平均值*/ for(i=0;i if(a[i].s *n=j; /*指针传回低于平均值的学生人数*/ return av; /*返回平均值*/ } 二级 C_第50套上机题 【参考答案】把形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1] 、a[2]、……中,把偶数从数组中删除 (1)1 (2) j++ (3)j 【参考答案】求两个非零正整数的最大公约数,并作为函数值返回。 (1)t=a;a=b;b=t; (2)return(b);或return b; 【参考答案】删除字符串中所有的*号。编写函数时,不得使用C语言提供 的字符串函数 void fun( char *a ) { int i,j=0; for(i=0;a[i]!='\\0';i++) if(a[i]!='*')