2015年计算机二级C语言上机操作题及答案(21)
发布时间:2011/7/8 11:32:31 来源:城市学习网 编辑:ziteng
第21套
填空题
给定程序中,函数FUN的功能是:将S所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符原有的先后次序。
例如,形参S所指的字符串为:def35adh3kjsdf7.执行结果为:defadhkjsdf3537.
注意:部分源程序给出如下
请勿改动主函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h>
void fun(char *s)
{
int i, j = 0, k = 0;
char t1[80], t2[80];
for(i=0; s[i]!='\0'; i++)
if(s[i]>='0' && s[i]<='9')
{
t2[j]=s[i];
___1___;
}
else
{
t1[k++] = s[i];
}
t2[j] = 0;
t1[k] = 0;
for (i=0; i<k; i++)
___2___;
for (i=0; i<___3___; i++)
s[k+i] = t2[i];
}
main()
{
char s[80] = "ba3a54j7sd567sdffs";
printf("\nThe original string is : %s\n", s);
fun(s);
printf("\nThe result is : %s\n", s);
}
第1处填空:j++或++j或j+=1或j=j+1
第2处填空:s[i]=t1[i]
第3处填空:j
改错题
下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数FUN的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。
请改正程序中的错误,使它能得出正确结果。
注意:不要改动MAIN函数,不得增行或删行,也不要更改程序的结构!
试题程序:#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
typedef struct aa
{
int data;
struct aa *next;
} NODE;
fun(NODE *h)
{
int max = -1;
NODE *p;
/********found********/
p = h;
while (p)
{
if (p->data > max)
max = p->data;
/********found********/
p=h->next;
}
return max;
}
outresult(int s, FILE *pf)
{
fprintf(pf, "\nThe max in link : %d\n", s);
}
NODE *creatlink(int n, int m)
{
NODE *h, *p, *s;
int i;
h = p = (NODE*)malloc(sizeof(NODE));
h->data = 9999;
for (i=1; i<=n; i++)
{
s = (NODE*)malloc(sizeof(NODE));
s->data = rand()%m;
s->next = p->next;
p->next = s;
p = p->next;
}
p->next = NULL;
return h;
}
outlink(NODE *h, FILE *pf)
{
NODE *p;
p = h->next;
fprintf(pf, "\nTHE LIST:\n\n HEAD");
while (p)
{
fprintf(pf, "->%d ", p->data);
p = p->next;
}
fprintf(pf, "\n");
}
main()
{
NODE *head;
int m;
head = creatlink(12, 100);
outlink(head, stdout);
m = fun(head);
printf("\nTHE RESULT :\n");
outresult(m, stdout);
}
第1处:p=h;应改为p=h->next;
第2处:p=h->next;应改为p=p->next; [NextPage] 编程题
请编写fun函数对长度为7个字符的字符串,除首,尾字符外,其他5个字符按ASCII码降序排列
例如原来的字符串为,CEAecda,则排序后输出为CedcEAa
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:#include <stdio.h>
#include <ctype.h>
#include <conio.h>
#include <string.h>
void fun( char *s,int num)
{
}
main()
{
char s[10];
FILE *out;
printf("ê?è?7??×?·?μ?×?·?′?:");
gets(s);
fun(s,7);
printf("\n%s", s);
out=fopen("out.dat", "w");
strcpy(s, "ceaEDCA");
fprintf(out, "%s", s);
fclose(out);
}
答案是:
void fun( char *s,int num)
{
char t;
int I,j;
for(i=1;i<num-2;i++)
for(j=i+1;j<num-1;j++)
if(s[i]<s[j])
{
t=s[i];
s[i]=s[j];
s[j]=t;
}
}