单项选择题
1. 下列数据结构中,能用二分法进行查找的是( )。
A: 无序线性表
B: 线性链表
C: 二叉链表
D: 顺序存储的有序表
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。
2. 下列叙述中,不属于设计准则的是( )。
A: 提高模块性
B: 使模块的作用域在该模块的控制域中
C: 设计成多入口、多出口模块
D: 设计功能可预测的模块
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 大量软件设计表明,以下的设计准则是可以借鉴为设计的指导和对软件结构图进行优化,这些准则是:提高模块性;模块规模适中;深度、宽度、扇出和扇入适当;使模块的作用域在该模块的控制域中;应减少模块的接口和界面的复杂性;设计成单入口、单出口的模块;设计功能可预测的模块。
3. 下列队列的描述中,正确的是( )。
A: 队列属于非线性表
B: 队列在队尾删除数据
C: 队列按“先进后出”进行数据操作
D: 队列按“先进先出”进行数据操作
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 队列是只允许在一端删除,在另一端插入的顺序表,允许删除的一端叫做队头,允许插入的一端叫做队尾。队列的操作数是依据先进先出的原则进行的。因此队列亦称作先进先出的线性表,或后进后出的线性表。
4. 对下列二叉树进行前序遍历的结果为( )。
A: ABCDEFGH
B: ABDGEHCF
C: GDBEHACF
D: GDHEBFCA
参: B 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 遍历就是不重复地访问二叉树的所有结点。二叉树遍历的方法有3种:前序遍历、中序遍历和后序遍历。记住3种遍历的顺序:
①前序,访问根一按前序遍历左子树一按前序遍历右子树。
②中序,按中序遍历左子树一访问根一按中序遍历右子树。
③后序,按后序遍历左子树一按后序遍历右子树一访问根。
所以对该二叉树的中序遍历结果为.ABDGEHCF。
5. 对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是( )。
A: 冒泡排序为n(n-1)/2
B: 简单插入排序为n
C: 希尔排序为n
D: 快速排序为n/2
参: A 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 在最坏情况下,冒泡排序所需要的比较次数为n(n-1)/2;简单插入排序所需要的比较次数为n(n-1)/2:希尔排序所需要的比较次数为O(n1.5);堆排序所需要的比较次数为O(nlog2n)。
6. 为了使模块尽可能,要求( )。
A: 内聚程度要尽量高,耦合程度要尽量强
B: 内聚程度要尽量高,耦合程度要尽量弱
C: 内聚程度要尽量低,耦合程度要尽量弱
D: 内聚程度要尽量低,耦合程度要尽量强
参: B 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 模块性是指每个模块只完成系统要求的的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的性。
7. 下列选项中不属于软件生命周期开发阶段任务的是( )。
A: 软件测试
B: 概要设计
C: 软件维护
D: 详细设计
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 软件生命周期分为软件定义、软件开发及软件运行维护三个阶段,其中开发阶段包括概要设计、详细设计、实现和测试。
8. 数据性是数据库技术的重要特点之一。所谓数据性是指( )。
A: 数据与程序存放
B: 不同的数据被存放在不同的文件中
C: 不同的数据只能被对应的应用程序所使用
D: 以上三种说法都不对
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 数据性是数据与程序间的互不依赖性,即数据库中数据于应用程序而不依赖于应用程序。所以选项A),选项B)和选项C)都不正确。
9. 在学校中,“班级”与“学生”两个实体集之间的联系属于( )关系。
A: 一对一
B: 一对多
C: 多对一
D: 多对多
参: B 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 一个班可以有多名学生,而一名学生只能属于一个班级,所以“班级”与“学生”两个实体集之间的联系属于一对多关系。
10. 软件调试的目的是( )。
A: 发现错误
B: 改善软件的性能
C: 改正错误
D: 验证软件的正确性
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 在对程序进行了成功的测试之后将进入程序调试,程序调试的任务是诊断和改正程序中的错误。
11. C语言源程序名的后缀是( )。
A: .exe
B: .c
C: .obj
D: .cp
参: B 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过C编译程序编译生成后缀为“.obj”的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件把目标文件与C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。
12. 若函数中有定义语句:int a;,则( )。
A: 系统将自动给a赋初值0
B: 这时a中的值是和随机数
C: 系统将自动给a赋初值-1
D: 这a中无任何值
参: B 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 本题考查变量赋值基本概念。在声明一个变量后,如果未显式的对其进行赋值,则它的值是一个随机值。
13. 以下选项中,合法的一组C语言数值常量是( )。
A: 028 .5e-3 .0xf
B: 12 OXa23 4.5e0
C: .177 4c1.5 Oabc
D: 0x8A 10,000 3.E5
参: B 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 八进制数开头必须是数字“0”,其数字包括0~7,而在选项A)中,028是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整数,而选项C)中4e1.5是错误的。在选项D)中,整型数据10,000的表示形式是错误的。所以本题的答案为选项B)。
14. 下列语句组中,不正确的是( )。
A: char*s;s="Olympic";
B: char s[]="Olympic";
C: char*s;s={"Olympic");
D: char s[]={"Olympic"};
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: s是一个字符指针变量,s代表其地址,C将字符串赋给地址,因此选项C)错误。
15. 若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是( )。
A: scanf("%d",a,b,c);
B: scanf("%d%d%d",a,b,c);
C: scanf("%d",p);
D: scanf("%d",&p);
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 程序语句int a,b,c,*p=&c;定义了3个整型变量a,b,c和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为“scanf("格式控制字符串”,地址列表)”,其中的地址列表应当是存放输入数据变量的地址。
16. 有以下程序,其中%u表示按无符号整数输出( )。
main()
{unsigned int x=OxFFFF:/*x的初值为十六进制数*/
printf("%u\n",x);
}
程序运行后的输出结果是( )。
A: -1
B: 65535
C: 32767
D: 0xFFFF
参: B 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 因为%u表示按无符号整数输出,而x用十六进制表示为0xFFFF,所以输出无符号整数的最大值65535。
17. 设变量x和y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是( )。
A: if(x++);
B: if(x 〉y&&y!=0);
C: if(x 〉 y)x-else y++;
D: if(y〈 0){;}else x++;
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 选项C)中,if(x 〉y)后面的“x--”是一个表达式而不是一个语句,所以在编译时会产生错误信息。
18. 以下选项中,当x为大于1的奇数时,值为0的表达式为( )。
A: x%2==1
B: x/2
C: x%2 1=0
D: x%2==0
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 当x为大于1的奇数时,x对2求余的结果为1,不为0,所以选项D)中表达式的值为0。
19. 若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为( )。
A: 4
B: 16
C: 32
D: 52
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 本题考查逗号表达式的运用。x=(i=4,j=16,k=32)中的i=4,j=16,k=32构成一个逗号表达式,整个表达式的值取最后一项的值,即32,所以x的值为32。
20. 在下列选项中,没有构成死循环的是( )。
A: int i=100; while(1) { i=i()+1; if(i 〉 100)break; }
B: for(;;);
C: int k=10000; do{k++;}while(k 〉10000);
D: int s=36: while(s)--s:
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 选项D)中,首先定义的变量s的值为36,因为语句--s;所以当s=0时循环会结束;选项A)由于while(1)永远成立,循环构成死循环;选项B)中for循环没有使循环结束的限定条件,也构成死循环;选项C)中由于k永远大于10000,所以循环无法停止。
21. 在printf的格式字符中,e格式字符的作用是( )。
A: 以十六进制无符号形式输出整数
B: 以带符号的十进制形式输出整数
C: 以指数形式输出实数
D: 以字符形式输出,且只输出一个字符
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 本题考查prinff函数的格式。格式字符“e”或者“E”都表示以指数形式输出单精度或双精度数。
22. 以下选项中正确的语句组是( )。
A: char s[];s="HELLO!";
B: char*s;s={"HELLO!"};
C: char s[10];s=:"HELLO!";
D: char*s;s="HELLO!";
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 本题考查数组和字符串的赋值。选项A)中数组s没有明确其大小就赋值是错误的。选项B)中不能有大括号,选项C)中的写法应该为{´H´´E´´L´´L´O´´!´}。
23. 字符串"%%\"ABCDEF\"\\"的长度是( )。
A: 11
B: 10
C: 5
D: 3
参: B 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 本题涉及字符串最基本的2个概念:①字符串的长度是指字符串中字符的个数,但不包括字符串结束符;②以反斜杆´\´开头的特殊字符序列,意思是把反斜杆后面的字符序列转换成特定的含义,而不是原来的含义,不包含在字符串长度之内,´\´连同后面的字符为一个长度;而´%´也是如此。
24. 下列说法正确的是
A: int(**def)[10];---def指向一个指针,该指针指向10个整型变量构成的数组
B: int*(*gh[10]);---gh指向一个指针,该指针指向10个整型变量构成的数组
C: int*(*gh[101);---gh是一个指针,指向由10个指向整型变量的指针构成的数组
D: A,C均正确
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: int*(*gh[10]);…gh是一个指针,指向由10个指向整型变量的指针构成的数组,int(**deft,[10];….def指向一个指针,该指针指向10个整型变量构成的数组。
25. 若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是( )。
A: 函数的实参和其对应的形参共占同一存储单元
B: 形参只是形式上的存在,不占用具体存储单元
C: 同名的实参和形参占同一存储单元
D: 函数的形参和实参分别占用不同的存储单元
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 在C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在被调用函数中对形参存储单元中的值进行运算,最后通过return语句把函数值返回调用函数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。
26. 设有如下定义:
struct sk
{ int m;
float x;
}data,*q;
若要使q指向data中的m域,正确的赋值语句是( )。
A: q=&data.m;
B: *q=data.m;
C: q=(struct sk*)&data.m;
D: q=(struct sk*)data.m:
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 利用强制类型转换(struct sk*)把整数型地址&data.m转换成结构体变量指针赋给结构体指针变量q。
27. 有以下程序:
int f1(double a)
{ return a*a;}
int f2(int x,int y)
{ double a,b;
a=n(x);
b=f1(y);
return a+b:
}
main()
{ double w;
w=f2(2.1,4.0);
…
}
程序执行后,变量w的值是( )。
A: 20.21
B: 20
C: 20
D: 0
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 本题考查函数调用的使用。计算w的时候,先调用f2函数,f2函数的公式是“a+b”,计算a和b的时候又调用到f1函数,f1的函数是“a*a”,因此,w的计算公式为:w=(double)[(int),(2.1*2.1)+(int)(4.0*4.0)]=20.0。
28. 若语句“t=fun(fun(x,y,a),(a+b,a+c),x+y+z);”对fun函数的调用正确,则fun函数的形参个数为( )。
A: 3
B: 4
C: 5
D: 6
参: A 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 本题考查函数调用时的参数个数。在函数调用时,实参必须和形参的个数、类型一一对应。但函数的计算结果只有一个值,因而fun函数的参数个数为3。
29. 设X为整型变量,n=14,n的地址为4000;m=6,m的地址为2000;执行语句x=&n后的结果为( )。
A: 14
B: 6
C: 2000
D: 4000
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: &是取地址运算符,表达式x=&a是表示将a的地址赋给变量x。
30. 若有说明int m[31141={3,9,7,8.5},(*q)[4];和赋值语句q=m;,则对数组元素m[i][j](其中0〈 =i〈 3,0〈 =i〈 4)值的正确引用为( )。
A: (q+i)[j]
B: *q[i][j]
C: *(*q[i]+j)
D: *(*(q+i)+j)
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: *(q+i)指向第i行首地址,*(*(q+i)代表第i行第j个元素。
31. 有以下程序:
void ss(char*s,char t)
{ while(*s)
{ if(*s==t)*s=t-´a´+´A´;
s++;
}
}
main()
{ char str1[100]="abcddfefdbd",c=´d´;
ss(str1,c);printf("%s\n",str1);
}
程序运行后的输出结果是( )。
A: ABCDDEFEDBD
B: abcDDfefDbD
C: abcAAfefAbA
D: Abcddfefdbd
参: B 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 函数ss(char*s,char t)的功能是将指针s所指向的字符串中存在的字符“t”均改写成大写字母;所以main函数中引用函数ss后使得数组str1中的小写字母“d”均变成了大写字母“D”,然后输出数组str1,结果为:abcDDfefDbD。
32. 下述语句中,在字符串s1和s2相等时显示”they are Equal"的是( )。
A: if(*s1==*s2) puts("they are Equal");
B: if(!strcmp(s1,s2)) puts("they are Equal");
C: if(s1=s2) puts("they are Equal");
D: iffstrcmp(s1,s2)) puts("they are Equal");
参: B 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 字符串比较不能用“==”,要用strcmp(s1,s2)函数,字符串s1和s2相等时返回值为0,故!strcmp(s1,s2)==1,条件成立执行后面的语句,输出theyare Equa1。
33. 设有说明int(*ptr)[M];其中的标识符ptr是( )。
A: M个指向整型变量的指针
B: 指向M个整型变量的函数指针
C: 一个指向具有M个整型元素的一维数组的指针
D: 具有M个指针元素的一维指针数组,每个元素都只能指向整型变量
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 根据C语言的语法规则可知,int(*ptr)[M]中的标识符ptr是一个指向具有M个整型元素的一维数组指针。
34. 在C语言中,变量的隐含存储类别是( )。
A: auto
B: static
C: extem
D: 无存储类别
参: A 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: C语言中,变量的隐含存储类型为auto。
35. 有以下程序:
#include〈 stdio.h 〉
struct tt
{ int x;struct tt*y;}*p;
struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a);
main()
{ int i;
p=a;
for(i=1;i〈 =2;i++){printf("%d,",p- 〉x);p=p- 〉y;)
}
程序的运行结果是( )。
A: 20,30,
B: 30,17,
C: 15,30,
D: 20,15,
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 本题考查的是指针和结构的应用。首先定义的数组tt中有两个成员,一个整型变量,一个结构指针。当i=1时,p指针指向结构数组的第一个元素,并输出此元素的第一个成员x,即20;当i=2时,p指针指向结构数组的第二个元素的第一个成员,所以输出15。
36. 有以下程序:
#include〈 stdio.h 〉
main()
{ FILE*fp;int a[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwrite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat;
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i〈 10;i++)printf("%d,",a[i]);
}
程序的运行结果是( )。
A: 1,2,3,0,0,0,0,0,0,0,
B: 1,2,3,1,2,3,0,0,0,0,
C: 123,0,0,0,0,123,0,0,0,0,
D: 1,2,3,0,0,1,2,3,0,0,
参: D 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 首先用函数fopen()以“wb”的方式打开文件“d2.dat”,然后调用两次fwrite函数将数组a的5个元素,依次输出到文件fp中(共10个字节),然后关闭文件。再次打开文件,使用文件指针指向文件的开头,调用tread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,0},因此最后的输出结果为“1,2,3,0,0,1,2,3,0,0”。
37. 定义结构体数组
struct stu
{ int num;
char name[20];
}x[5]={1,"ZHAO",2,"QIAN",3,"SUN",4,"LEE",5,"ZHOU"};
for(i=l;i〈 5;i++)
printf("%d%c",x[i].aura,x[i].name[2]);
程序执行后的输出结果是( )。
A: 2A3N4E5O
B: 1H213U4E
C: 1A2N3E4O
D: 1A2N3E4O
参: A 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 本题主要考查结构体数组。x[i].num是结构体x[i]中的num成员,x[i].name[2]是结构体x[i]中name成员的第3个元素。第一次循环,i=l,输出x[1].num,x[1].name[2]的值,即2A;第二次循环,i=2,输出x[2].num,x[2].name[2]的值,即3N;第三次循环,i=3,输出x[3].num,x[3].name[2]的值,即4E;第四次循环,i=4,输出x[4].num,x[4].name[2]的值,即50。
38. union dt
{
int a;char b;double c;
}data;
以下叙述中错误的是
A: data的每个成员起始地址都相同
B: 变量data所占内存字节数与成员C所占字节数相等
C: 程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000
D: data可以作为函数的实参
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 输出不会是5.00000的,因为单精度浮点数和双精度浮点数在内存中的存储形式不一样。
39. 设x=021,y=012,则z=x|y的值是( )。
A: 1
B: 0
C: 11011
D: 1.1e+007
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 本题主要考查按位或运算。按位或是对两个运算对象相应的位进行逻辑或运算,其运算规则和逻辑或相同,两个运算对象只要有一个是1,则结果为1。
40. fgets(str,n,fp))函数从文件中读入一个字符串,以下错误的叙述是( )。
A: 字符串读入后会自动加入´\0´
B: fp是指向该文件的文件型指针
C: fgets函数将从文件中最多读入n个字符
D: fgets函数将从文件中最多读入n-1个字符
参: C 题目分值: 1.0 分 您的答案: 得分: 0.0
详细解答: 字符串输入函数fgets()的调用形式为:fgets(s,n,f1))。s可以是一个字符数组名,或是指向字符串的指针;n为要读取的最多的字符个数:fp是指向该文件的文件型指针。字符串输入函数的功能是:从fp所指向的文件中读取长度不超过n-1个字符的字符串,并将该字符串存放到字符数组s中。
程序填空题
41. 给定程序的功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。
请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!
#include〈 stdio.h 〉
#include〈 string.h 〉
#include〈 stdlib.h 〉
void WriteText(FILE木);
void ReadText(FILE*);
main()
{FILE*fp;
if((fp=fopen("myfile4.txt","w"))==NULL)
{ printf("open fail!!\n"):exit(0);}
WriteText(fp);
fclose(fp);
if((fp=fopen("myfile4.txt","r"))==NULL)
{ printf("open fail!!\n");exit(0);}
ReadText(fp);
fclose(fp);
}
/**********found*********/
void WriteText(FILE__1__)
{ char str[81];
printf("\nEnter string with-1 to end:\n");
gets(str);
while(strcmp(str,"-1")!=0){
/**********found**********/
fputs(___2___,fW);fputs("\n",fw);
gets(str);
}
}
void ReadText(FILE*fr)
{ char str[81];
printf("\nRead file and output to screen:\n");
fgets(str,81,fr);
while(!feof(fr)){
/**********found**********/
printf("%s",__3__);
fgets(str,81,fr);
}
}
参: (1)*fw
(2)str
(3)str 题目分值: 1.0 分
您的答案:
详细解答: 第一空:此处是补充函数参数名,参数类型已知是FILE文件指针,fputs("\n",fw)是将字符“\n”写入文件,可知fw是文件指针名,因此第一空处应该是void WdteText(FILE*fw)。
第二空:while(strcmp(str,"-1")!=0)循环的结束标志是str字符串等于“-1”时循环退出,如果str不等于“-1”,执行循环体内容:用fputs函数将s仃字符串写入文件。fputs函数的调用形式是:fputs(s,fp),其中s是指向字符串的指针或字符串数组名,fp是指向将要被写入的文件的文件指针,因此第二处应该是fbuts(str,fw)。
第三空:while(!feof(fr)循环的作用是不断读取文件直到到达文件尾,每次最多读81个,将读到的数据放在str字符串里,并用printf输出到屏幕,因此第三处应该是printf("%s",str)。
程序修改题
42. 给定程序MODI1.C中函数fun的功能是:判断一个整数是否是素数,若是返回1,否则返回0。
在main()i~数中,若fun返回l输出YES,若fun返回0输出NO!。
请改正程序中的错误,使它能得出正确的结果。________
注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!
#include〈 stdio.h 〉
int fun(int m)
{ int k=2;
while(k〈 =m&&(m%k))
/**********found**********/
k++
/**********found**********/
if(m=k)
return 1:
else return 0:
}
main()
{ int n;
printf("haPlease enter n:");scanf("%d",&n);
if(fun(n))printf("YES\n");
else printf("NO!\n");
}
参: (1)k++;
(2)if (m==k) 题目分值: 1.0 分
您的答案:
详细解答: (1)第一个标识下“k++”语句没有结束符分号,所以将“k++”改为“k++;”。
(2)第二个标识下的“if(m=k)”语句应该是判断m是否素数,而原题中是将k的值赋给m,并不表示是否m等于k,所以第二个标识下“if(m=k)”应该改为“if(m==k)”。
程序设计题
43. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。
例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。
注意:部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include〈 stdio.h 〉
void fun(char*a)
{
________
}
main()
{ char s[81];void NONO ();
printf("Enter a string:ha");gets(s);
fun(s);
printf("The string after deleted:\n");puts(s);
NONO();
}
void NONO()
{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 */
FILE*in,*out;
int i;char s[81];
in=fopen("in.dat","r¨);
out=fopen("out.dat","w");
for(i=0;i〈 10;i++){
fscanf(in,"%s",s);
fun(s);
fprintf(out,"%s\n",s);
}
fclose(in);
fclose(out);
}
参: inti=0:
char*p,*q;
p=q=a;
while(*p)
p++;
p--;
while(*p==´*´)
p--;
while(q〈 =p)
{
a[i]=*q;
i++:
q++;
}
a[i]=´\0´; 题目分值: 1.0 分
您的答案:
详细解答: (1)首先,使用一个指针p指向串尾,然后对指向串尾的指针p指向的字符进行判断,如果是“*”,指针p就跳过,这样来设置一个指针变量q指向字符串的头位置。
(2)然后,将由字符串起始到最后一个字母之间的字符拷贝到字符串a。
(3)最后,在新生成的字符串尾加´\0´。下载本文