上海计算机二级c语言考试真题
1单选设有定义int a[10]; 则合法数组元素的下标范围为_0~9_____设有定义:int x=10,y=20,z=30; 则执行下列语句后的结果是___20,30,30_____ if ( x>y ) z=x;x=y; y=z;printf("%d,%d,%d",x, y, z );执行下列语句序列后,不可能出现的运行结果是________ int n;scanf( "%d", &n);switch ( n ){case 1:case 2: putchar('X');case 3:case 4: putchar('Y'); break; default: putchar('Z');}2填空设有以下程序段,则执行完该程序段后,变量 i 的值是________ int i;char s[]="Hello!", *p=s;for( i=0; *(p+i)!='\0';i++ );阅读以下程序并写出运行结果___________ #include <stdio.h>main(){int k,n=0;for ( k=1; k<=1000; k++ )if ( k%3==0 && k%5==0 ){printf( "%d ", k );n++;if ( n==3 ) break;}}3程序填空以下程序输入n和n个大于1的正整数,输出其中素数。
如输入:5 19 93 11 37 15则输出:19 11 37例示说明:先输入n为5,再输入5个正整数,输出5个整数中的素数#include <stdio.h>void main(){int n, a, i, j, ct;scanf( "%d", &n );for ( i=0; ____(1)____; i++ ){______(2)______;scanf( "%d", &a );for( j=2; j<a; j++ )if ( ____(3)____ )ct++;if ( ct==0 )printf( "%d ", a );}printf( "\n" );}以下程序从文件“student.txt”读取学生的学号、姓名、平时成绩和考试成绩,再从键盘上输入一个成绩,将所有考试成绩达到或超过该成绩的学生数据写到新的文本文件“studentD.txt”。
文件的最后一行为0表示学生数据结束。
设文件student.txt的内容为101 Zhao 95 58103 Qian 75 81105 Sun 99 91107 Li 80 67运行时键盘输入:80则生成新文件studentD.txt的内容为:103 Qian 75 81105 Sun 99 91例示说明:student.txt中考试成绩在80分以上的Qian与Sun信息写到studentD.txt源程序:#include <stdio.h>void select( FILE *fp1, FILE *fp2, int x ){int num, score1, score2;char name[20];while ( 1 ){num = 0;fscanf( fp1, "%d%s%d%d", &num, name, &score1, &score2 );if ( num == 0 )____(1)____;if ( ____(2)____ )fprintf( fp2, "%3d %-7s %3d %3d\n", num, name,score1, score2 );}fprintf( fp2, "0" );}void main(){FILE *fp1, *fp2;int x;fp1 = fopen( "student.txt", "r" );fp2 = fopen( "studentD.txt", ____(3)____ );if ( fp1==NULL || fp2==NULL ){ /* 文件打开失败 */printf( "File Open Error!\n" );return;}scanf( "%d", &x );select( ____(4)____ );fclose( fp1 );fclose( fp2 );}以下程序输入一个10进制整数,转换为16进制,计算16进制的各个位数,并从高位到低位依次输出。
如输入:687则输出:2 A F例示说明:10进制687等于16进制2AF,输出时2、A、F中间包含空格源程序:#include <stdio.h>void main(){int a[10], i, n;scanf( "%d", &n );for ( i=0; n>0; i++ ){a[i] = ____(1)____;n /= 16;}for ( i--; ____(2)____; ____(3)____ )printf( "%X ", a[i] );}三、程序调试题(本大题2小题,第1题4分,第2题6分,共10分)1. 程序调试题1(D_3_1.C)调试要求:下列程序不能得到正确的结果,请按题中的功能要求,调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括D_3_1.c 文件和D_3_1.exe文件)保存到目录C:\KS\中。
功能说明:以下程序计算并输出等差数列的累加和,数列的首项为a0,公差为d,项数为n。
如输入:-3 5 4则输出:sumx=18例示说明:-3为首项,5为公差,4为项数,前4项之和为18原程序(见C:\KS\D_3_1.C):#include <stdio.h>int sumx( int a0, d, n ){int i, k, s=0;k = a0;for ( i=0; i<n; i++ )s += k;k += d;return s;}void main(){int a0, d, n;scanf( "%d%d%d", &a0, &d, &n );printf( "sumx=%d\n", sumx(a0,d,n) );}2. 程序调试题2(D_3_2.C)调试要求:下列程序有3处错误,请按题中的功能要求,在不改变程序结构(不增加、删除语句,不调整语句顺序)的情况下调试并修改该程序(在所修改语句后加/*******/字样的注释),使其运行能得到正确的结果。
将结果(包括D_3_2.c文件和D_3_2.exe文件)保存到目录C:\KS\中。
功能说明:以下函数length返回字符串中字母A到字母Z所包含字符的长度。
主程序输入一行字符串,调用length函数输出该字符串中大写字母A到Z的子串长度。
如输入:Z2009-AShanghaiZ则输出:Length=8例示说明:从A到Z的子串为Shanghai,其长度为8原程序(见C:\KS\D_3_2.C):#include <stdio.h>int length( char *p ){char *q, *r;for ( q=p; *q!='\0' || *q!='A'; q++ );for ( r=q; *r!='\0' && *r!='Z'; r++ );return r-q;}void main(){char str[81];int n;gets( str[0] );n = length( str );printf( "Length=%d\n", n );}五、编程题(本大题2小题,每题18分,共36分)1.编程题1(D_5_1.C)编程要求:请按题中的功能要求,编写程序并能得到正确的结果。
将结果(包括D_5_1.C文件和D_5_1.exe文件)保存到目录C:\KS\中。
功能说明:键盘输入5个整数,按由小到大的顺序排序后输出。
如输入:10 0 20 -5 31则输出:-5 0 10 20 312.编程题2(D_5_2.C)编程要求:请按题中的功能要求,编写程序并能得到正确的结果。
将结果(包括D_5_2.C文件和D_5_2.exe文件)保存到目录C:\KS\中。
功能说明:键盘输入正整数n,计算并输出()11111123nn--+-+-的值,输出结果保留6位小数。
如输入:10则输出:0.645635。
全国计算机等级考试二级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语言中,文件操作完成后必须关闭文件,否则可能导致数据丢失。
06上海市计算机二级考试C语言
2006年上海市高等学校计算机等级考试试卷二级 (C 程序设计)(本试卷答卷时间为120分钟)试题一(28分,每小题4分)解答下列各小题,把解答写在答卷纸的对应栏内。
⑴ 设a ,b ,c 为整型并且a=3,b=5,c=7;写出下面表达式的值。
(注:对每小题求值时a=3,b=5,c=7保持不变)① c>b>a ② c%=a-b%1 ③ b/=c-b%4 ④ ++a==--b⑵ 简述break 和continue 语句在使用场合和功能方面的区别。
⑶ 执行下列程序后的输出结果是什么?void main() {int a, b, c;a=b=1;c=a++,b++,++b;printf("%d,%d,%d\n",a,b,c);}⑷ 执行下列语句后的输出结果是什么?#include <string.h>char s1[]="12345", s2[]="1234";printf("%d\n",strlen(strcpy(s1,s2)));printf("%s\n",s1+s2);⑸ 写出数学计算式|1|72sin x y +=的C 语言表达式。
⑹ 写出宏定义s(x,y)的含义,执行下列程序后的输出结果是什么?#define s(x,y) x=x+y,y=x-y,x=x-yvoid main() {int a=12, b=9;s(a,b);printf("a=%d\tb=%d\n",a,b);}⑺ 用文字描述以下程序段所完成的功能:FILE *fr, fw;fr=fopen("a.txt", "r")fw=fopen("b.txt","w");while(!feof(fr))fputc(fgetc(fr),fw);fclose(fr);fclose(fw);试题二(12分,每小题6分)阅读下列程序,把程序的输出结果写在答卷纸的对应栏内。
计算机二级考试c语言考试真题及答案
计算机二级考试c语言考试真题及答案一、单项选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于声明一个函数?A. intB. voidC. returnD. function答案:A2. 若有定义:int a=5, b=10; 则以下哪个表达式的值不为5?A. a+bB. a-bC. a*bD. a/b答案:C3. 在C语言中,以下哪个选项不是标准输入输出库函数?A. printf()B. scanf()C. puts()D. strcat()答案:D4. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. _variableD. variable-2答案:B5. 若有定义:char c='A'; 则以下哪个表达式的值不为65?A. cB. 'A'C. "A"D. '\101'答案:C6. 在C语言中,以下哪个选项表示逻辑“与”操作?A. &&B. ||C. !D. =答案:A7. 在C语言中,以下哪个选项是正确的字符串声明?A. char str[5] = "ABCDE";B. char str[5] = {'A', 'B', 'C', 'D', 'E'};C. char str[5] = {'A', 'B', 'C', 'D'};D. char str[5] = "ABC" "DE";答案:D8. 若有定义:int x=10; 则以下哪个表达式的值不为10?A. x++B. x--C. ++xD. --x答案:D9. 在C语言中,以下哪个选项是正确的二维数组声明?A. int array[3][2];B. int array[][] = {1, 2, 3};C. int array[3][];D. int array[2, 3];答案:A10. 在C语言中,以下哪个选项是正确的文件操作函数?A. fopen()B. fclose()C. fgetc()D. All of the above答案:D二、程序填空题(每空2分,共20分)给定以下程序片段,请在空白处填入正确的代码。
计算机二级c语言考试真题及答案详解
计算机二级c语言考试真题及答案详解一、单项选择题(每题2分,共40分)1. 在C语言中,以下哪个选项是合法的整型常量?A. 0x12B. 0x12.3C. 0x12LD. 0x12.3L答案:A2. 若有定义int a=1, b=2;,则以下哪个表达式的值不为真?A. a<bB. a<=bC. a>bD. a!=b答案:C3. 在C语言中,以下哪个选项是合法的字符串字面量?A. "Hello, World"B. 'Hello, World'C. "Hello, World\n"D. "Hello, World\0"答案:A4. 下列哪个函数不能正确计算数组元素的总和?A. sum = 0; for(i=0; i<n; i++) sum += array[i];B. sum = 0; for(i=0; i<n; i++) sum = sum + array[i];C. sum = 0; for(i=0; i<n; i++) sum = array[i];D. sum = 0; for(i=0; i<n; i++) sum += array[i];答案:C5. 在C语言中,以下哪个选项是合法的函数声明?A. int add(int, int);B. int add();C. int add(int a, int b);D. int add(a, b);答案:C6. 若有定义int a[10];,则以下哪个表达式是合法的数组元素访问?A. a[10]B. a[-1]C. a[3.5]D. a[3]答案:D7. 在C语言中,以下哪个选项是合法的指针声明?A. int *ptr;B. int *ptr[];C. int ptr*;D. int ptr[];答案:A8. 若有定义int x=10;,则以下哪个表达式是合法的赋值语句?A. x = x + 1;B. x = 1 + x;C. x = x++;D. x = ++x;答案:A9. 在C语言中,以下哪个选项是合法的循环语句?A. for(;;)B. while(1)C. do {} while(0)D. for(;;) {}答案:D10. 若有定义int a[5] = {1, 2, 3, 4, 5};,则以下哪个表达式是合法的数组元素访问?A. a[5]B. a[-1]C. a[2.5]D. a[2]答案:D11. 在C语言中,以下哪个选项是合法的switch语句?A. switch(x) { case 1: break; }B. switch(x) { default: break; }C. switch(x) { case 1: case 2: break; }D. switch(x) { case 1: default: break; }答案:C12. 若有定义int x=5;,则以下哪个表达式是合法的自增运算?A. x++;B. ++x;C. x--;D. --x;答案:A13. 在C语言中,以下哪个选项是合法的函数原型声明?A. void func();B. int func(int);C. void func(int a);D. All of the above答案:D14. 若有定义int a=3;,则以下哪个表达式是合法的位运算?A. a & 2B. a | 2C. a ^ 2D. All of the above答案:D15. 在C语言中,以下哪个选项是合法的宏定义?A. #define PI 3.14159B. #define PI 3.14159fC. #define PI 3.14159LD. All of the above答案:A二、编程题(每题30分,共60分)1. 编写一个函数,计算并返回一个整数数组中所有元素的和。
上海市高等学校计算机等级考试试卷二级C语言程序设计(B卷)
上海市⾼等学校计算机等级考试试卷⼆级C语⾔程序设计(B卷)上海市⾼等学校计算机等级考试试卷⼆级 C语⾔程序设计( B 卷)⼀、单选题1. 下列C语⾔的标识符中,不合法的标识符为____________A. starB. 1234C. _a100D. circuit92. 若已定义: int x=10;则表达式 x=(4*5,x*5,x+25) 的值是 ______ 。
A. 20B. 45C. 125D. 353. 若x是int类型变量,y是float类型变量,则为了将数据55和55.5分别赋给x和y,则执⾏语句: scanf(“%d, %f”,&x,&y,); 时,正确的键盘输⼊是 ______ 。
A. 55,55.5↙B. x=55, y=55.5↙C. 55↙55.5↙D. x=55↙y=55.5↙4. 若有说明语句:int x=25,y=20,z=30;则执⾏语句:if(x>y) {y=z; z=x;} x=y; printf(“%d,%d,%d”,x,y,z); 后,输出是____________A. 25,20,30B. 30,30,25C. 25,30,30D. 25,30,255. 程序段:int num=2;while(num)printf(“%d ,”,num--);的运⾏结果是_______________A. 2,1,B. 2,1C. 2,1,06. 若有说明:int a[3][4],s;则对数组a的元素引⽤正确的是____________A. s=0; for(i=0;i<=3;i++) for(j=0;j<4;j++) s+=a[i][j];B. s=0; for(j=0;j<=4;j++) for(i=0;i<3;i++) s+=a[i][j];C. s=0; for(i=0;i<4;i++) for(j=0;j<=3;j++) s+=a[j][i];D. s=0; for(i=0;i<3;i++) for(j=0;j<4;j++) s+=a[i][j];7. 如果形参获取实参的地址,则____________作为函数调⽤时的实参。
上海市高等学校计算机等级考试试卷二级C语言程序设计
20XX年上海市高等学校计算机等级考试试卷二级 C语言程序设计(本试卷考试时间 120 分钟)一、单选题 ( 本大题 15 道小题,每小题 1 分,共 15 分),从下面题目给出的A、B、C、D四个可供选择的答案中选择一个正确答案。
1. 以下C程序中预处理命令写法正确的是:答案: DA. #include (stdio.h)B. #include [stdio.h]C. #include {stdio.h}D. #include <stdio.h>2. 设有变量定义语句char a; 则下面的赋值语句中 ( ) 是正确的。
答案: AA. a='&';B. a="&";C. a=' ' ';D. a='16' ;3. 设有char ch; 与语句“ch=getchar();”等价的语句是:答案: DA. printf("%c",ch);B. printf("%c",&ch);C. scanf("%c",ch);D. scanf("%c",&ch);4. int a=2, b=5;则表达式21%9/(float)a+4/b*b的运算结果为( )。
答案: CA. 2B. 1C. 1.5D. 05. 能正确表示逻辑关系"a>=10 或 a<=0"的C语言表达式是( )。
答案: CA. a>=10 or a<=0B. a<=0|a>=10C. a<=0||a>=10D. a>=10 && a<=06. 设有int n=60;写出下列语句的运行结果switch (n/10){case 6: printf("@");break;case 5: printf("#");default: printf("$");}答案: DA. @#$B. #$C. $D. @7. 设有int i; 以下语句中,循环次数为100次的语句是:答案: DA. for ( i=0; i<=100; i++ )B. for ( i=0; i<99; i++ )C. for ( i=1; i<99; i++ )D. for ( i=0; i<100; i++ )8. C程序中,用于提前结束本次循环、进行下一次循环的语句是( )。
上海计算机二级C语言考试真题
1单选设有定义int a[10]; 则合法数组元素的下标范围为_0~9_____设有定义:int x=10,y=20,z=30; 则执行下列语句后的结果是___20,30,30_____ if ( x>y ) z=x;x=y; y=z;printf("%d,%d,%d",x, y, z );执行下列语句序列后,不可能出现的运行结果是________ int n;scanf( "%d", &n);switch ( n ){case 1:case 2: putchar('X');case 3:case 4: putchar('Y'); break;default: putchar('Z');}2填空设有以下程序段,则执行完该程序段后,变量 i 的值是________ int i;char s[]="Hello!", *p=s;for( i=0; *(p+i)!='\0';i++ );阅读以下程序并写出运行结果___________ #include <stdio.h>main(){int k,n=0;for ( k=1; k<=1000; k++ )if ( k%3==0 && k%5==0 ){printf( "%d ", k );n++;if ( n==3 ) break;}}3程序填空以下程序输入n和n个大于1的正整数,输出其中素数。
如输入:5 19 93 11 37 15则输出:19 11 37例示说明:先输入n为5,再输入5个正整数,输出5个整数中的素数#include <stdio.h>void main(){int n, a, i, j, ct;scanf( "%d", &n );for ( i=0; ____(1)____; i++ ){______(2)______;scanf( "%d", &a );for( j=2; j<a; j++ )if ( ____(3)____ )ct++;if ( ct==0 )printf( "%d ", a );}printf( "\n" );}以下程序从文件“student.txt”读取学生的学号、姓名、平时成绩和考试成绩,再从键盘上输入一个成绩,将所有考试成绩达到或超过该成绩的学生数据写到新的文本文件“studentD.txt”。
上海市c语言二级计算机试题及答案
上海市c语言二级计算机试题及答案一、单项选择题(每题2分,共20分)1. 在C语言中,以下哪个关键字用于定义一个结构体?A. structB. unionC. enumD. typedef答案:A2. 下列哪个选项是正确的C语言变量声明?A. int a, b;B. int a; b;C. int a; int b;D. int a, b;答案:D3. 在C语言中,以下哪个运算符用于执行算术运算?A. %B. &&C. ==D. +答案:D4. 在C语言中,以下哪个函数用于将字符串从源复制到目标?A. strcpy()B. strcat()C. strcmp()D. strlen()答案:A5. 下列哪个选项是正确的C语言函数定义?A. int function(int x) { return x; }B. int function(int x) { return x; }C. int function(int x) { return x; }D. int function(int x) { return x; }答案:B6. 在C语言中,以下哪个关键字用于声明一个函数?A. intB. voidC. returnD. function答案:B7. 下列哪个选项是正确的C语言数组声明?A. int array[5];B. int array[];C. int [5] array;D. int array;答案:A8. 在C语言中,以下哪个关键字用于声明一个指针?A. *B. &C. %D. #答案:A9. 在C语言中,以下哪个函数用于计算字符串的长度?A. strcpy()B. strcat()C. strcmp()D. strlen()答案:D10. 下列哪个选项是正确的C语言函数返回类型声明?A. void function()B. int function()C. function()D. void function答案:B二、填空题(每题2分,共10分)1. 在C语言中,使用________关键字可以定义一个函数。
上海二级c语言考试真题及答案
上海二级c语言考试真题及答案一、选择题(每题2分,共20分)1. 下列哪个选项是C语言中的关键字?A. intB. integerC. stringD. array答案:A2. C语言中,哪个函数用于计算并返回字符串的长度?A. strlen()B. length()C. strleng()D. strlength()答案:A3. 在C语言中,以下哪个选项是正确的整型常量表示?A. 0x1FB. 0X1FC. 0x1fD. 0X1f答案:C4. 下列哪个选项是C语言中的正确注释方式?A. /* 这是一个注释 */B. // 这是一个注释C. /*这是一个注释*/D. //这是一个注释答案:A5. 在C语言中,哪个运算符用于计算两个数的乘积?A. +B. -C. *D. /答案:C6. 在C语言中,以下哪个选项是正确的浮点型常量表示?A. 3.14B. 3.14eC. 3.14E2D. 3.14e2答案:C7. 在C语言中,以下哪个选项是正确的字符常量表示?A. 'a'B. "a"C. '123'D. "123"答案:A8. 在C语言中,以下哪个选项是正确的字符串常量表示?A. "Hello World"B. 'Hello World'C. "Hello" "World"D. 'Hello' 'World'答案:A9. 在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};答案:B10. 在C语言中,以下哪个选项是正确的函数声明?A. int add(int a, int b);B. int add(int, int);C. int add(int a, b);D. int add(a, b);答案:A二、填空题(每题3分,共15分)1. C语言中,用于输入的函数是________。
上海市计算机二级c语言试题及答案
上海市计算机二级c语言试题及答案一、选择题(本大题共10小题,每小题2分,共20分。
每小题只有一个选项是正确的,请将正确答案的字母填在题后的括号内。
)1. C语言中,用于定义一个结构体类型的关键字是()。
A. structB. unionC. enumD. typedef2. 以下哪个选项是合法的C语言用户标识符?()A. 2dollarB. intC. _123abcD. float3. 在C语言中,用于定义一个整型数组的语句是()。
A. int a[10];B. int a[];C. int a=10;D. int a(10);4. 下列哪个函数不能用于字符串连接?()A. strcatB. strcpyC. strncatD. printf5. 在C语言中,用于声明一个函数的关键字是()。
A. defineB. typedefC. externD. static6. 以下哪个选项不是C语言中的运算符?()A. %B. &&C. ::D. <7. C语言中,用于表示逻辑“与”操作的运算符是()。
A. &&B. ||C. !D. &8. 在C语言中,以下哪个选项不是合法的赋值语句?()A. a = b;B. a = b = c;C. a = (b = c);D. a = (b, c);9. 在C语言中,以下哪个选项不是合法的循环语句?()A. forB. do-whileC. whileD. repeat-until10. C语言中,用于定义一个指针变量的语句是()。
A. int *p;B. int p*;C. int *p = 0;D. int p = 0;二、填空题(本大题共5小题,每小题4分,共20分。
请将答案填在题后的横线上。
)1. 在C语言中,表示逻辑“或”操作的运算符是______。
2. C语言中,用于计算两个整数的最大公约数的函数是______。
