C语言模拟题(2014-5)答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)排序后的数组元素按示例格式打印输出;