2015年计算机二级C语言上机操作题及答案(22)
发布时间:2011/7/8 11:33:14 来源:城市学习网 编辑:ziteng
第22套
填空题
给定给定程序中,函数FUN的功能是:在形参S所指字符串中的每个数字字符之后插入一个*号。
例如,形参S所指的字符串为:def35adh3kjsdf7。执行结果为:def3*5adh3*kjsdf7*。
注意:部分源程序给出如下
请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
试题程序:#include
void fun(char *s)
{
int i, j, n;
for (i=0; s[i]!='\0'; i++)
if (s[i]>='0' ___1___ s[i]<='9')
{
n = 0;
while (s[i+1+n] != ___2___)
n++;
for (j=i+n+1; j>i; j--)
s[j+1] = ___3___;
s[j+1] = '*';
i = i+1;
}
}
main()
{
char s[80] = "ba3a54cd23a";
printf("\nThe original string is : %s\n", s);
fun(s);
printf("\nThe result is : %s\n", s);
}
第1处填空:&&
第2处填空:0
第3处填空:s[j]或*(s+j) [NextPage] 改错题
下列给定程序中,函数FUN的功能是:根据整型形参M,计算如下公式的值,
例如,若M中的值为5,则应输出:1.463611。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!
试题程序:#include
#include
double fun(int m)
{
double y = 1.0;
int i;
/********found********/
for (i=2; i /********found********/
y += 1/(i*i);
return (y);
}
main()
{
int n = 5;
printf("\nThe result is \n", fun(n));
}
第1处:for (i=2;i第2处:y+=1/(i*i);应改为y+=1.0/(i*i); [NextPage] 编程题
N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点,请编写函数fun,它的功能是找出学生的最高分,由函数返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:#include
#include
#define N 8
struct slist
{
double s;
struct slist *next;
};
typedef struct slist STREC;
double fun( STREC *h )
{
}
STREC *creat( double *s)
{
STREC *h,*p,*q;
int i=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->s=0;
while(i {
q=(STREC*)malloc(sizeof(STREC));
q->s=s[i];
i++;
p->next=q;
p=q;
}
p->next=0;
return h;
}
outlist(STREC *h)
{
STREC *p;
p=h->next;
printf("head");
do
{
printf("->%2.0f",p->s);
p=p->next;
}
while(p!=0);
printf("\n\n");
}
main()
{
double s[N]={85,76,69,85,91,72,64,87}, max;
STREC *h;
FILE *out;
h=creat(s);
outlist(h);
max=fun(h);
printf("max=%6.1f\n",max);
out=fopen("out.dat", "w");
fprintf(out, "max=%6.1f",max);
fclose(out);
}
答案是:
double fun(STREC *h)
{
double max;
STREC *q=h;
max=h->s;
do
{
if(q->s>max)
max=q->s;
q=q->next;
}
while(q!=0);
return max;
}