C语言模拟题(2014-5)答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1、与下面代码运行效果相同的代码是__

i = 10;

while( i

x = i++;

}

C

2、假设变量s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于 0),则与以下程序段s=a; for(b=1;b<=c;b++) s=s+1; 功能等价的赋值语句是__

C

3、以下文件函数中,用于按照控制格式的方式向文件中写入数据的函数是__

D

4、能正确表示逻辑关系:“a≥10或a≤0”的 C语言表达式是__

B

5、下列语句定义x为指向 int类型变量a的指针,其中哪一个是正确的__

B

6、假定int类型变量占用两个字节,且有定义:int x[10]={0,2,4}; 则数组x 在内存中所占字节数是__

C

7、下面四个选项中,均是不合法的用户自定义标识符的选项是__

D

8、有以下定义:char x[ ]="abcdefg"; char y[ ]={'a','b','c','d','e','f','g'}; 则正确的叙述为__

D

9、函数调用语句y = func(a, b, max(d, e));中实参的个数为__

C

10、设有int a=3, *p=&a; 则*p的值是__

B

11、设有如下定义,struct sk{ int a; float b; } data, *p=&data; 则对 data 中的 a 成员的正确引用是__

D

12、设变量x为double类型,n为int类型,则以下能实现将x中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是__

C

13、在C语言程序中,若对函数类型未加显式说明,则函数的隐含类型为__

D

14、判断字符串str1是否与字符串str2相等,应使用的语句是__

A

15、设有int a[10];下面的叙述中,正确的是__

B

第1题(18分)

上机要求:下列程序包含4个错误,请输入该程序的代码,找出并更正程序错误,在修改行代码后增加"/***/"注释,并将修改后的源程序保存到E:\answer\1-A-1.c 中。程序改错时不允许改变大的程序结构(如函数调用关系与循环结构等)。程序功能:从键盘上输入一个整数,转换为16进制串并输出。

如输入:90

则输出:5A

再如输入:1234

则输出:4D2

函数说明:

函数decToHex将整数n转换为16进制的字符串并存贮于str数组。

(1) 依次计算n的16进制最低位(求余运算),转换为16进制码(字符'0'至'9'或'A'

至'F')存贮于str数组,完成一位后,n除16以去掉最低位,然后循环求解更高位。

(2) 使用for循环逆序str数组,变量i从头递增,变量j从尾递减,交换str[i]

与str[j]。

主函数main输入一个整数,调用decToHex函数转换为16进制串,然后输出该字符串。

带错误原程序:(函数decToHex包含3个错误点,main包含1个错误点)#include

void decToHex(int n, char *str)

{

int m,i,j,k;

char t;

m=0;

do {

k = n / 16; // k = n % 16

if (k<=9)

str[m] = '0'+k;

else

str[m] = 'A'+k-10;

m++;

n /= 16;

} while (n>0);

str[m] = '/0'; // '\0'

for (i=0;j=m-1; i

{

t=str[i];

str[i]=str[j];

str[j]=t;

}

}

int main()

{

char str[80];

int n;

scanf("%d",&n);

str=decToHex(n);// decToHex(n, str);

puts(str);

return 0;

}

第2题(16分)

上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-A-2.c中。

程序功能:输入2个正整数a1,a2(a1>a2),按示例格式,判断并输出两数之和与两数之差是否为素数。(素数定义:只能被1和本身所整除的正整数(1除外),如2、3、5、7、11等是素数。)

如输入:18 7

则输出:

a1+a2=25,No

a1-a2=11,Yes

示例说明:

如输入:25 8

则输出:

a1+a2=33,No

a1-a2=17,Yes

示例说明:

#include

#include

int prime(int s);

int main(){

int m,n;

scanf("%d%d",&m,&n);

if(prime(m+n)){

printf("a1+a2=%d Yes\n",m,n,m+n);

}else{

printf("a1+a2=%d No\n",m+n);

}

if(prime(m-n)){

printf("a1-a2=%d Yes\n",m-n);

}else{

printf("a1-a2=%d No\n",m-n);

}

return 0;

}

int prime(int s){

int i;

for(i=2;i<=sqrt(s);i++){

if(s%i==0){

return 0;

}

}

return 1;

}

第3题(16分)

上机要求:按程序功能要求编写程序,并将程序代码保存到E:\answer\1-A-3.c中。

程序功能:

(1)输入10个整数(存贮在一维数组中);

(2)将数组元素从小到大排序;

(3)排序后的数组元素按示例格式打印输出;

相关文档
最新文档