湖南省计算机二级C语言程序题___免费下载
- 格式:doc
- 大小:956.50 KB
- 文档页数:34
计算机二级c语言试题及答案计算机二级C语言考试是中国计算机技术与软件专业技术资格(水平)考试中的一项,主要考察考生对C语言程序设计的基本掌握程度。
以下是一套模拟的计算机二级C语言试题及答案,供参考。
# 计算机二级C语言试题一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的关键字?A. classB. intC. voidD. include2. 以下哪个不是C语言标准输入输出库函数?A. printf()B. scanf()C. coutD. getchar()3. 在C语言中,以下哪个语句用于定义一个整型变量?A. int a;B. float a;C. double a;D. char a;4. 以下哪个表达式的结果不是整数?A. 3 / 2B. 3 % 2C. 3 + 2D. 3 - 25. 在C语言中,以下哪个是正确的字符串定义方式?A. string s = "Hello";B. char s[] = "Hello";C. char s = "Hello";D. char s = 'Hello';6. 下列哪个是C语言中的数组声明?A. int a[10];B. int a = 10;C. int a(10);D. int a = {10};7. 在C语言中,以下哪个是正确的函数定义?A. void myFunction() {}B. int myFunction;C. void myFunction() { return 0; }D. int myFunction() {}8. 以下哪个是C语言中的条件语句?A. ifB. whileC. forD. switch9. 在C语言中,以下哪个是正确的循环结构?A. for (int i = 0; i < 10; i++)B. while (i < 10)C. do { } while (i < 10)D. All of the above10. 下列哪个选项是C语言中的指针类型?A. intB. floatC. *intD. char*二、填空题(每空2分,共20分)1. 在C语言中,`printf("%d", x);` 用于输出一个整数变量 `x`,其中 `%d` 是______。
c语言二级考试题试题及答案一、单项选择题(每题2分,共40分)1. 在C语言中,以下哪个选项是合法的字符常量?A. 'a'B. "a"C. 'ab'D. 123答案:A2. 下列哪个选项是C语言中的关键字?A. intB. floatC. doubleD. string答案:A3. 若有定义 int a = 10; 则执行语句 a += (b = 3, b + 2) 后,变量a的值是多少?A. 10B. 12C. 13D. 15答案:C4. 下列哪个选项不是C语言中的基本数据类型?A. intB. charC. floatD. array答案:D5. 在C语言中,以下哪个选项是正确的字符串字面量?A. "Hello, World!"B. 'Hello, World!'C. "Hello, World!", 'a'D. 'Hello, World!', "a"答案:A6. 下列哪个选项是C语言中正确的函数声明?A. int add(int x, int y);B. int add();C. int add(x, y);D. int add(int, int);答案:A7. 在C语言中,以下哪个选项是正确的二维数组声明?A. int a[2][3];B. int a[2][ ];C. int a[][];D. int a[3, 2];答案:A8. 若有定义 int a[5] = {1, 2, 3, 4, 5}; 则执行语句 a[2] = 10; 后,数组元素a[2]的值是多少?A. 10B. 3C. 4D. 5答案:A9. 在C语言中,以下哪个选项是正确的指针声明?A. int *p;B. int *p[];C. int *p[5];D. int (*p)[5];答案:A10. 下列哪个选项是C语言中正确的宏定义?A. #define PI 3.14B. #define PI 3.14C. #define PI 3.14D. #define PI 3.14答案:A二、填空题(每题2分,共20分)1. 在C语言中,表示逻辑“与”的运算符是___________。
全国计算机等级考试二级C语言笔试试题及答案一、选择题1. 以下关于C语言的描述中,正确的是(A)A. C语言是一种结构化程序设计语言B. C语言是面向对象的程序设计语言C. C语言是一种解释型语言D. C语言是一种高级汇编语言答案:A2. 在C语言中,以下哪个选项是非法的整型常量?(D)A. 012B. 0x123C. 0XabcD. 0123答案:D3. 若变量已正确定义并赋值,以下正确的表达式是(C)A. a = b ++ + 1;B. a = b ++ = a++;C. a = b + b++;D. a = ++b + ++b;答案:C4. 在C语言中,以下哪个函数用于输出字符?(B)A. printfB. putcharC. putcharcD. putchart答案:B5. 已知 int a = 5, b = 3;,以下哪个选项的结果为1?(D)A. a % bB. a / bC. a + bD. a - b答案:D二、填空题1. 在C语言中,一个int类型的数据在内存中占______个字节。
答案:42. C语言中,逻辑运算符“或”用______表示。
答案:||3. 若定义 int a = 10, b = 20;,则执行语句 a += b -= a; 后,b的值为______。
答案:104. 在C语言中,函数的返回值类型为void时,表示该函数______。
答案:无返回值5. 在C语言中,以下函数的返回类型为______。
int max(int a, int b) {return (a > b) ? a : b;}答案:int三、判断题1. C语言中的数组名可以作为指针使用。
(正确)2. 在C语言中,静态存储区的数据在程序运行期间一直存在。
(正确)3. 在C语言中,结构体是一种用户自定义的数据类型。
(正确)4. 在C语言中,函数的参数传递都是按值传递的。
(错误,部分按引用传递)5. 在C语言中,文件操作完成后必须关闭文件,否则可能导致数据丢失。
第一部分:应试攻略一、试卷构成分析第一大题:单项选择题。
共25分。
其中TC占10分。
主要考核计算机基础知识(15分,得分≥9分)和程序设计基本知识(10分,得分≥6分)。
得分≥15分。
第二大题:文件操作。
共5分。
主要考核目录与文件的创建、复制、重命名和属性设置。
你的得分:5分。
示例:1、在目录ICL7Q\EU7中创建文件IP.zt。
-----在目录EU7的空白区域右击鼠标-----单击弹出菜单的“新建/文本文档”命令-----将文件更名为IP.zt2、将目录GCV\B4T中的文件全部移到目录GRCV13中。
-----先剪切,再粘贴3、把目录KCU拷贝到目录KRC\EN13中。
-----先复制,再粘贴4、把目录JCF4W重命名为JA34。
-----单击目录名称二次(不是双击),再更名5、设置目录QCH下的文件WQ12.RWF为隐藏。
-----在“我的电脑”中找到QCH目录下的WQ12.RWF文件,右击-----在弹出的菜单中单击“属性”命令-----在弹出的对话框之“常规”选项卡中选择“隐藏”选项第三大题:WORD编辑排版。
共10分。
主要考核WORD中字符格式、段落格式和页面设置的基本操作。
得分≥8分。
主要通过以下菜单命令进行设置:1、在“格式”菜单中利用“字体”、“段落”、“项目符号和编号”、“边框和底纹”命令2、利用“文件”菜单的“页面设置”命令3、利用“插入”菜单的“图片”、“符号”、“特殊符号”、“批注”、“书签”命令示例:1、设置标题段:字体为“隶书”;小二字号;绿色;单线下划线;阴影;字符间距紧缩1磅。
-----在选择栏(页边距左侧)双击,选择标题段-----执行“格式/字体”命令弹出“字体”对话框-----在“字体”选项卡中:-----“中文字体”列表中选择“隶书”-----“字号”列表中选择“小二”-----“所有文字字体颜色”列表中选择“绿色”-----“下划线线型”列表中选择单线-----“效果”选项中选择“阴影”-----在“字符间距”选项卡中的“间距”列表中选择“紧缩”,其右侧“磅值”输入12、设置整篇文档:左对齐;段前间距1行;段后间距1行;段落左缩进2字符;段落右缩进4字符;行距固定为20磅;页面右边界3厘米;页面边框为方框;任意颜色的字符底纹。
计算机等级考试二级c答案下载计算机等级考试二级C语言考试是针对计算机编程和应用能力的一项标准化测试。
考生们在准备考试时,通常会寻找相关的模拟试题和答案来练习。
以下是一套模拟试题及答案,供考生参考。
一、选择题(每题2分,共40分)1. 在C语言中,以下哪个选项是合法的标识符?A. 2variableB. variable2C. variable-2D. variable$2答案:B2. 若有定义 int a=5;,则执行语句 a+=a-=a*a; 后,变量a的值是多少?A. 0B. -5C. 5D. 10答案:B3. 在C语言中,以下哪个选项不是合法的常量?A. 0x1AB. 1.234e-2C. 0.5eD. 2L答案:C4. 下列哪个函数不能正确计算数组元素的和?A. sum(int arr[], int n) { int i, s=0; for(i=0; i<n; i++)s+=arr[i]; return s; }B. sum(int arr[], int n) { int i, s=0; for(i=1; i<=n; i++)s+=arr[i]; return s; }C. sum(int arr[], int n) { int i, s=0; for(i=0; i<n; i++)s+=arr[i]; return s; }D. sum(int arr[], int n) { int i, s=0; for(i=0; i<=n; i++)s+=arr[i]; return s; }答案:B5. 若有以下代码段:```cint a=1, b=2, c;c = a + b;```则变量c的值是多少?A. 1B. 2C. 3D. 4答案:C二、填空题(每题2分,共20分)1. 在C语言中,一个整型变量占用的内存空间通常是____字节。
答案:42. 若定义一个字符数组char str[10]="Moonshot";,则数组str的长度是____。
计算机二级c语言考试题库和答案一、单项选择题(每题2分,共40分)1. 在C语言中,以下哪个选项是正确的整型常量?A. 0x12B. 0x12.3C. 0x12LD. 0x12U答案:A2. C语言中,以下哪个选项是正确的字符串字面量?A. "Hello"B. 'Hello'C. "Hello", "World"D. 'Hello', 'World'答案:A3. 下列哪个选项是合法的C语言变量名?A. 2variableB. variable2C. _variableD. variable-2答案:B4. 在C语言中,以下哪个选项是正确的浮点型常量?A. 3.14E2B. 3.14e-2C. 3.14ED. 3.14e答案:B5. 下列哪个选项是C语言中的保留字?A. defineB. sizeofC. includeD. myFunction答案:B6. 在C语言中,以下哪个选项是正确的数组声明?A. int array[5] = {1, 2, 3, 4, 5};B. int array[] = {1, 2, 3, 4, 5};C. int array[5] = {1, 2, 3};D. int array = {1, 2, 3, 4, 5};答案:B7. 下列哪个选项是C语言中的逻辑运算符?A. &&B. ||C. !D. All of the above答案:D8. 在C语言中,以下哪个选项是正确的函数声明?A. void myFunction();B. int myFunction();C. int myFunction(int x);D. All of the above答案:D9. 下列哪个选项是C语言中的位运算符?A. &B. |C. ^D. All of the above答案:D10. 在C语言中,以下哪个选项是正确的指针声明?A. int *ptr;B. int ptr[];C. int *ptr = 0;D. All of the above答案:D11. 下列哪个选项是C语言中的循环结构?A. forB. whileC. do-whileD. All of the above答案:D12. 在C语言中,以下哪个选项是正确的条件语句?A. ifC. if-elseD. All of the above答案:D13. 下列哪个选项是C语言中的输入输出函数?A. printf()B. scanf()C. Both A and BD. None of the above答案:C14. 在C语言中,以下哪个选项是正确的结构体声明?A. struct {int a;float b;B. struct myStruct {int a;float b;};C. Both A and BD. None of the above答案:C15. 下列哪个选项是C语言中的动态内存分配函数?A. malloc()B. calloc()C. realloc()D. All of the above答案:D16. 在C语言中,以下哪个选项是正确的枚举类型声明?A. enum Color {RED, GREEN, BLUE};B. enum {RED, GREEN, BLUE};C. Both A and BD. None of the above答案:C17. 下列哪个选项是C语言中的联合体声明?A. union {int a;float b;} myUnion;B. union myUnion {int a;float b;};C. Both A and BD. None of the above答案:C18. 在C语言中,以下哪个选项是正确的宏定义?A. #define PI 3.14B. const double PI = 3.14;C. Both A and BD. None of the above答案:A19. 下列哪个选项是C语言中的文件操作函数?A. fopen()B. fclose()C. Both A and BD. None of the above答案:C20. 在C语言中,以下哪个选项是正确的递归函数声明?A. int factorial(int n);B. void printNumbers(int n);C. int factorial(int n) {if (n == 0) return 1;return n * factorial(n - 1);}D. All of the above答案:D二、填空题(每题2分,共20分)21. 在C语言中,`sizeof`运算符用于获取______的字节大小。
Program Pro Lang ProProblem ProLevel ProSource ProAnswer####2下面的程序是求500以内的所有的素数之和。
请修改程序中的错误,使它能得出正确的结果,并给出正确结果。
程序:0#include <conio.h>#include <stdio.h>#include <math.h>int prime(int n){ int yes, i;if(n<=1) {return 1;}yes=1;for(i=2; i<=sqrt(n); i++)if(n%i==0){ yes=0; break;}/*下行程序有错*/return 1;}main(){ int sum=0, i;clrscr();for(i=2;i<=500; i++)if(prime(i)) sum+=i;printf("%d\n", sum);}21536####2 下面的程序是求下式的和:s=1+1/(1+2)+1/(1+2+3)+......+1/(1+2+3+......+n)请改正程序中的错误,并运行修改后的程序, 当n=80时,给出程序运行结果(按四舍五入保留6位小数)。
程序:#include <stdio.h>#include <math.h>float fun(int n){ int i;float s=1.0, t=1.0;/*下行有错*/for(i=2; i<=n;i--){ t=t+i;s+=s+1/t;}return s;}main(){ printf("\n %f", fun(80));}1.975309####2下面的程序是求下式的和:s=1+1/(1+2)+1/(1+2+3)+......+1/(1+2+3+......+n)请改正程序中的错误,并运行修改后的程序, 当n=90时,给出程序运行结果(按四舍五入保留6位小数)。
1、编写程序,计算0~50范围内有多少个数,其每位数字之积小于每位数字和。
main()/*参考答案:17 */{ int k,a,b,n=0;for(k=10;k<=50;k++) /*一位数显然不满足条件*/{ a=k/10,b=k%10;if(a*b<a+b)n++;}printf("%d",n);}2、一个正整数如果等于其所有因子之和,则称该数为完数。
求10000以内完数的个数。
main(){ int k, s,n=0; /*参考答案:4 */for(k=6;k<10000;k++){ s=1; /*1是因子,直接作为和的初值*/ for(i=2;i<=k/2;k++) /*求k的所有因子之和*/if(k%i==0)s+=k;if(s==k)n++; /* k为完数时累计个数*/ }printf("%d",n);}3、求四位数的奇数中,各位数字之积是60的正整数倍的数的和。
main()/*参考答案:3456254 */{ int k,t;long s=0;for(k=2235;k<10000;k+=2){ t=(k/1000)*(k/100%10)*(k/10%10)*(k%10);if(t&&t%60==0)s+=k;}printf("%ld",s);}4、有5羊4犬3鸡2兔值钱1496,有4羊2犬6鸡3兔值钱1175,有3羊1犬7鸡5兔值钱958,有2羊3犬5鸡1兔值钱861。
求鸡值多少钱?main()/*参考答案:23 */{ int a,b,c,d;for(a=1;a<300;a++)for(b=1;b<300;b++)for(c=1;c<140;c++)for(d=1;d<200;d++){ if(5*a+4*b+3*c+2*d!=1496)continue;if(4*a+2*b+6*c+3*d!=1175)continue;if(3*a+b+7*c+5*d!=958)continue;if(2*a+3*b+5*c+d==861)goto RR;}RR:printf("%d",c);}解法二:main(){ int a,b,c,d;for(a=1;a<300;a++)for(b=1;b<300;b++)for(c=1;c<140;c++){ d=861-2*a-3*b-5*c;if(d<=0)break;if(5*a+4*b+3*c+2*d!=1496)continue;if(4*a+2*b+6*c+3*d=1175) goto RR;}RR:printf("%d",c);}5、求满足下列条件的四位数ABCD的个数:是8的倍数;A+B=B+C。
湖南省计算机二级3[1].(6分)程序阅读填空程序填空题一1. 下面C语言程序将两个递增有序的数值a和b 合并一个数组c,并保持递增次序,最后输出数组c. #include < stodio.h>#define M6#define N5main( ){int a[M]={1,3,5,7,9,11} b[N]={2,4,6,8,10}int c[M+N]int i ,j, k;i=j=k=0while( 1 )if a[i]<b[j]< bdsfid="73" p=""></b[j]<>c[k++]=a[i++];else c[k++]=b[j++];while( 2 )c[k++]=a[i++];while(j<n)< bdsfid="79" p=""></n)<>c[k++]=( 3 )for(k=0;k<( 4 );k[++])printf(%dxt,c[k]; )其中(1)(2)(3)(4)处分别填一数据,使程序达到其功能。
答案:1:i<m&&j<n< bdsfid="86" p=""></m&&j<n<>2:i<m;< bdsfid="88" p=""></m;<>3:b[j++];4:M+N2.下面h函数的功能是计算如下数学函数H的值。
请填空。
double fgh(double(*f)(double a),double (* g)(double b),double x,double y){return(【1】);}double h(double a,double b)return(fgh(sin,cos,a,b)* fgh(【2】));}解:(1)(*f)(x+y)/(*g)(y-x)(2)cos,sin,a,b[解析]本题考察的是函数的声明。
计算机二级《C语言》练习题及答案一、选择题1. C语言中,以下哪个选项不是合法的数据类型?A. intB. floatC. charD. string答案:D2. 在C语言中,以下哪个关键字用于定义结构体?A. structB. unionC. enumD. typedef答案:A3. 关于C语言的逻辑运算符,以下说法正确的是?A. && 的优先级高于 ||B. || 的优先级高于 &&C. && 和 || 的优先级相同D. 以上都不正确答案:A二、填空题1. 在C语言中,若定义了整型变量a,则其默认的初始化值为______。
答案:02. 在C语言中,若要定义一个长度为10的一维整型数组,应使用以下语句:______。
答案:int arr[10];3. 在C语言中,以下函数用于动态分配内存:______。
答案:malloc()三、编程题1. 编写一个C程序,实现以下功能:输入一个整数,判断它是否为水仙花数(水仙花数是指一个三位数,其各位数字的立方和等于该数本身,如153 = 1^3 + 5^3 + 3^3)。
```c#include <stdio.h>int main() {int num, a, b, c;printf("请输入一个三位数:");scanf("%d", &num);a = num / 100; // 百位数b = (num / 10) % 10; // 十位数c = num % 10; // 个位数if (aaa + bbb + ccc == num) {printf("%d 是水仙花数。
\n", num);} else {printf("%d 不是水仙花数。
\n", num);}return 0;}```2. 编写一个C程序,实现以下功能:输入10个整数,求出其中的最大值和最小值。
资料名称: C语言程序设计二级题库院系班级:软件学院1302软件工程姓名:阳兴学号:139894目录第一部分:应试攻略 (2)一、灵活运用多种求解方法 (2)二、熟悉基本问题的求解思路 (2)三、熟记典型问题的答案 (3)四、程序题考试操作要点 (4)第二部分:程序改错题典型范例 (6)第三部分:程序填空题典型范例 (8)第四部分:程序设计题典型范例 (11)第五部分:程序题主要考点 (14)【考点一】在一定范围内求满足条件的整数个数(或求最大最小值、求和)。
(14)【考点二】方程或不等式求整数解问题。
(21)【考点三】数列求项或求和问题 (28)第六部分:知识点归纳 (31)一、数据处理 (31)二、基本语句 (32)第一部分:应试攻略一、灵活运用多种求解方法由于湖南省二级考试所有程序题(包括:改错题、填空题和编程题)采取计算机自动评分,而评分的标准就是你最后填写的程序的运行结果而不是代码!因此,在不得已的情况下(有时也是更直接甚至是更简洁的办法),可利用以下方法之一解决问题!1、按自己的思路编程。
对于改错题或填空题,如果看不懂原代码,以至无法求解,可以按照自己的思路重写代码求解。
2、通过“Turbo C for Windows实验开发环境”之“典型源程序”获得求解方法甚至是源代码。
也可通过“库函数查询”获得相关函数的帮助信息。
如图1所示。
3、借助Windows附件中的计算器解决问题(如数制转换、开方、乘方、求和等)。
4、数学方法求解。
图1:通过开发环境获得程序信息5、利用EXCEL求解。
(示例中将重点介绍这种方法)二、熟悉基本问题的求解思路1、求整数的各位数字主要利用除法运算和求余运算。
基本思路是:先将要求的数字移到个位,再取出个位。
例如,x为四位数,则:x/1000:是千位数字。
(整型数据相除得到的商是整数)x/100%10:百位数字。
x/10%10:十位数字。
x%10:个位数字。
2、判断一个整数是否为素数判断整数N>2是否为素数的主要方法是:----若[3,sqrt(N)]上无N的因子,则N为素数。
----将区间改为为[3,N/2]或[3,N-1],上述结论仍然成立。
----将“因子”改为“质因子”或“奇数因子”,上述结论仍然成立。
要注意,1既不是素数,也不是合数。
在考试中,为了简便,建议将区间定为[3,N-1]。
参考代码如下:/*判断n是否为素数:返回1表示是,0表示否*/int isPrime(long n)/*判断奇数是否为质数*/{ long k;for(k=3;k<n;k+=2)if(n%k==0)break;return (k>=n); }3、判断一个整数是否为完全平方数设K、N均为long类型的变量,其中N已赋值为一个正整数,取K=sqrt(N)。
则N为完全平方数<=>K*K与N相等。
注意:使用sqrt函数时,一定要在main函数前添加预处理命令:#include "math.h"4、确定整数位数基本方法是删除个位法:while(n)k++,n/=10;这种方法也可用于解决:(1)整数逆序输出:while(n){printf("%d",n%10);n/=10;}(2)十进制整数化为R进制整数:whille(n){ y+=t*(n%r); /*y初值为0,t初值为1;1<r<10*/t*=10;n/=r;}/*y即为R进制整数(十进制表示形式)*/有时可用更简洁的方法确定整数位数。
如x是不超过五位数的整数,其位数为:(x>9999)+(x>999)+(x>99)+(x>9)+1。
三、熟记典型问题的答案1、完数:一个正整数N的约数和是N的倍数,则称N为完数。
10000内的完数只有七个:1、6、28、120、496、672、8128。
如果考题将完数定义为“真因子之和等于本身的数”,则完数不包括1、120、672。
2、水仙花数:一个三位正整数N的各位数字的立方和等于N,则称N为水仙花数。
水仙花数共四个:513、370、371、4073、完全平方数:即平方根为整数的正整数。
显然为:12、22、32、……4、质数:又名素数,指恰有两个约数的正整数。
100以内的质数共25个:2、3、5、7、11、13、17、19、23、29、31、37、41、43、47、53、59、61、67、71、73、79、83、89、97 5、同构数:如果N是N2的尾数,则称N是同构数。
[1,10000]上的同构数有八个:1,5,6,25,76,376,625,9376。
为了方便记忆,可分成二组:(1,5,25,625)、(6,76,376,9376)。
四、程序题考试操作要点1、程序改错题操作要点示例(1)打开VC或Turbo C for Windows开发环境,必要时创建文件;(2)复制代码。
在考试系统中单击“复制代码”按钮;(3)将代码粘贴到开发环境中;(4)审清题意,改正程序中的错误后,运行程序;(5)将程序运行时的显示结果填写到考试系统“程序改错题”的“结果”输入框中,如图2所示。
再单击“保存”按钮即可。
图2:程序改错题窗口图2:程序改错题操作界面一般而言,程序改错题不一定把每一条语句都看懂。
关键是审清题意,直接分析出现错误的语句的作用,从而纠正错误。
2、程序填空题操作要点示例(1)打开VC或Turbo C for Windows开发环境,必要时新建文件;(2)复制代码。
在考试系统中单击“复制代码”按钮;(3)将代码粘贴到开发环境中;(4)审清题意,填空后,运行程序;一般而言,程序填空题不一定把每一条语句都看懂。
关键是审清题意,记全、记准已知条件和需要解决的问题,直接分析填空处的语句作用,从而完成填空。
(5)将程序运行时的显示结果填写到考试系统“程序填空题”的“结果”输入框中,如图3所示。
再单击“保存”按钮即可。
图3:程序填空题操作界面对于程序设计题,直接在开发环境中完成程序的设计和调试,并将程序运行的结果填写在“结果”输入框中,再单击“保存”按钮即可。
当然,这一结果是你编程后得到的,还是你用数学方法或EXCEL得到的,计算机评分时不管这些,只要结果正确!第二部分:程序改错题典型范例1、下面给出的函数fun(n,r)用于返回二进制正整数n的r进制数(1<r<10)。
请改正程序中的错误后调试程序,并指出程序运行的结果。
long fun(long n,int r){ long y=0,t=1;while(n){ y+=t*(n%r);t*=10;n%=r; /*本行语句有错误*/}return t; /*本行语句有错误*/}main(){ long a=197;int r=7;printf("%ld",fun(a,r));}参考答案:n%=r; 改为n/=r;return t; 改为return y;输出结果:401解题技巧:A.十进制整数化为r进制整数的基本方法是除r取余法。
按照这种思路去阅读代码,很容易认清各语句的作用,从而纠正错误。
B.根据题目叙述,结合main函数的代码,程序就是输出197的7进制整数。
直接利用除7取余法即可用笔算得到结果。
或者,利用Windows的计算器得到结果。
EXCEL解法(1)在A1单元格输入十进制整数,在B1单元格输入R的值。
如图4所示。
(2)在A2输入公式:=INT(A1/$B$1)(3)在B2输入公式:=MOD(A1, $B$1)(4)选择A2至B2,向下拖填充柄,至A列出现0为此。
此时,由B列由下向上至B2,即为A1单元格整数化为R进制数。
2、相差为2的两个素数称为双胞胎图4:EXCEL求解图示数。
下列程序用于求[200,1000]上有多少对双胞胎数。
改正程序中的错误后调试程序,并指出程序运行的结果。
int isZ(int x){ int k=2;while(k*k<=x)if(x%k==0)continue;else k++; /*本行语句有错误*/return (x>1)&&(k*k>x);}main(){ int x,n=0;for(x=203;x<997;x+=2)if(isZ(x)||isZ(x+2))n++; /*本行语句有错误*/printf("%d",n);}参考答案:if(x%k==0)continue;else k++;改为if(x%k==0)break;else k++;if(isZ(x)||isZ(x+2))n++;改为if(isZ(x)&&isZ(x+2))n++;输出结果:20特别提示:return (x>1)&&(k*k>x); 不能修改为return k*k>x;否则1会认为是素数。
而1既不是素数,也不是合数。
解题技巧:根据题意,很容易分析出主函数中的if语句是用于判断x和x+2是否为素数的。
因此推断出,isZ函数的作用是判断素数。
而判断一个整数x是否为素数的基本方法就是在[2,sqrt(x)]上搜索x的约数。
按照这一思路分析代码,即可纠正错误。
3、下列程序用于计算四位数的奇数中,各位数字之积是60的正整数倍的数的和。
改正程序中的错误后调试程序,并指出程序运行的结果。
main(){ int k,t,s=0; /*本行语句有错误*/for(k=1001;k<10000;k+=2){ t=(k/1000)*(k/100%10)*(k/10%10)*(k%10);if(t%60==0)s+=t; /*本行语句有错误*/}printf("%ld",s);}参考答案:int k,t,s=0; 改为int k,t;long s=0;if(t%60==0)s+=t; 改为if(t&&t%60==0)s+=k;输出结果:3456254解题技巧:A.定义变量的语句出现错误,无非两种可能:变量初值错误或未赋初值。
一般而言,用于计数、求和的变量初值为0。
但要注意程序的处理方法,计数变量的初值也可能是1、求和变量的初值也可能是满足条件的第一个数据。
变量类型错误。
这主要是由于数据超过了变量的赋值范围。
建议对整数类计数或求和问题,将变量类型均定义为long类型。
本题中,从printf("%ld",s)也可看出变量s为long类型。
B.本题中的第二个错误很容易忽视:审题不清。
题目要求的是60的正整数倍,因此,还必须有条件t>0。
4、下列程序用于计算满足条件的四位数ABCD的个数:是8的倍数;A+B=B+C。