国家二级C语言机试(操作题)模拟试卷273
程序填空题
1.下列给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的次序。
例如,s所指的字符串为“def35adh3kjsdt7”,执行后结果为“defadhkjsdf3537”。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:部分源程序给出如下。
不得增行或删行,也不得更改程序的结构!
试题程序:
#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]=\\
(1)j++或j+=1或++j或j=j+1
(2)s[i]=t1[i]
(3)j
解析:填空1:根据函数fun中的内容可知,数组t1存储了s中的非数字字符,数组t2存储了s中的数字字符,为了存储下一个数字字符,下标j要进行加1操作。
填空2:将s串中的数字与非数字字符分开后,要先将非数字字符放入字符串s中,因此填入s[i]=t1[i]。
填空3:再将数字字符加到s串之后,并且i要小于数字的个数j。
程序修改题
2.给定程序MODI1.C中,函数fun()的功能是统计s所指一维数组中0的个数(存在变量zero中)和1的个数(存在变量one中),并输出结果。
请改正函数fun中指定部位的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include<stdio.h>
void fun(int*s,int n)
{
/*********found*********/
int i, one=0 ,zero;
for(i=0;i<n;i++)
/*********found*********/
switch(s[i]);
{
/*********found*********/
case 0:zero++;
case 1:one++;
}
printf(\\
(1)int i,one=0,zero=0;
(2)switch(s[j])
(3)case 0:zero++;break;
解析:(1)变量zero用来统计数字0的个数,应将其初始化为0。
(2)语法错误,switch语句后不加分号。
(3)当数字为0时,变量zero加1,此时应使用break语句跳出switch语句,进行下一次循环,否则会继续执行case 1语句,使程序不能得出正确结果。
程序设计题
3.请编写函数fun,其功能是:判断t所指字符串中的字母是否由连续递增字母序列组成(字符串长度大于等于2)。例如字符串:uvwxyz满足要求;而字符串:uvxwyz不满足要求。
注意:部分源程序存放在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<string.h>
void NONO();
int fun(char*t)
{
}
main()
{ char s[26];
printf(\\
int fun(char*t)
{
int len=strlen(t);
if(len<2)
{
return 0;
}
char before ch=t[0];
char current ch;
int flag=1;
for (int i=1;t[i] !=’\0’;++i)
{
current ch=t[i];
if(before ch!=current ch-1)
{
flag=0;
break;
}
before ch=current ch;
}
return flag;
}
解析:函数fun的功能是判断指针t指向的字符串是否是由连续递增的字母构成,返回值为整数,0代表不满足条件。根据题目要求,字符串长度必须大于等于2,所以首先需要对t指向的字符串进行长度判断,小于2的字符串返回0。接着需要对字符串中的连续字符,逐个进行比较。C语言中字符变量可以当作整数使用,所以当前字符只有是前一个字符的ASCII码+1,才能说它们是连续递增字母序列,然后比较后一个字符与当前字符的ASCII码,如果字符串中的所有字符都满足条件,则返回1;否则说明该字符串不满足要求,此时设置flag=0,后面的字符也就不需要再比较了,跳出循环返回即可。
本文档预览:3600字符,共3050字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载