2012C语言考试复习资料

合集下载

2012年9月 全国计算机二级C语言(完整复习资料)

2012年9月 全国计算机二级C语言(完整复习资料)

小歆工作室 /National Computer Rank Examination全国计算机等级考试(2012年9月串讲资料)二级C 公共基础 (小歆工作室)教学研究部 编内部资料 仅限学员所含内容: C 语言知识复习资料 公共基础知识资料 笔试机试注意事项 笔试真题及答案 根据新大纲结合近几年考试走向编写! 配套资料为新视野教育二级教程教材。

2012年9月考前冲刺复习专用资料。

第一部分 C语言知识复习资料第一章C语言基本知识【考点1】C程序用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。

源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。

C语言有三种基本结构:顺序结构、选择结构、循环结构。

【考点2】main函数又称主函数,是C程序的入口。

main后面跟一对小括号和一对花括号,花括号括起来的部分称为main函数的函数体。

一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。

每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。

【考点3】存储形式计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。

二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。

数据的存放位置就是它的地址。

【考点4】注释是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。

【考点5】书写格式每条语句的后面必须有一个分号,分号是语句的一部分。

一行内可写多条语句,一个语句可写在多行上。

【考点6】标识符是标识名字的有效字符序列,可以理解为C程序中的单词。

标识符的命名规则是:(1)标识符只能由字母、数字和下划线组成,字母区分大小写。

2012计算机国二C语言等级考试 题库(内部资料)程序编辑

2012计算机国二C语言等级考试    题库(内部资料)程序编辑

24. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能 是:将字符串的前导*号全部移到字符串的尾部。函数fun中给出的函数 仅供参考。 void fun(char *a) { int i=0,n=0; char *p; p=a; while(*p=='*') { n++; p++; } while(*p) { a[i]=*p; i++; p++; } while(n!=0) { a[i]='*'; i++; n--; } a[i]='\0'; } 25. 请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9 整除的所有自然数的倒数之和。 double fun(int n) { int i; double sum=0.0; for(i=1;i<=n;i++) if(i%5==0||i%9==0) sum+=1.0/i;
中‘a’至‘z’26个小写字母各自出现在的次数,并依次放在pp数组中。 void fun(char*tt, int pp[ ]) { char *p=tt; int i; for(i=0;i<26;i++)pp[i]=0; while(*p){ if(*p>=’a’&&*p<=’z’)pp[*p-‘a’]+=1; p++; } } 16 函数fun的功能是:将s所指字符串中ASCII值为偶数的字符删除,串 中剩余字符形成一个新串放在t所指数组中。 #include <stdio. h> #include <string. h> void fun (char*s, char t[]) { int i, j=0; for(i=0;i<strlen(s);i++)if(s[i]%2)t[j++]=s[i]; t[j]=0; } 17.. 请编写函数fun,函数的功能是:求出1到1000之间能被7或11整除, 但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过 n返回这些数的个数。 #include <stdio. h> viod fun (int *a,int *n) { int i; *n=0; for(i=7;i<1000;i++) if(((i%7)==0│|(i%11)==0&&(i%77)!=0) a[(*n)++]=i; } 18. 请编写函数fun,函数的功能是:利用一下所示的简单迭代方法求方 程求方程:cos(x)-x=0的一个实根。xn+1=cos(xn)迭代步骤如下:

c语言期末复习资料

c语言期末复习资料

c语言期末复习资料C语言是计算机科学中非常基础的一门编程语言,是程序员必须掌握的技能之一。

由于其简单易学的特点和广泛的应用范围,越来越多的人开始学习和使用C语言。

期末考试是C语言学习过程中的重要节点,为了帮助考生顺利通过考试,本文整理了一些C语言期末复习资料以供参考。

一、基础知识1.变量和数据类型C语言中的变量用于存储程序中使用的数据,数据类型是指变量所代表的数据的类型。

常见的C语言数据类型包括整型、浮点型、字符型、布尔型等。

掌握变量和数据类型的定义和使用是C 语言学习的第一步。

2.运算符和表达式C语言中的运算符用于对变量进行运算和操作,包括算术运算符、关系运算符、逻辑运算符等。

表达式是由变量和运算符组成的代码段,用于对变量进行操作和计算。

掌握运算符和表达式的使用和规则是C语言学习的基础。

3.条件语句和循环语句条件语句和循环语句是C语言中的两种重要的控制结构。

条件语句根据条件的真假来执行不同的代码段,常见的条件语句包括if语句和switch语句。

循环语句用于重复执行同一个代码段,常见的循环语句包括for循环、while循环和do-while循环。

掌握条件语句和循环语句的使用和应用是C语言学习的重要环节。

二、进阶技巧1.字符数组和字符串字符数组和字符串是C语言中非常常用的数据类型,用于处理字符和文本。

字符数组是由若干个字符组成的数组,字符串是由若干个字符组成的字符串常量。

掌握字符数组和字符串的定义和使用,能够更好地处理文本和数据输入输出等问题。

2.函数和指针函数是C语言中的重要的模块化编程方法,函数将程序的功能分解为若干个具有特定功能的独立模块。

指针是C语言中的重要的数据类型,它存储变量的内存地址,常用于访问复杂数据结构和实现高效的内存管理。

掌握函数和指针的使用和细节能够更好地组织程序和提高程序的执行效率。

3.结构体和文件操作结构体是C语言中用于组织复杂数据结构的数据类型,常用于存储各种类型的数据记录。

C语言期末考试复习资料2012

C语言期末考试复习资料2012

用do-while语句实现循环
do-while语句的特点:先执行循环体,然后判断 循环条件是否成立。 一般形式: do { 循环体语句 } while (表达式); 执行过程:先执行一次指定的循环体语句,然后判别 表达式,当表达式的值为非零(“真”) 时,返回重 新执行循环体语句,如此反复,直到表达式的值等 于0为止,此时循环结束。
例如:为了保证输入成绩的正确,可以使用语句: printf("请输入学生成绩a(0-100):"); scanf("%d",&a); while (a<0||a>100) { printf("\n 输入有误,请重输: "); scanf("%d",&a); }
我们更简洁地用do-while语句
do { printf(“请输入成绩 a(0-100):”); scanf(“%d”,&a); }while(a<0||a>100);
C运算符简介 C的运算符有以下几类: (1)算术运算符 (+ - * / %) (2)关系运算符 (> < == >= <= !=) (3)逻辑运算符 (! && ||) (4)位运算符 (<< >> ~ | ∧ &) (5)赋值运算符 (=及其扩展赋值运算符) (6)条件运算符 (?:)
算术运算符和算术表达式 基本的算术运算符: • + (加法运算符或正值运算符如:3+5、+3) • - (减法运算符或负值运算符,如:5-2、-3) • * (乘法运算符。如:3*5) • / (除法运算符,如果是两边是整数则是求商) • % (求余运算符,%两侧必须为整型数据)
几个典型的判断: 判断大写字母: if(‘A’<=c && c<=‘Z’) 判断小写字母: if(‘a’<=c && c<=‘z’) 判断数字: if(‘0’<=c && c<=‘9’) 判断闰年: if((year%4==0&&year%100!=0)||year%400==0)

2012程序设计复习

2012程序设计复习

2012程序设计复习一、绪论1.C程序的基本结构一个main函数和若干个其他函数构成2.C程序的运行步骤编辑、编译、连接、运行3.保留字、标识符保留字:系统规定,有特定含义,不能用作其他用途标识符:由字母或下划线开头,字母、下划线和数字构成二、顺序结构1.常量整型常量123 0123 0x123 123L字符常量‘a’转义字符常量‘\t’‘\n’‘\\’‘\123’‘\x1a’字符串常量“12345”实型常量123.45 1.5e-3 1.5e5符号常量#define ...2.变量int long short unsigned char float double 指针变量、枚举变量例:enum color { red ,yellow,blue,white,black};enum color x,y,z;x=red; y=blue;构造类型的变量:数组、结构、联合、类3.表达式算术表达式(+ - * / %)例:(-b+sqrt(b*b-4*a*c))/(2*a)关系表达式( < <= > >= == != )例:A+b>=c逻辑表达式(! && || )a&&b&&cA||B||C例:设有以下程序段int x=2, y=2, z=0, a;a=++x||++y&&z++;printf(“%d, %d, %d\n”, x,y,z);执行后输出的结果是:3,2,0条件表达式(? : )例:Max=x>y?x:y逗号表达式,例:A=(3+x,x+7,x+y+z);位运算表达式( & | ^ ~ << >> )例:C=a^b赋值表达式=例:x=(1+2)*3/8/4;复合赋值表达式( += -= *= /= %= &= |= ^= ~= <<= >>= )例:X+=y w&=z t*=x+y4.输入输出函数Ch=getch() 输入字符,不在屏幕显示Ch=getchar() 输入字符,在屏幕显示gets(ch) 输入字符串,在屏幕显示scanf(“格式控制”,地址列表) 任意类型数据输入putchar(ch) 输出字符puts(ch) 输出字符串printf(“格式控制”,变量列表) 任意类型数据输出%d %md %-md%o %x %u %ld %hd%c %s %f %e %lf %le三、分支结构1.if(e) s;例:scanf(“%d”,&x);if(x>=0) printf(“x=%d\n”,x);2.if(e) s1 ;else s2;例:scanf(“%d”,&x);if(x>=0) y=x;else y=-x;printf(“y=%d\n”,y);3.if的嵌套例:输入成绩,输出等级scanf(“%f”,&x);if(x>=90) y=’A’else if(x>=80) y=’B’;else if(x>=70) y=’C’;else if(x>=60) y=’D’;else y=’E;printf(“y=%c\n”,y);也可以改成下面形式:scanf(“%f”,&x);if(x>=60)if(x>=70)if(x>=80)if(x>=90) y=’A’;else y=’B’;else y=’C’;else y=’D’;else y=’E’;printf(“y=%c\n”,y);4.switch结构例:输入成绩,输出等级scanf(“%f”,&x);k=x/10;switch(k){ caes 9:case 10: y=’A’;break;case 8: y=’B’;break;case 7: y=’C’;break;case 6: y=’D’;break;default : y=’E’;}printf(“y=%c\n”,y);5.break四、循环结构1.while(e) s;2.for(e1;e2;e3) s;例:求s=1-1/2+1/3-1/4+1/5-1/6+…前10项之和main(){ float s=0,t;int I,p=1;For(i=1;i<=10;i++){ t=1.0*p/i;S=s+t;p=-p;}printf(“s=%f\n”,s);}3.do s while(e) 4.break continue goto 5.循环嵌套例: #include<stdio.h>{ int k=1,m=2,i,j;for(i=0;i<3;i++){ for(j=0;j<4;j++)k++;k=k-j;}m=i+j;printf("m=%d\n",k);}结果为: m=1五、函数与宏定义1.函数定义类型函数名(形参及类型说明){ 局部变量及类型说明;语句;Return 表达式;}2.函数声明类型函数名(形参及类型说明);3.函数调用变量名=函数名(实际参数);函数名(实际参数);4.函数返回值return例1:# include <stdio.h>int isprime(int x);void main(){int i;for(i=10; i<=20; i++)if (isprime(i))printf(“%d “, i);int isprime(int x){int i;for(i=2; i<x; i++)if (x%i==0)return 0;return 1;}结果:11,13,17,19例2:#include "stdio.h"void aaa(int a[2],int b,int *c);main(){ int w[2]={10,20},x=30,y=40,*z=&y;aaa(w,x,z);printf("%d %d %d %d\n",w[0],w[1],x,y);}void aaa(int a[2],int b,int *c){ a[0]++;a[1]++;b++;(*c)++;}结果:11 21 30 41例3:p29 例1-155.局部变量和全局变量全局变量:函数外定义,有效范围从定义位置开始到原文件结束局部变量:函数内定义,有效范围从定义位置开始到该函数结束6.变量的存储类别全局变量:extern static 局部变量:auto register static7.函数的递归和嵌套8.预处理宏定义:#define文件包含:#include六、数组1.一维数组的定义和使用int a[10];2.一维数组的初始化float b[6]={1,2,3,4,5,6};3.一维数组应用(冒泡排序、选择排序)# include <stdio.h># include <stdlib.h># include <time.h>void sort(int a[], int n);void main(){int i,b[20];srand(time(NULL);for(i=0; i<20; i++)b[i]=rand();sort(b, 20);for(i=0; i<20; i++)printf(“%d “, b[i]);}void sort(int a[], int n){ int I,j,k;For(i=0;i<n-1;i++){ k=i;For(j=i+1;j<n;j++)If(a[j]<a[k]) k=j;If(k!=i){t=a[i];a[i]=a[k];a[k]=t;}}}4.多维数组的定义和使用int x[3][4];5.多维数组的初始化int x[3][4]={{1},{2},{3}};6.字符数组的定义和使用char a[10];7.字符数组的初始化char y[5]={‘a’,’b’,’c’,’d’};char z[5]= “abcd “;8.字符数组和字符串的关系char a[30];int i;scanf(“%s”,a) 或gets(a)或for(i=0;i<30;i++) scanf(“%c”,&a[i])9.字符串的标准函数gets puts strlen strcpy strcmp10.数组名作函数中的形参双向传地址七、指针1.变量的指针int j, *p=&j2.一维数组的指针以下语句执行完成之后的结果是: 1 2int a[5]={1,2,3,4,5}, *p=a, b;b=*p++;printf(“%d %d\n”, b, *p);3.指针数组int *p[n];4.指向具有n个元素的一维数组指针int (*p)[n];5.指针作函数中形参双向传地址八、构造类型1.结构类型定义struct 类型名{ 类型分量名;…};2.结构体的嵌套3.结构类型变量的定义和使用、初始化定义一个学生结构体,包含:姓名、三门课成绩、三门课平均成绩。

2012年c语言背诵复习资料(10页)

2012年c语言背诵复习资料(10页)

C语言2012年寒假背诵版本1、结构化程序是由顺序结构、选择结构(分支结构)、循环结构三大结构组成。

2、读程序时都要从main()入口, 然后从main中第一行程序依次顺序往下读。

3、计算机数据在电脑中保存是以二进制形式存放的。

4、bit是位,二进制中的0或1。

byte 是指字节,一个字节=八位。

5、编译预处理不是C语言,不占运行时间,不要加分号。

6、define PI 3.1415926; 这个写法是错误的,后面一定不能出现分号。

7、每个C语言程序中main函数有且只有一个。

8、在函数中不可以再定义函数。

但是函数中可以再调用函数。

9、算法:可以没有输入,但是一定要有输出。

10、break可用于循环结构和switch语句。

11、逗号运算符的级别最低,赋值的级别倒数第二。

第一章C语言的基础知识第一节1、C语言编写的程序称为源程序,又称为编译单位。

2、C语言书写格式是自由的,每行可以写多个语句,可以写多行。

3、一个C语言程序有且只有一个main函数,是程序运行的起点。

第二节1、VC是软件,用来运行写的C语言程序,上机考试的系统为VC6.0。

2、每个C语言程序写完后,都是先编译,后链接,最后运行。

(.c---→.obj---→.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行。

(常考!)第三节1、标识符(必考内容):合法的要求是由字母,数字,下划线组成。

并且第一个必须为字母或则是下划线,不可以是数字。

2、标识符分为关键字、预定义标识符、用户标识符。

关键字:不可以作为用户标识符号,都是小写。

main、define、scanf、printf 都不是关键字。

迷惑你的地方If是可以做为用户标识符。

因为If中的第一个字母大写了,所以不是关键字。

预定义标识符:背诵define scanf printf include。

记住预定义标识符可以做为用户标识符。

用户标识符:基本上每年都考,详细请见书上习题。

2012年全国计算机等级考试三级C语言南开100道分类提纲版(附答案)

2012年全国计算机等级考试三级C语言南开100道分类提纲版(附答案)

一、素数: 1 34 55 64 66 821: 将大于整数m且紧靠m的k个素数存入数组xx传回34:选出100以上1000之内所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数55:求出300个四位数是素数的个数,并从小到大进行排序64:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数以及这些I之和66:计算500-800内素数的个数,按从大到小顺序计算其间隔加、减之和82:求出300个四位数是素数的个数,再求出所有满足此条件的四位数平均值pjz1以及不满足此条件的四位数平均值pjz2二、结构体操作: 7 13 38 12 32 42 31 47 61 99 60 757: 按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列13:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列38:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列12:按产品名称从小到大进行排列,若产品名称相等,则按金额从小到大进行排列32:按产品名称从大到小进行排列,若产品名称相等,则按金额从小到大进行排列42:按产品名称从大到小进行排列,若产品名称相等,则按金额从大到小进行排列31:按金额从大到小进行排列,若金额相同,则按产品代码从大到小进行排列47:按金额从大到小进行排列,若金额相等,则按产品代码从小到大进行排列61:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列99:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列60: 有200组数据,每组有3个数,每个数均是三位数,找出条件为每组中第二个数大于第一个数加第三个数的之和,存入结构数组bb中,再对bb中的数据按照每组数据的第二个数加第三个之和的大小进行降序排列75: 有200组数据,每组有3个数,每个数均是三位数,找出条件为每组中第一个数大于第二个数加第三个数的和,存入结构数组bb中,再对bb中的数据按照每组数据的第一个数加第三个之和的大小进行升序排列 if(aa[i].x1>(aa[i].x2+aa[i].x3)) bb[cnt++]=aa[i];if(bb[i].x1+bb[i].x3>bb[j].x1+bb[j].x3) { xy=bb[i]; bb[i]=bb[j]; bb[j]=xy;}三、字符替换与移位: 8 36 56 62 98 95 96 18 37 97 10 73 11 63 16 100 74 178: f(p)值小于等于32或大于130,则该字符不变36:f(p)值小于等于32或f(p)对应的字符是数字0至9,则该字符不变56:f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变62:f(p)值小于等于32或其ASCII值是偶数,则该字符不变98:f(p)值小于等于32或其ASCII值是奇数,则该字符不变95:f(p)值小于等于32或f(p)对应的字符是大写字母,则该字符不变96:f(p)值小于等于32或f(p)对应的字符是小写字母,则该字符不变18:原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变37:原字符是大写字母或计算后f(p)值小于等于32,则该字符不变97:原字符是数字字符0至9或计算后f(p)值小于等于32,则该字符不变10:把字符串中的所有小写字母改写成该字母的下一个字母,如果是字母z,则改写成字母a73:把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z 11:把s字符串中的所有字母改写成该字母的下一个字母,字母z改写成字母a (指针) 63:把s字符串中的所有字符左移一个位置,串中的第一个字符移到最后 (指针)16:把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值74:把字符串中所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符100:把字符串中的最后一个字符的ASCII值右移4位后加最后第二个字符的ASCII值,得到最后一个新的字符,第一个字符的ASCII值加原最后一个字符的ASCII值,得到第一个新的字符17:第一个字符加第二个字符=新字符,最后逆排序 strrev(xx[i]);四、字符串位置倒置: 33:把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放五、字符串单词倒置: 44:对行中以空格或标点符号为分隔的所有单词进行倒排.最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中六、字符串左右排序交换: 44 50 7144: 从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后左边部分与右边部分进行交换,如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上50: 从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后左边部分与右边部分进行交换,如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上71:从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII 值升序排序,如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上七、字符串排序: 9 88 439: 对字符按从大到小的顺序进行排序88:对字符按从小到大的顺序进行排序43:对字符串变量的下标为奇数的字符按其ASCII值从小到大的顺序进行排序八、单词个数统计: 1919:统计一个长度为2的子字符串在另一个字符串中出现的次数九、Fibonacci数列: 2020: 求Fibonacci数列中大于t的最小的一个数 while(fn<=t) {...} return fn;十、迭代方法求方程: 21 do{...}while(fabs(x0-x1)>=0.000001);十一、平方根: 2222: 求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s returnsqrt(s);十二、实数运算: 2323: 求出N个实数的平均值aver,以及实数的整数部分之和sumint以及小数部分之和sumdec十三、完全平方数: 2424: 100至999中寻找符合条件的整数并依次从小到大存入数组中,它既是完全平方数,又是两位数字相同for(j=10;j*j<=i;j++) if(i==j*j&&(bw==sw||sw==gw||gw==bw)) bb[cnt++]=i; return cnt;十四、回文数: 25 ltoa(n,xy,10);25: 寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数十五、整数排序: 2 5 6 14 30 45 46 902: 把四位数各位上均是0或2或4或6或8的数从大到小的顺序存入数组b中5: 按每个数的后三位的大小进行升序排列,如果后三位的数值相等,按原先的数值进行降序排列6: 降序 , 升序14: 如果该四位数连续大于该四位数以后的五个数且该数是奇数,把这些四位数按从小到大的顺序存入数组b中 for(j=i+1;j<=i+5;j++) if(a[i]>a[j]&&a[i]%2) flag=1; else {flag=0;break;}30: 小于偶数, 从小到大45: 大于该四位数以前偶数, 从大到小46: 大于奇数,且该数必须能被7整除,把这些四位数按从大到小的顺序存入数组b中for(j=i-5;j<i;j++) if(a[i]>a[j]&&a[i]%2&&a[i]%7==0) flag=1; else { flag=0;break;}90: 将一正整数序列{K1,K2,...,K9}重新排列成一个新的序列.新序列中,比K1小的数都在K1的前面,比K1大的数都在K1的后面十六、整数统计运算: 26 70 40 65 91 94 92 7926: 求出正整数totNum个数以及这些数右移1位后产生的新数是偶数的数的个数totCnt 和满足此条件的这些数(右移前的值)的算术平均值totPjz70: 求出正整数totNum个数以及这些数右移1位后产生的新数是奇数的数的个数totCnt 和满足此条件的这些数(右移前的值)的算术平均值totPjz40: 求出正整数totNum个数以及这些数各位数字之和是偶数的数的个数totCnt和满足此条件的这些数的算术平均值totPjz65: 求出正整数totNum个数以及这些数各位数字之和是奇数的数的个数totCnt和满足此条件的这些数的算术平均值totPjz91: 200个整数,求出奇数的个数cnt1和偶数的个数cnt2以及数组下标为偶数的元素值的算术平均值pj(保留2位小数)94: 200个整数,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx中值为偶数的算术平均值pj(保留2位小数)92: 200个整数,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)79: 求出1到1000之内能被7或11整除但不能同时被7或11整除的所有整数放在数组a 中,并通过n返回这些数的个数 (指针) if(i%7==0&&i%11||i%7&&i%11==0) a[(*n)++]=i;十七、整数各位数字运算: 68 15 78 69 85 77 89 27 53 48 54 49 80 81 87 6768: 200个四位数,如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中if(thou&&thou%2&&hun%2&&ten%2&&data%2)15: 200个四位数,若一个四位数的千位数字上的值小于等于百位数字上的值,百位数字上的值小于等于十位数字上的值,以及十位数字上的值小于等于个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中78: 200个四位数,若一个四位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中69: 200个四位数,把一个四位数的千位数字上的值减去百位数字上的值再减去十位数字上的值最后减去个位数字上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if(thou-hun-ten-data>=0& &a[i]%2) b[cnt++]=a[i];85: 200个四位数,把一个四位数的个位数字上的值减去千位数字上的值再减去百位数字上的值最后减去十位数字上的值,如果得出的值大于等于零且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if(data-thou-hun-ten>=0& &a[i]%2==0) b[cnt++]=a[i];77: 200个四位数,把一个四位数的千位数字上的值加上十位数字上的值恰好等于百位数字上的值加上个位数字上的值,并且原四位数是偶数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if((thou+ten==hun+data)&&a[i]%2==0) b[cnt++]=a[i];89: 200个四位数,把一个四位数的千位数字上的值加上个位数字上的值恰好等于百位数字上的值加上十位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中if((qw+gw)==(sw+bw)&&a[i]%2) b[cnt++]=a[i];27: 300个四位数,求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序53: 300个四位数,求出千位数上的数减百位数上的数减十位数上的数减个位数上的数大于零的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序48: 300个四位数,求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序54: 300个四位数,求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序49: 300个四位数,求出千位数上的数减百位数减十位数上的数减个位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz280: 300个四位数,求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于零的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz281: 300个四位数,求出千位数上的数加百位数等于十位数上的数加个位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz287: 300个四位数,求出千位数上的数加个位数等于百位数上的数加十位数上的数的个数cnt,再求出所有满足此条件的四位数平均值pjz1,以及不满足此条件的四位数平均值pjz267: 5000以内,千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍.计算并输出这些四位自然数的个数cnt以及这些数的和sum十八、整数各位打散组合运算: 28 29 51 52 72 76 59 8628: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数ab- cd>=0且ab-cd<=10且两个数均是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中, 并要计算满足上述条件的四位数的个数cnt if((ab-cd)>=0&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&ab>=10&&cd>=10)29: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数ab- cd>=10且ab-cd<=20且两个数均是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数cnt if(ab-cd>=10&&ab-cd<=20&&ab%2==0&&cd%2==0&&qw!=0&&gw!=0)51: 200个四位数,把千位数字和十位数字重新组成一个新的十位数,以及把个位数字和百位数字组成另一个新的十位数,如果新组成的两个十位数均是素数且新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt52: 200个四位数,把千位数字和个位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另一个新的十位数,如果新组成的两个十位数均是奇数并且两个十位数中至少有一个数能被5整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt if(ab%2&&cd%2&&(ab%5==0||cd%5==0)&&ab>=10&&cd>=10)72: 200个四位数,把个位数字和千位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另一个新的十位数,如果新组成的两个十位数均是偶数并且两个十位数中至少有一个数能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的个数cnt if((ab%9==0||cd%9==0)&&ab%2==0&&cd%2==0&&hun!=0&&data!=0)76: 200个四位数,把个位数字和千位数字重新组成一个新的十位数,以及把百位数字和十位数字组成另一个新的十位数,如果新组成的两个十位数必须是一个奇数, 另一个为偶数并且两个十位数中至少有一个数能被17整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并要计算满足上述条件的四位数的cntif((ab%2!=cd%2)&&((ab%17==0||cd%17==0)&&ab>=10&&cd>=10))59: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数 ab<cd,ab必须是奇数且不能被5整除,cd必须是偶数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数cnt if(((ab-cd)<0&&ab%2==1&&ab%5!=0)&&cd%2!=1&&ab>=10&&cd>=10)86: 200个四位数,把千位数字和十位数字重新组成一个新的十位数ab,以及把个位数字和百位数字组成另一个新的十位数cd,如果新组成的两个十位数 ab>cd,ab必须是偶数且能被5整除,cd必须是奇数,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组 b 中,并要计算满足上述条件的四位数的个数cnt if((ab-cd)>0&&(ab%2!=1&&ab%5==0)&&cd%2==1&&ab>=10&&cd>=10)十九、方差运算: 33 83 9333: 计算出xx中偶数的个数even,奇数的平均值ave1,偶数的平均值ave2以及方差totfc的值83: 计算出xx中奇数的个数odd,奇数的平均值ave1,偶数的平均值ave2以及所有奇数的方差totfc的值93: 分别计算出xx中奇数的个数odd,偶数的个数even,平均值aver以及方差totfc的值for(i=0;i<MAX;i++) totfc+=(xx[i]-aver)*(xx[i]-aver); totfc/=MAX;二十、级数运算: 3535: Sn<M且Sn+1>=M,这里Sn=A1+A2+...+An,并依次把n值存入数组单元b[0],b[1]和b[2]中二十一、选票: 39 58 8439: 内容均为字符0和1,1表示此人被选中,0表示此人未被选中,全选或不选均为无效的选票58: 内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数小于等于5个人时被认为无效的选票84: 内容均为字符0和1,1表示此人被选中,0表示此人未被选中,若一张选票人数大于5个人时被认为无效的选票二十二、SIX/NINE: 4141: 计算出自然数SIX和NINE,它们满足的条件是SIX+SIX+SIX=NINE+NINE的个数cnt以及满足此条件所有的SIX与NINE的和SUM二十三、出圈: 57习题解答第1题答案void num(int m, int k, int xx[]){/* 定义整型变量data,并初始化为m+1(即大于整数m且紧靠m的第1个整数) */ int data = m+1;int half, n = 0, i;while(1){/* 判断data是否为素数 */half = data/2;for (i=2; i<=half; i++)if (data%i == 0)break;if (i > half) /* 如果此时i>half说明data是一个素数 */{xx[n] = data; /* 将data存入数组xx */n++; /* 让计数变量n增1 */}/* 如果已经找足k个素数了,就通过break语句跳出循环 */if (n >= k)break;data++; /* 继续找下一个素数 */}}第2题答案void jsVal(){int bb[4];int i, j, k, flag;for (i=0; i<200; i++) /* 循环以遍历数组a中的每一个四位数 */{bb[0] = a[i]/1000; /* 将a[i]的千位数字存入bb[0] */bb[1] = a[i]%1000/100; /* 将a[i]的百位数字存入bb[1] */bb[2] = a[i]%100/10; /* 将a[i]的十位数字存入bb[2] */bb[3] = a[i]%10; /* 将a[i]的个位数字存入bb[3] */for (j=0; j<4; j++) /* 循环以遍历数组bb,即a[i]的每一位 */{/* 根据当前位是否能被2整除,来设置旗标变量flag为1还是0 */if (bb[j]%2 == 0){flag = 1;}else{flag = 0;/* 如果有1位不能被2整除,后面的位就不必判断了,跳出该循环 */break;}}if (flag == 1) /* 如果此时flag的值为1说明所有位均能被2整除 */{b[cnt] = a[i]; /* 将此数存入数组b */cnt++; /* 计数值cnt增1 */}}/* 对数组b的前cnt个数进行选择排序 */for (i=0; i<cnt-1; i++)for (j=i+1; j<cnt; j++)/* 如果b[i]因小于它后面的数b[j]而交换两者,说明此排序为降序 */if (b[i] < b[j]){k = b[i];b[i] = b[j];b[j] = k;}2}第3题答案void StrOR(void){int i, j, k;char buf[80];for (i=0; i<maxline; i++) /* 循环以遍历英文文章的每一行 */{j = strlen(xx[i])-1; /* 求出当前行最后一个字符的位置 *//* 从最后一个字符往前循环遍历当前行,直到碰到小写字母'o'或到行首 */ while (xx[i][j]!='o' && j>=0)j--;if (j < 0) /* 如果j<0说明找到行首也没发现一个'o' */continue; /* 则当前行不用操作,去下一行 *//* 找到字母'o',用字符串结束标志0(或写成'\0')替换之,使该行一分为二 */ xx[i][j] = 0;strcpy(buf, &xx[i][j+1]); /* 将后半截字符串复制到缓存行buf中 *//* 从第1个字符开始循环遍历前半截字符串 */k = j = 0;while (xx[i][j])/* 循环往后遍历,找出第1个小写字母'o'的位置或到达字符串末尾 */while (xx[i][j]!='o' && xx[i][j])j++;if (!xx[i][j]) /* 如果!xx[i][j]为真,说明已到达字符串末尾 */{/* 将找过的这段字符串连接到buf中已存字符串的末尾并跳出循环 */strcat(buf, &xx[i][k]);break;}/* 如果找到了字母'o',用0替换之以分割出找过的这段字符串 */xx[i][j] = 0;/* 将找过的这段字符串连接到buf中已存字符串的末尾 */strcat(buf, &xx[i][k]);/* 从下一个位置开始继续循环遍历剩下的字符串 */j++;k = j;}/* 执行到这里,当前行已遍历完毕,用操作结果覆盖掉原来内容 */strcpy(xx[i], buf);}}第4题答案void StrOL(void){int i, j, k, strl, l;/* 循环遍历英文文章的全部字符,将既不是字母也不是空格的字符替换成空格 */ for (i=0; i<maxline; i++)for (j=0; j<(int)strlen(xx[i]); j++)if (!isalpha(xx[i][j]) && xx[i][j]!=' ')xx[i][j] = ' ';for (l=0; l<maxline; l++) /* 循环以遍历文章的每一行 */{char ch[80] = {0};char pp[80] = {0};strl = strlen(xx[l]);i = strl-1; /* 求出当前行最后一个字符的位置 */k = 0;while(1){/* 从最后一个字符往前循环遍历当前行,直到碰到非字母字符或到行首*//* (即以从后往前的顺序查找单词) */while (isalpha(xx[l][i]) && i>=0)/* 将字符数组pp中的前k+1个字符往后移动一位 */for (j=k; j>=0; j--)pp[j+1] = pp[j];pp[0] = xx[l][i]; /* 将当前字符存入到pp的第1个位置 */3k++; /* pp中的有效字符数增1 */i--; /* 继续遍历前一个字符 */}strcat(ch, pp); /* 将pp中的单词连接到字符数组ch的末尾 */ strcpy(pp, ""); /* 清空pp数组 */k = 0;if (i < 0)break; /* 若已遍历到行首则跳出该循环 *//* 从后往前循环遍历当前行,直到碰到字母字符或到行首 *//* (即以从后往前的顺序查找两个单词之间的字符) */while (!isalpha(xx[l][i]) && i>=0){/* 将字符数组pp中的前k+1个字符往后移动一位 */for (j=k; j>=0; j--)pp[j+1] = pp[j];pp[0] = xx[l][i]; /* 将当前字符存入到pp的第1个位置 */k++; /* pp中的有效字符数增1 */i--; /* 继续遍历前一个字符 */}strcat(ch, pp); /* 将pp中的字符串连接到ch的末尾 */strcpy(pp, ""); /* 清空pp数组 */k = 0;if (i < 0)break; /* 若已遍历到行首则跳出该循环 */}/* 执行到这里,当前行已遍历完毕,用操作结果覆盖掉原来内容 */ strcpy(xx[l], ch);}}第5题答案void jsSort(){int i, j, data;/* 对数组aa的所有200个数进行选择排序 */for (i=0; i<199; i++)for (j=i+1; j<200; j++){/* 按每个数后三位的大小进行升序排列 */if (aa[i]%1000 > aa[j]%1000){data = aa[i];aa[i] = aa[j];aa[j] = data;}else if (aa[i]%1000 == aa[j]%1000){ /* 若后三位相等则按实际大小进行降序排列 */if (aa[i] < aa[j]){data = aa[i];aa[i] = aa[j];aa[j] = data;}}}for (i=0; i<10; i++) /* 取出排序后数组aa中的前10个数存入数组bb */ bb[i] = aa[i];}第6题答案void jsSort(){int i, j, data;/* 对数组aa的所有200个数进行选择排序 */for (i=0; i<199; i++)for (j=i+1; j<200; j++){/* 按每个数后三位的大小进行降序排列 */if (aa[i]%1000 < aa[j]%1000){data = aa[i];4aa[i] = aa[j];aa[j] = data;}else if (aa[i]%1000 == aa[j]%1000){ /* 若后三位相等则按实际大小进行升序排列 */if (aa[i] > aa[j]){data = aa[i];aa[i] = aa[j];aa[j] = data;}}for (i=0; i<10; i++) /* 取出排序后数组aa中的前10个数存入数组bb */bb[i] = aa[i];}第7题答案void SortDat(){int i, j;PRO xy;/* 对数组sell的所有100条记录进行选择排序 */for (i=0; i<99; i++)for (j=i+1; j<100; j++)/* 按每条记录dm字段(产品代码)的大小进行降序排列 *//* (注意:字符串比较必须通过strcmp函数) */if (strcmp(sell[i].dm, sell[j].dm) < 0){xy = sell[i];sell[i] = sell[j];sell[j] = xy;}else if (strcmp(sell[i].dm, sell[j].dm) == 0){ /* 若dm字段相等则按je字段(金额)的大小进行降序排列 */if (sell[i].je < sell[j].je){xy = sell[i];sell[i] = sell[j];sell[j] = xy;}}}第8题答案void encryptChar(){int i;char *pf;/* 循环以遍历英文文章的每一行 */for (i=0; i<maxline; i++){pf = xx[i]; /* 以字符指针指向当前行行首 */while (*pf != 0) /* 若所指字符不为0(即字符串结束标志)则循环 */{ /* 若所指字符依题意计算后小于等于130且大于32,则用计算结果替换之 */ if (*pf*11%256<=130 && *pf*11%256>32)*pf = *pf*11%256;pf++; /* 让指针指向下一个字符 */}}第9题答案void SortCharD(void){int i, j, k, strl;char ch;/* 循环以遍历英文文章的每一行 */for (i=0; i<maxline; i++){5strl = strlen(xx[i]);/* 用选择排序法对当前行进行排序 */for (j=0; j<strl-1; j++)for (k=j+1; k<strl; k++)if (xx[i][j] < xx[i][k]){ /*前面的字符小于后面的字符则交换两者,所以此排序是降序排序 */ ch = xx[i][j];xx[i][j] = xx[i][k];xx[i][k] = ch;}}}第10题答案void ConvertCharA(void){int i, j, str;/* 循环以遍历英文文章的每一行 */for (i=0; i<maxline; i++){str = strlen(xx[i]);/* 循环以遍历当前行的每一个字符 */for (j=0; j<str; j++)if (xx[i][j] == 'z')xx[i][j] = 'a'; /* 如果当前字符是小写字母'z',则改为'a' */ else if (xx[i][j]>='a' && xx[i][j]<='y')xx[i][j] += 1; /* 否则如果是其他小写字母,则让其自增1 */}}第11题答案void chg(char *s){while (*s) /* 若s所指字符不为0(即字符串结束标志)则循环 */{/* 若s所指字符是字母'z'或'Z',则让它自减25(即改为'a'或'A') */if (*s=='z' || *s=='Z')*s -= 25;/* 否则如果s所指字符是其他字母,则让它自增1(即改为其下一个字符) */ else if (isalpha(*s))*s += 1;s++; /* 让指针指向下一个字符 */}}第12题答案void SortDat(){int i, j;PRO xy;/* 对数组sell的所有100条记录进行选择排序 */for (i=0; i<99; i++)for (j=i+1; j<100; j++)/* 按每条记录mc字段(产品名称)的大小进行升序排列 */if (strcmp(sell[i].mc, sell[j].mc) > 0){xy = sell[i];sell [i] = sell[j];sell[j] = xy;}else if (strcmp(sell[i].mc, sell[j].mc) == 0){ /* 若mc字段相等则按je字段(金额)的大小进行升序排列 */if (sell[i].je > sell[j].je){xy = sell[i];sell[i] = sell[j];sell[j] = xy;}}6}第13题答案void SortDat(){int i, j;PRO xy;/* 对数组sell的所有100条记录进行选择排序 */for (i=0; i<99; i++)。

2012年全国计算机等级C语言考试经典例题及题库

2012年全国计算机等级C语言考试经典例题及题库

1、对象有如下一些基本特点,即标识惟一性、分类性、多态性、封装性和模块独立性。

2、SQL语句中凡创建都用CREA TE,删除都用DROP,改用ALTER,再跟类型和名字,附加子名。

3、关系模型允许定义3类数据约束,它们是实体完整性约束、参照完整性约束及用户自定义的完整性约束。

4、循环链表就是将链表的最后一个结点指向链表头结点(或第一个结点),即p->next=head。

5、程序设计应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。

6、数据模型所描述的内容3有个部分,它们是数据结构、数据操作和数据约束。

7、C语言的转义字符见下表所示。

转义字符转义字符的意义\n 回车换行\t 横向跳到下一制表位置\v 竖向跳格\b 退格\r 回车\f 换页\\反斜线符“\”\’单引号符\a 鸣铃\ddd 1~3位八进制数所代表的字符\xhh 1~2位十六进制数所代表的字符8、分析:本题考查switch语句的掌握。

必须掌握以下内容:首先应该明白switch语句的语法格式:switch语句的语法格式为:switch(表达式){case常量表达式1:语句组1;case常量表达式2:语句组2;…case常量表达式n:语句组n;default:语句组n+1;}另外,注意以下几点关于switch语句的重点:①系统在执行时计算开关表达式的值;②根据所得的值在各个case标号表达式中寻找匹配,直到发现与表达式匹配的标号(本例中匹配的是case ′B′:);③找到匹配后执行后面相应的语句表,顺序往下执行;④如果无相匹配的标号,若存在default标号,则执行该语句标号后面的语句表n+1;当不存在default标号时,不执行switch中的任何一个语句表。

一般而言,在多分支结构中总会出现“意外”的情况,这时均可归入default:程序段,作统一的处理。

default标号是可选性的,不必每次都有,视需要而定。

switch语句中还可以包含switch语句,形成switch的嵌套9、在C语言中,逻辑运算符中一共有4个,它们分别是!(逻辑非)、||(逻辑或)、&&(逻辑与)、^(异或)。

2012级C语言复习题(精简)

2012级C语言复习题(精简)

题目 函数的形参为一个数组,则调用此函数时将数组名作为对应的实参。 do...while的循环体可能一次也不会执行。 char *p[10];定义了一个指向字符数组的指针变量。 数组名实际上是此数组的首地址,所以数组名相当于一个指针变量。 do...while语句与while语句的区别仅仅是关键字while的位置不同。 使用文件前必须先打开文件 fputc函数的作用是把一个字符写到磁盘文件中去。 如果希望向文件的末尾添加新的数据,可以选择“W+”方式打开文件 ( )。 如果文件以二进制形式打开,用fread和fwrite函数就可以读写任何类型的信息( )。 当文件操作完成后必须使用fclose命令关闭文件 ( )。 C语言中,文件都是以二进制形式存储。 使用指针技术,可以通过修改形参变量的值达到修改实参变量的值的目的。 因为用字符数组和字符指针变量都能实现字符串的存储和运算,因此它们二者是完全等价的。 C语言中,认为键盘是标准输入文件stdin C语言中,认为显示器是标准输出文件stdout C语言中,文件都是以ASCII码形式存储。 C语言中,文件是以记录(record)组成。 C语言中,文件存取是以字节为单位的。 fopen(“c:\test.dat”,”r”)的作用是打开一个磁盘文件,此文件可以被执行写操作 fopen(“test.txt”,”r”)表示为写操作打开一个二进制文件 预处理命令行必须以#开头,且最后要用分号结尾。 在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。 *p++等价于*p(++)。 函数定义void max(int a,int b)表示该函数的返回值不确定。 在C语言中,函数体中变量的隐含存储类别是自动变量auto。 return语句作为函数的出口,在一个函数体内只能有一个。 在C程序中,函数不能嵌套定义,但可以嵌套调用。 C语言的源程序中必须包含库函数。 在C程序中,函数调用不能出现在表达式语句中。 在C函数中,形参可以是变量、常量或表达式。 在主函数main( )中定义的变量都可以在其它被调函数中直接使用。 在C语言中,一个函数一般由两个部分组成,它们是函数首部和函数体。 C语言程序中的main( )函数必须放在程序的开始部分。 外部类型的变量作用范围大,编程中应多用外部变量。 当函数实参中使用指针变量时,形参变量也必须使用指针变量。 在C语言中,每一个变量在内存里占用的单元数都是相同的。 *p++等价于(*p)++。 指针变量里存放的是地址值,因此指针变量只能是int型的。 一个变量的指针就是该变量的地址。 一个指针变量加1表示将该指针变量的原值(地址)加1。 有如下程序段:int i, j = 2, k, *p = &i;k = *p + j;这里出现的两个“*”号,含义是一样的。 通过指针变量,就能间接地得到它所指向的变量的值 说明语句:int *p, p1, p2;只说明了一个能指向int型变量的指针。 有说明:int *p;且p指向地址为1500的内存单元,那么经过操作“p++;”后,p将指向1501的内存单 数组元素可以是不同数据类型的。 如果初值表中的初值个数少于数组长度,那么C语言编译程序会自动把剩余的元素初始化为初值表中 的最后一个值。 主调函数把单个数组元素传递给修改该元素值的被调函数时,主调函数就能够得到修改后的值。 设p是指向数组a的指针变量,则a[i]和p[i]等价。 在C语言中,所谓指针型数据,即指该数据是一个地址。 有一个一维数组a[10],那么a与&a[0]等价。 如有说明:int b[10], *p = b;表明在使用时b与p就完全等价了。 数组中的每一个元素相当于一个变量。若要让一个指针变量指向它,必须用“&数组元素”的方法向 该指针变量赋值。

C语言复习资料2

C语言复习资料2

《C语言》复习资料姓名班级成绩一、选择题1. 若x、i、j和k都是int型变量,则计算下面的表达式后,x的值是:() X=(i=4, j=16, k=32)A. 4B. 16C. 32D. 522. 在C语言中,要求运算数必须是整型数的运算符是:()A. /B. ++C. !=D. %3. putchar( ) 函数可以向终端输出一个。

()A. 整型变量表达式的值B. 实型变量的值C. 字符串D. 单个字符或字符型变量的值4. 以下说法正确的是:()A. 输入项可以为一个实型常量,如scanf(“%f”,3.5);B. 只有格式控制,没有输入项,也能进行正确输入,如:scanf(“a=%d,b=%d”);C. 当输入一个实型数据时,格式控制部分应规定小数点后的位数,如:scanf(“%4.2f”,&f);D. 当输入数据时,必须指时变量的地址,如:scanf(“%f”,&f);5. 判断char型变量ch是否为大写字母的正确表达式是: ( )A. (‘A’<=ch<=’Z’)B. (ch>=’A’ ) & (ch<=’Z’)C. (ch>=’A’) && (ch<=’Z’)D. (‘A’<=ch) AND (‘Z’>=ch)6. 设x、y、和z是int型变量,且x=3, y=4, z=5 ; 则下面表达式中值为0的是: ( )A. ‘x’ && ‘y’B. x<=yC. x||y+z && y-zD. !((x<y) && !z||1)7. 若希望当A的值为奇数时,输出为“真”,当A的值为偶数时,输出为“假”。

则以下错误的是:()A. if (A%2==1) printf(“真”); else printf(“假”);B. if (A%2==0) printf(“真”); else printf(“假”);C. if (A%2==0) printf(“假”); else printf(“真”);D. if (A%2!=0) printf(“真”); else printf(“假”);8. 已知int x=10,y=20,z=30; 以下语句执行后,x,y,z 的值是:( )If (x>y)Z=x; x=y; y=z;A. x=10,y=20,z=30B. x=20,y=30,z=30C. x=20,y=30,z=10D. x=20,y=30,z=209. 若运行时给变量x输入12,则以下程序的运行结果是:( )Main( ){int x,y;scanf(“%d”,&x);y=x>12?x+10:x-12;printf(“%d\n”,y);}A. 0B. 22C. 12D. 1010. C语言中while和do-while循环的主要区别是: ( )A. do-while的循环体至少要无条件执行一次B. while的循环控制条件比do-while的循环控制条件更严格C. do-while允许从外部转到循环体内D. do-while的循环体不能是复合语句11. 以下对一维数组a的说明,正确的是: ( )A. int a(10)B. int n=10,a[n];C. int n;D. #define SIZE 10scanf(“%d”,&n); int a[SIZE];int [n];12. 以下对二维数组a说明正确的是: ( )A. int a[3][];B. float a(3,4);C. float a[3][4];D. float a(3)(4);13. 对以下说明语句的正确理解是: ( )int a[10]={6,7,8,9,10};A. 将5个初值依次赋给a[1]至a[5]B. 将5个初值依次赋给a[0]至a[4]C. 将5个初值依次赋给a[6]至a[10]D. 因为数组长度与初值的个数不相同,所以此语句不正确14. 判断字符串s1是否大于字符串s2,应当使用: ( )A. if (s1>s2)B. if (strcmp(s1,s2))C. if (strcmp(s2,s1)>0)D. if (strcmp(s1,s2)>0)15. 设以下变量均为int类型,则值不等于7的是: ( )A. (x=y=6,x+y,x+1)B. (x=y=6,x+y,y+1)C. (x=6,x+1,y=6,x+y)D. (y=6,y+1,x=y,x+1)16. 以下正确的字符串结束标志是: ( )A. 0B. \0C. \\D. \17. 以下能正确定义整形变量a,b和c并为其赋初值5的语句是:( )A. int a=b=c=5;B. int a,b,c=5;C. a=5,b=5,c=5;D. a=b=c=5;18. 一个C语言程序是由。

2012年上半年全国计算机等级考试二级C语言考前复习资料(机试)

2012年上半年全国计算机等级考试二级C语言考前复习资料(机试)

2012年上半年全国计算机等级考试二级C语言考前复习资料(机试)机试做题技巧概述一、程序填空题【解析】该类型主要考察学员对一个C程序的整体把握能力。

首先须通读整个源程序,了解程序的功能后试着边填空边调试,分析输出结果,以找到正确答案。

因此,不像程序修改题那么简单。

【程序填空题的特点和注意事项】(1)程序填空的试题中通常包含三个空需要填写。

(2)试题中用"******found******/"来提示在下一行或下二行注明填空的位置及编号,如___1___。

(3)程序填空考核对程序的整体把握,出题点可能是:for循环语句的初始化或条件判断、函数返回值、if语句的条件判断、链表中指针如何移动、文件操作相关函数的参数等。

(4)特别要注意的是:只能在填空的位置填写语句或表达式,不要增行或删行,不要改动程序行的顺序,更不要改动程序的结构。

【建议答题步骤】(1)首先仔细审题,了解试题的要求,看清题目给出的输入和输出例示,以便检验程序运行的结果是否正确。

(2)审视"/******found******/"所在函数,根据题义理解程序所采用的基本算法,做到心里有数。

(3)填好空后对测试程序进行检查是否有语法错误。

当编译提示有语法错时,可参考编译提示来查找并改正错误。

(4)当不再出现语法错时,执行程序,按照试题的示例给出的数据进行试算,若试算的结果与给出的输出结果相同时,该题就做对了;若试算的结果与给出的输出结果不同,就应进一步检查程序中的逻辑错误。

(5)修改完成,得到正确结果后,一定不要忘记把修改后的程序存盘。

二、程序修改题【解析】该类型主要考察学员对C程序部分结构或算法的分析和理解能力。

因此,对学员的知识把握能力要求不高,通常可以借助计算机帮我们改错(仅限语法错误)。

若非语法错误,则需对程序边调试边找错,分析输出结果,找出错误所在并改正。

【程序填空题的特点和注意事项】(1)上机改错的试题中通常包含两个(或三个)错误需要修改。

C语言复习资料 (1)

C语言复习资料 (1)

C语言复习资料一、C语言基础知识1. C语言的主要特点有哪些?(多选) ACDEA.简洁、紧凑,使用方便、灵活,易于学习和应用。

B.C语言是面向结构化程序设计的语言。

C.C语言允许直接对位、字节和地址进行操作。

D.数据类型丰富。

E.C语言生成的目标代码质量高。

2. C语言程序由什么组成?(单选) CA. 子程序B. 主程序和子程序C. 函数D. 过程3. 源程序要正确地运行,必须要有什么函数?(单选) CA. printf函数B. 自定义的函数C. main函数D. 不需要函数4. 指出下面合法的标识符:(多选) C D E GA. 3abB. intC. ABCD. a_3E. sum.aF. #abcG. _stu2H. abc f5. 指出下面哪些是合法的用户定义的标识符?(多选) D GA. P-SB. putcharC. doubleD. _908E. *parF. sheep!G. windH. x y6. C语言的基本类型哪些:(多选)A BE GA. 整型B. 枚举型C. 数组型D. 指针型E. 字符型F. 构造型G. 实形H. 空类型7. 这段程序中的常量有:(多选) A C D EF#define PI 3.14void main(){int sum;sum = 10 + 15;printf("sum=%d\n",sum);printf("result is 25\n");}这段程序中常量有:A. 10B. sumC. 15D. 25E. mainF. PI8. C语言中整形常量按进制划分,有以下几种:(多选)A B CA. 十六进制常量B. 十进制常量C. 八进制常量D. 二进制常量9. 75的十六进制写法为_0x4B__,八进制写法为_0113__。

0x75的八进制写法为_0165__,十进制写法为_117__。

075的十进制写法为__61_,十六进制写法为__0X3D_。

c语言总复习资料

c语言总复习资料

c语言总复习资料一c语言的基本组成单位——函数。

1.main();2库函数;3.自定义函数。

Abc();二函数的组成:1.函数的首部,函数的第一行语句(包括函数的返回值类型、函数名、函数参数类型及函数参数名)。

()不可省略,例如:void main() 2.函数体,包括函数的声明部分(声明在该程序中所要用到的函数)、定义部分(定义函数可能要用到的变量)、执行部分(用于实现函数的功能)。

三函数必不可少的分号。

四输入输出所使用的函数:scanf、getchar、gets、printf、putchar、puts等。

五注释:不能嵌套。

习题94页18题。

六大小写区分:printf与Printf之不一样。

七C语言上机过程:编辑(.c)——>编译(.obj)——>连接(.exe)——>运行得结果。

八C程序执行是从main()函数开始,到main函数结束处结束。

九进制转换:着重掌握十、八、十六进制及相互转换,原补码(位运算中要用到)。

十用户自定义标识符:1.字母、数字、下划线。

2第一个字母不能为数字。

3.不能与c语言所定义的关键字相同,但可以与预定义标识符同。

十一常量:1整形常量十进制、八进制(以0开头)、十六进制(以0x开头)后两种无负数。

2实型常量2.78(小数点两边至少有一边要有数字)5.48e-3(e前必有数字,e后必为整数)3字符型常量 a.一般字符‟a‟ ;b.转义字符:一般转义字符、八\十六进制转义字符。

‟\n‟,‟\\‟,‟\t‟,‟\”‟,‟\64‟,‟\82‟,‟\x42‟,‟\xff‟,‟a12‟.4字符串常量“a” vs ‟a‟十二变量1.必须要先定义后使用;2变量三要素变量类型变量名变量值例1:下面不是c语言整形常量的是A. 02 B. 0 C.038 D.0xAL例2:合法的实型常量是A. 5E2.0 B.E-3 C.2E0 D 1.3E例3:若有语句char a;并要将字符a赋值给变量a,则下列正确的赋值表达式是A.a=”a” B.a=‟a‟ C.a=”97” D.a=‟97‟例4:以下合法的定义是:A. float _a=1.1e-1;B. double b=1+5e2.5;C.long do=0xfdaL;D.float 2_and=1-e-3;十三.求余原则:1.两边都要为整数;2.先取绝对值求余,余数与被除数符号相同。

C语言2012考试题

C语言2012考试题
C)必须是正数
B)必须是整数值
D)可以是任意合法的数值 D
= 赋值
==判断是否相等
10已有声明" int a[5]; "以下表达式中不能正确取得a[1] 地址的是_________。 A. &a[1] B. ++a C.&a[0]+1 D. a+1 B 11.以下程序运行后的输出结果是___________ A. 2 2 B. 7 2 C. 7 5 D. 6 2 main( ) { char a[7]="a0\0a0\0"; int i, j; B i=sizeof(a); j=strlen(a); printf("%d %d", i, j); } 数组名是常量,不能自加
4.以下表示数学式" a<b<c "的逻辑表达式中的错 误的是________。 A A. a<b<c B. a<b&&b<c C.!(a>=b)&&!(b>=c) D. !(a>=b||b>=c) 5.已知字符A的机内编码为65,则执行下列函数调 用语句时,不能输出字符B的是______。 A. putchar('B'); B. putchar("B"); B C. putchar(66); D. putchar('\x42'); 6.以下语句中不包含关键字的是____________。 A. x=sqrt(2); B. while(!x=0) x--; A C. if(x<0) x=-x; D. return x; " "内为字符串,以'\0'结尾 关键字是语法中用到的字

C语言讲义--复习(1-5)-2012

C语言讲义--复习(1-5)-2012
1、在c语言中(以16位pc机为例),5种基本 数据类型的存储空间长度的排列顺序为() A)char<int<long int<=float<double B)char=int<long int<=float<double C)char<int<long int=float=double D)char=int=long int<=float<double



15、.若有如下语句 int x=3; do{printf("%d\n",x-=2);} while(!(--x)); 则上面程序段输出结果是( ) A)1 B)1和-2 C)3和0 D)是死循环
16、下面程序是从键盘输入学号,然后输出学号中百位数字是3的学 号,输入0时结束循环。请选择填空() #include <stdio.h> main() { long int num; scanf("%ld",&num); do {if([1]) printf("%ld",num); scanf("%ld",&num); } while([2]); } [1]A)num%100/10==3 B)num/100%10==3 C)num%10/10==3 D)num/10%10==3 [2]A)!num B)num>0==0 C)!num==0 D)!num!=0
6、以下C程序正确的运行结果是( ) main() {long y=-43456; printf("y=%-8ld\n",y); printf("y=%-08ld\n",y); printf("y=%08ld\n",y); printf("y=%+8ld\n",y);} A)y= -43456 B)y=-43456 C)y=-43456 D)y= -43456 y=- 43456 y=-43456 y=-43456 y=-0043456 y=-0043456 y=-0043456 y=-0043456 y=00043456 y=-43456 y=+ -43456 y= -43456 y=+43456

2012年3月计算机二级C语言笔试真题及答案详解

2012年3月计算机二级C语言笔试真题及答案详解

2012年3月全国计算机等级考试二级C语言真题一、选择题1、下列叙述中正确的是:A、循环队列是队列的一种顺序存储结构B、循环队列是队列的一种链式存储结构C、循环队列是非线性结构D、循环队列是一直逻辑结构2、下列叙述中正确的是A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈和队列都是非线性结构D、以上三种说法都不对3、一棵二叉树共有25个节点,其中5个时子节点,那么度为1的节点数为A、4B、6C、10D、164、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是A、内模式B、外模式C、概念模式D、逻辑模式5、在满足实体完整性约束的条件下A、一个关系中可以没有候选关键词B、一个关系中只能有一个候选关键词C、一个关系中必须有多个候选关键词D、一个关系中应该有一个或者多个候选关键词6、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、自然连接B、并C、差D、交7、软件生命周期中的活动不包括A、软件维护B、市场调研C、软件测试D、需求分析8、下面不属于需求分析阶段任务的是A、确定软件系统的功能需求B、确定软件系统的系统的系能需求B、制定软件集成测试计划D、需求规格说明书审评9、在黑盒测试方式中,设计测试用例的主要根据是A、程序外部功能B、程序内部逻辑C、程序数据结构D、程序流程图10、在软件设计中不使用的工具是A、系统结构图B、程序流程图C、PAD图D、数据流图(DFD图)11、针对简单程序设计,以下叙述的实施步骤正确的是A、确定算法和数据结构、编码、调试、整理文档B、编码、确定算法和数据结构、调试、整理文档C、整理文档、确定算法和数据结构、编码、调试D、确定算法和数据结构、调试、编码、整理文档12、关于C语言中数的表示,以下叙述正确的是A、只有整型数在允许范围内能精确无误的表示,实型数会有误差B、只要在在允许范围内整型和实型都能精确表示C、只有实型数在允许范围内能精确无误的表示,整型数会有误差D、只有八进制表示的数在不会有误差13、以下关于算法叙述错误的是A、算法可以用伪代码、流程图等多种形式来描述B、一个正确的算法必须有输入C、一个正确的算法必须有输出D、用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码14、以下叙述错误的是A、一个C程序可以包含多个不同名的函数B、一个C程序只能有一个主函数C、C程序在书写时,有严格的缩进要求,否则不能编译通过D、C程序的主函数必须用main作为函数名15、设有以下语句Char ch1,ch2, scanf(”%c%c”,&ch1,&ch2);若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是A、A和B之间用逗号间隔B、A和B之间不能有任何间隔符C、A和B之间可以用回车间隔D、A和B之间用空格间隔16、以下选项中非法的字符常量是A、’\102’B、’\65’C、’\xff’D、’\019’17、有以下程序#include <sthio.h>Main(){Int A=0,B=0,C=0;C=(A-=A-5);(A=B,B+=4);Printf(“%d, %d, %d\n”,A,B,C)}程序运行后输出的结果是A 0,4,5B 4,4,5C 4,4,4D 0,0,018、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是A、x++; printf((“%d\n”,x);B、n=++x; printf((“%d\n”,n);C、++x; printf((“%d\n”,x);D、n=x++; printf((“%d\n”,n);19、以下选项中,能表示逻辑值“假”的是A 1B 0.000001C 0D 100.020、有以下程序#include <sthio.h>Main(){ int a;Scanf(“%d”,&a);If(a++<9) printf((“%d\n”,a);Else printf((“%d\n”,a--);}程序运行时键盘输入9<回车>,则输出的结构是A、10 B 11 C 9 D 821、有以下程序#include <sthio.h>Main(){int s=0,n;For (n=0;n<3;n<++){switch(s){ case 0;Case 1;s+=1;Case 2;s+=2;break;Case 3;s+3;Case 4;s+=4;}printf((“%d\n”,s);}}程序运行后的结果是A 1,2,4B 1,3,6C 3,10,14D 3,6,1022、若k是int类型变量,且有以下for语句For(k=-1;k<0;k++)printf(****\n”);下面关于语句执行情况的叙述中正确的是A、循环体执行一次B、循环体执行两次C、循环体一次也不执行D、构成无限循环23、有以下程序#include <sthio.h>Main(){char A,B,C;B=’1’;C=’A’For(A=0;A<6;A++){if(A%2) putchar(B+A);Else putchar(C+A);}}程序运行后输出的结果是A 1B3D5FB ABCDFEC A2C4E6D 12345624、设有如下定义语句Int m[ ]={2,4,6,8},*k=m;以下选项中,表达式的值为6的是A *(k+2)B k+2C *k+2D *k+=225、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。

2012C语言程序设计

2012C语言程序设计
25
26
27
• 自增、自减运算符++ -–作用:使变量值加1或减1 –种类: » 前置 ++i, --i (先执行i+1或i-1,再使用i值) » 后置 i++,i-(先使用i值,再执行i+1或i-1) 说明: » ++ -- 不能用于常量和表达式,如5++,(a+b)++ » ++ --结合方向: 自右向左 » 优先级:- ++ -- ------>* / % ----->+ (2) (3) (4) 例 -i++ 例 -i++ i=3; 例 j+++k; i=3;
30
• 说明: –结合方向:自右向左 – 优先级: 14 –左侧必须是变量,不能是常量或表达式 –赋值转换规则:使赋值号右边表达式值自动转 换成其左边变量的类型 – 赋值表达式的值与变量值相等,且可嵌套 例: a=12; a+=a-=a*a //a=-264 等价于a=a+(a=a-(a*a))
例:
15
16
字符常量
• 定义:用单引号括起来的单个普通字符或转义字符. 如 ‘a‟ „A‟ „?‟ „\n‟ „\101‟ • 字符常量的值:该字符的ASCII码值
• 转义字符:反斜线后面跟一个字符或一个代码值表示 如 ‘A‟——65, ‘a‟——97, 转义字符及其含义: „\n‟——10 例 转义字符举例 ‘0‟——48 ,
考试内容:
1、了解 C 语言中数据类型的分类; 2、掌握整型、实型、字符型、字符串常量的表示方法; 3、掌握符号常量的定义和使用; 4、掌握变量的定义、初始化; 5、掌握算术、赋值、复合赋值、自增、自减、逗号运算符 及表达式; 6、掌握各类数值型数据间的混合运算。

2012全国计算机二级C语言_公共基础知识

2012全国计算机二级C语言_公共基础知识

第1章数据结构与算法经过对部分考生的调查以及对近年真题的总结分析,笔试部分经常考查的是算法复杂度、数据结构的概念、栈、二叉树的遍历、二分法查找,读者应对此部分进行重点学习。

详细重点学习知识点:1.算法的概念、算法时间复杂度及空间复杂度的概念2.数据结构的定义、数据逻辑结构及物理结构的定义3.栈的定义及其运算、线性链表的存储方式4.树与二叉树的概念、二叉树的基本性质、完全二叉树的概念、二叉树的遍历5.二分查找法6.冒泡排序法1.1算法考点1 算法的基本概念考试链接:考点1在笔试考试中考核的几率为30%,主要是以填空题的形式出现,分值为2分,此考点为识记内容,读者还应该了解算法中对数据的基本运算。

计算机解题的过程实际上是在实施某种算法,这种算法称为计算机算法。

1.算法的基本特征:可行性、确定性、有穷性、拥有足够的情报。

2.算法的基本要素:(1)算法中对数据的运算和操作一个算法由两种基本要素组成:一是对数据对象的运算和操作;二是算法的控制结构。

在一般的计算机系统中,基本的运算和操作有以下4类:算术运算、逻辑运算、关系运算和数据传输。

(2)算法的控制结构:算法中各操作之间的执行顺序称为算法的控制结构。

描述算法的工具通常有传统流程图、N-S结构化流程图、算法描述语言等。

一个算法一般都可以用顺序、选择、循环3种基本控制结构组合而成。

考点2 算法复杂度考试链接:考点2在笔试考试中,是一个经常考查的内容,在笔试考试中出现的几率为70%,主要是以选择的形式出现,分值为2分,此考点为重点识记内容,读者还应该识记算法时间复杂度及空间复杂度的概念。

1.算法的时间复杂度算法的时间复杂度是指执行算法所需要的计算工作量。

同一个算法用不同的语言实现,或者用不同的编译程序进行编译,或者在不同的计算机上运行,效率均不同。

这表明使用绝对的时间单位衡量算法的效率是不合适的。

撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法"运行工作量"的大小,只依赖于问题的规模(通常用整数n表示),它是问题规模的函数。

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

一、填空1.函数调用时的实参和形参之间的数据是单向的【1】传递2.设a 、b 、c 为整型数, 且a=2、b=3、c=4, 则执行完以下语句:a*=16+(b++)-(++c);后,a 的值是3. C 语言中,【1】是程序的基本组成部分4. C 语言的三种基本结构是【1】结构、选择结构、循环结构.5. 执行以下程序段后, s 的值是【1int a[]={5,3,7,2,1,5,3,10},s=0,k; for(k=0;k<8;k+=2) s+=*(a+k);6. break 语句除了可以用于循环语句的循环体中,还可以用于【1】语句中7. 执行语句"n=1;if(n=5) n++;"后,变量n 值为【1】.8. c 语言表达式5>2>7>8的值是【1】.9. C 语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是【1】10. 函数的定义不可以嵌套,但函数的调用【1】嵌套.11. 设 x 的值为15,n 的值为2,则表达式 x%=(n+3) 运算后 x 的值是【1】12. 如果函数不要求带回值,可用【1】来定义函数返回值为空13. 设有程序段int x= 4,y=4; t=++x||++y;执行语句后y的值为【1】14. 执行下列语句后,*(p+1)的值是【1】char s[3]="ab",*p; p=s;15. 若有以下定义和语句: int a[4]={0,1,2,3},*p; p=&a[2];则*--p 的值是【1】.16. 设x 和y 均为int 型变量,且x=1,y=2,则表达式1.0+x/y 的值为【1】.17. 若x 为int 型,请以最简单的形式写出与逻辑表达式!x 等价的C 语言关系表达式【1】18. 逗号表达式(a=3*5,a*4),a+5的值为【1】19. 在调用函数fopen("a:\\b.dat","r")时,若A 盘根目录下不存在文件b.dat,则函数的返回值是【1】.20. 已知x=2,y=2 则表达式x*=y+8的值为【1】21. 若声明"char a[15]="Windows-9x";",语句"printf("%s",a+8);"的输出结果为【1】22. 设a,b,t 为整型变量,初值为a=7,b=9,执行完语句t=(a>b)?a:b 后,t 的值是【1】.23. 若a=1,b=4,c=3,表达式a&&b+c||b-c 的值为【1】24. 设int i = 5;则循环语句while (i > = 1) i - -;执行后,i 的值为【1】25. 调用 fopen 函数打开一文本文件,在"使用方式"这一项中,为输入而打开需填入【1】.26. 从函数的形式上看,函数分为无参函数和【1】两种类型.27. C 程序中有且仅有一个【1】函数.28. 从变量的作用域角度分有全局变量和【1】29. 设有下面的程序段int x= 0,y=0,t; t=x&&++y;执行语句后y 的值为【1】30. 若有定义:char s[ ]="china";则Visual C++系统为数组s 开辟【1】个字节的内存单元.31. 写出语句 b=(a=6,a*3); 执行后整型变量b 的值是【1】32. 当a=1,b=1,c=1时,表达式a<b<c 的值是【1】33. 设y 为int 型变量,请写出描述"y 为奇数"的表达式【1】34. 在C 语言中的实型变量分为两种类型,它们是float 型和【1】型.35. 【1】语句,只能用在循环中,以中断某次循环,继续下一次循环36. union un1 { int a; char b; float c; }x;上述定义的共同体变量x 共占用存储空间【1】个字节37. 已知 i=5,写出语句 a=i++; 执行后整型变量a 的值是【138. 计算a、b 中最小值的条件表达式为【1】.39.一个C 源程序中至少应包括一个【1】函数40. C 语言中一个函数由函数首部和【1】两部分组成. 41. 已知 a=10,b=15,c=1,d=2,e=0,则表达式c==b>e 的值为【1】.42. 若有以下定义和语句:int a[5]={1,3,5,7,9},*p; p=&a[2];则++(*p)的值是【1】.43.在函数调用中,若实参为数组名,则形参必须为数组名或【1】44. 已知 i=5;写出语句 i+=012; 执行后整型变量 i 的十进制值是【1】.45. C语言中调用【1】函数来关闭文件.46. 程序段int k=10; while(k=0) k=k-1循环体语句执行【1】次.47. 若在程序中用到"strlen()"函数时,应在程序开头写上包含命令# include "【1】".48. 当程序读写数据文件时,需要有声明语句"FILE*fp;",在该声明语句之前必须包含的头文件名为【1】.二、单项选择1.设变量定义为"int x, *p=&x;",则&(*p)相当于A:p B:*p C:x D:*(&x)2. C语言中要求对变量作强制定义的主要理由是A:便于移植 B:便于写文件C:便于编辑预处理程序的处理D:便于确定类型和分配空间3. 设有以下说明语句struct ex{ int x ; float y; char z ;} example;则下面的叙述中不正确的是( ).A:struct结构体类型的关键 B:example是结构体类型名C:x,y,z都是结构体成员名 D:struct ex是结构体类型4. C语言中不可以嵌套的是A:函数调用 B:函数定义 C:循环语句 D:选择语句5.在C语言中,if语句后的一对原括号中,用以决定分支的流程的表达式A:只能用逻辑表达式 B:只能用关系表达式C:只能用逻辑表达式或关系表达式 D:可用任意表达式6. C语句"x*=y+2;"还可以写作( ).A:x=x*y+2; B:x=2+y*x;C:x=x*(y+2); D:x=y+2*x;7.对以下说明语句 int a[10]={6,7,8,9,10}; 的正确理解是A:将5个初值依次赋给a[1]至a[5]B:将5个初值依次赋给a[0]至a[4]C:将5个初值依次赋给a[6]至a[10]D:因为数组长度与初值的个数不相同,所以此语句不正确8.C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是A:void B:int C:float D:double9.设已有声明"int x[]={1,2,3,4,5,6},*p=&x[2];",则值为3的表达式是( ).A:*++p B:*(p++) C:++*p D:*p+110.判断char型变量cl是否为小写字母的正确表达式是A:'a'<=cl<='z' B:(cl>=a)&&(cl<=z)C:('a'>=cl)||('z'<=cl) D:(cl>='a')&&(cl<='z') 11.下面说明不正确的是A:char a[10]="china";B:char a[10],*p=a;p="china"C:char *a;a="china";D:char a[10],*p;p=a="china"12.设有说明"int x=3,y=4;",则"++x>y--?x:y"的值为( ).A:4 B:1 C:2 D:313.设有说明:char c; int x; double z;则表达式c*x+zA:float B:int C:char D:double14.若已定义x和y为double类型,则表达式x=1,y=x+3/2的值是A:1 B:2 C:2.0 D:2.515.设变量定义为"int a, b;",执行下列语句时,输入_____,则a和b的值都是scanf("a=%d, b=%d",&a, &b);A:10 10 B:10, 10C:a=10 b=10 D:a=10, b=1016.数组名作为实参数传递给函数时,数组名被处理为A:该数组的长度 B:该数组的元素个数C:该数组的首地址 D:该数组中各元素的值17.两个指针变量不可以A:相加 B:比较 C:相减 D:指向同一地址18.下列( )表达式的值为真,其中a=5;b=8;c=10;d=0A:a*2>8+2 B:a&&dC:(a*2-c)||d D:a-b<c*d19. 对两个数组a和b初始化如下:char a[ ]="abc";char b[ ]={'a','b','c'};则以下叙述正确的是( ).A:a与b数组完全相同 B:a与b数组长度相同C:a与b中都存放字符串 D:a数组比b数组长度长20.若有以下定义:char s='\092'; 则该语句A:使s的值包含1个字符 B:定义不合法,s的值不确定C:使s的值包含4个字符 D:使s的值包含3个字符21.能正确表示逻辑关系:" a≥10或a≤0 "的C语言表达A:a>=10 or a<=0 B:a>=0 | a<=10C:a>=10 && a<=0 D:a>=10 || a<=022.下列字符序列中,不可用作C语言标识符的是A:b70 B:#ab C:symbol D:a_123.系统的标准输入文件是指().AA:键盘 B:显示器 C:软盘 D:硬盘24.若给定条件表达式(M)?(a++):(a--),则其中表达式A:和(M==0)等价 B :和(M==1)等价C:和(M!=0)等价 D:和(M!=1)等价25.假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是A:7 B:8 C:6 D:226.库函数在使用时,要用A:#include命令 B:#define命令 C:#if D:#else 27.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符A:必须为字母 B:必须为下划线C:必须为字母或下划线D:可以是字母,数字和下划线中任一字符28.已定义两个字符数组a,b,A:scanf("%s%s", a, b);B:get(a, b);C:scanf("%s%s", &a, &b);D:gets("a"),gets("b");29.以下不能正确进行字符串赋初值的语句是A:char str[5]="good!";B:char str[]="good!";C:char *str="good!";D:char str[5]={'g','o','o','d',0};30.不正确的字符串赋值或赋初值的方式是( ).A:char str[]="string";B:char str[7]={'s','t','r','i','n','g'};C:char str[10];str="string";D:char str[7]={'s','t','r','i','n','g', '\0'};31.关于建立函数的目的,以下正确的说法是A:提高程序的执行效率B:提高程序的可读性C:减少程序的篇幅D:减少程序文件所占内存32.以下标识符中,不能作为合法的C用户定义标识符的是A:a3_b3 B:void C:_123 D:IF33.若变量均已正确定义并赋值,以下合法的C语言赋值语句是A:x=n/2.5; B:x==5; C:x+n=I; D:5=x=4+1;34.若有声明"int x[10]={0,1,2,3,4,5,6,7,8,9},*p",则值不为4的表达式是( ).A:p=x,*(p+4) B:p=x+4,*p++ C:p=x+3,*(p++) D:p=x+3,*++p 35.以下的选择中,正确的赋值语句是A:a=1,b=2 B:j++ C:a=b=5; D:y=int(x)36.gets函数的功能是A:读取从键盘输入的一串不带空格的字符串B:读取从键盘输入的一串带空格的字符串C:读取从键盘输入的一串不带数字的字符串D:读取从键盘输入的一串只带字母的字符串37.若已定义x为int类型变量,下列语句中说明指针变量p的正确语句是A:int p=&x; B:int *p=x;C:int *p=&x; D:*p=*x;38.执行语句 for(i=1;i++<4;); 后变量 i的值是A:3 B:4 C:5 D:不定39.字符串指针变量中存入的是A:字符串 B:字符串的首地址C:第一个字符 D:字符串变量40.变量s的定义为 char *s = "hello world!" ; ,要使用变量p指向s所指向的同一个字符串,则应选取( ). A:char *p=s; B:char *p=&s;C:char *p ; p=*s; D:char *p;p=&s;41.在C语言中,函数的数据类型是指A:函数返回值的数据类型B:函数形参的数据类型C:调用该函数时的实参的数据类型D:任意指定的数据类型42.经过以下语句定义后,表达式z+=x>y?++x:++y的值为int x=1,y=2,z=3;A:2 B:3 C:6 D:543.若用数组名作为函数的实参,传递给形参的是A:数组的首地址 B:数组第一个元素的值C:数组中全部元素的值 D:数组元素的个数44.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是A:字符A B:字符a C:字符e D:非法的常量45.设C语言中,int类型数据占2个字节,则long类型数据占A:1个字节 B:2个字节 C:4个字节 D:8个字节46.下列运算符中,不属于关系运算符的是A:< B:> C:>= D:!47.下列字符数组长度为5的是A:char a[]={'h', 'a', 'b', 'c', 'd'};B:char b[]= {'h', 'a', 'b', 'c', 'd', '\0'};C:char c[10]= {'h', 'a', 'b', 'c', 'd'};D:char d[6]= {'h', 'a', 'b', 'c', '\0' };48.设有说明语句 char a='\101'; ,则变量a( ).A:包含4个字符 B:包含2个字符C:包含3个字符 D:包含1个字符49.当定义一个结构体变量时,系统分配给它的内存是A:各成员所需内存量的总和B:结构中第一个成员所需内存量C:结构中最后一个成员所需内存量D:成员中占内存量最大者所需的容量50.能将高级语言编写的源程序转换为目标程序的是A:链接程序 B:解释程序 C:编译程序 D:编辑程序51.具有相同类型的指针变量p与数组a,不能进行的操作是A:p=a; B:*p=a[0]; C:p=&a[0]; D:p=&a; 52.为了避免在嵌套的条件语句if—else中产生二义性,C语言规定:else总与( )A:缩排位置相同的if B:其之前最近的未配对的if C:其之后最近的if D:同一行上的if53.设有说明:char w; int x; float y; double z; 则表达式w*x+z-y值的数据类型为A:float B:int C:char D:double 54.整型变量x=1,y=3,经下列计算后,x的值不等于6的是A:x=(x=1+2,x*2) B:x=y>2?6:5C:x=9-(--y)-(y--) D:x=y*4/255.若有定义:int aa[ 8];则以下表达式中不能代表数组元aa[1]的地址的是A:&aa[0]+1 B:&aa[1] C:&aa[0]++ D:aa+156.若有定义int a[10],*p=a;,则p+5A:元素a[5]的地址 B:元素a[5]的值C:元素a[6]的地址 D:元素a[6]的值57. C语言中运算对象必须是整型的运算符是A:%= B:/ C:= D:〈=58.若二维数组a有m列,则在a[i][j]前的元素个数为A:j*m+i B:i*m+j C:i*m+j-1 D:i*m+j+159.从循环体内某一层跳出,继续执行循环外的语句是A:break语句 B:return语句C:continue语句 D:空语句60.以下运算符中,优先级最高的运算符是A:= B:!= C:*(乘号) D:()61.逻辑运算符两侧运算对象的数据类型A:只能是0或1 B:只能是0或非0正数C:只能是整型或字符型数据 D:可以是任何类型的数据62.若i为整型变量,则以下循环执行次数是for(i=2;i==0;) printf("%d",i--);A:无限次 B:0次 C:1次 D:2次63.逗号表达式" (a=3*5,a*4),a+15 "的值是( ).A:15 B:60 C:30 D:不确定64.fscanf函数的正确调用形式是A:fscanf(fp,格式字符串,输出表列);B:fscanf(格式字符串,输出表列,fp);C:fscanf(格式字符串,文件指针,输出表列);D:fscanf(文件指针,格式字符串,输入表列);65.C语言的switch语句中caseA:只能为常量B:只能为常量或常量表达式C:可为常量或表达式或有确定值的变量及表达式D:可为任何量或表达式66.设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f值的数据类型为A:int B:float C:double D:不确定67. 下列标识符中,不合法的C语言用户自定义标识符是A:printf B:enum C:_ D:sin68.以下定义语句中,错误的是A:int a[]={1,2}; B:char *a[3]; C:char s[10]="test"; D:int n=5,a[n];69.若有下列定义,则对a数组元素地址的正确引用是int a[5],*p=a;A:&a[5] B:p+2 C:a++ D:&a70.在C语言程序中A:函数的定义可以嵌套,但函数的调用不可以嵌套B:函数的定义不可以嵌套,但函数的调用可以嵌套C:函数的定义和函数调用均可以嵌套D:函数的定义和函数调用不可以嵌套71.设有定义"float y=3.45678;int x;",则以下表达式中能实现将y中数值保留小数点后2位,第3位四舍五入的表达式是( ).A:y=(y*100+0.5)/100.0B:y=(y/100+0.5)*100.0C:y=y*100+0.5/100.0D:x=y*100+0.5,y=x/100.072.若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是A:2 B:3 C:4 D:无确定值73.已知结构类型定义和变量声明如下:struct sk{int a;float b;}data[2],*p;若有p=data,则以下对data[0]中成员a的引用中错误的是( ).A:data[0]->a B:data->aC:p->a D:(*p).a74.下列格式符中,可以用于以8进制形式输出整数的是( ).A:%d B:%8d C:%o D:%1d75.语句while(!E);中的表达式!E等价于A:E==0 B:E!=1 C:E!=0 D:E==176.对二维数组的正确说明是( ).A:int a[][] = {1,2,3,4,5,6}; B:int a[][3] = {1,2,3,4,5,6};C:int a[2][] = {1,2,3,4,5,6}; D:int a[2][3] = {1,2,3,4,5,6,7}77.下列数据中,为字符串常量的是A:A B:"house" C:How do you do. D:$abc78.函数调用:strcat(strcpy(str1,str2),str3)的功能是A:将串str1复制到串str2中后再连接到串str3之后B:将串str1连接到串str2之后再复制到串str3之后C:将串str2连接到串str1之后再将串str1复制到串str3中D:将串str2复制到串str1中后再将串str3连接到串str1之后79.判断两个字符串是否相等,正确的表达方式是A:while(s1= =s2)B:while(s1=s2)C:while(strcmp(s1,s2)= =0)D:while(strcmp(s1,s2)=0)80.若有int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5的语句为A:printf("%d",*(a+5)); B:printf("%d",p[5]);C:printf("%d",*(p+5)); D:printf("%d",*p[5]);81. C语言程序中必须有的函数是A:#include "stdio.h" B:main C:printf D:scanf82.以下运算符中,优先级最高的运算符是A:|| B:% C:! D:==83.在下列程序段中,枚举变量c1,c2的值依次是enum color {red,yellow,blue=4,green,white} c1,c2; c1=yellow;c2=white;printf("%d,%d\n",c1,c2);A:1,6 B:2,5 C:1,4 D:2,6 84.int a[10]={1,2,3,4,5,6,7,8};int *p;p=&a[5];p[-3]的值是A:2 B:3 C:4 D:不一定85.已知有如下的结构类型定义和变量声明:struct student{ int num;char name[10];}stu={1,"marry"},*p=&stu;则下列语句中错误的是( ).A:printf("%d",stu.num);B:printf("%d",(&stu)->num);C:printf("%d",&stu->num);D:printf("%d",p->num);86.int a=3,b=2,c=1;if(a>b>c)a=b;else a=c;则a的值为A:3 B:2 C:1 D:087.已定义以下函数fun(char *p2, char *p1){ while((*p2=*p1)!='\0'){ p1++;p2++; }}函数的功能是A:将p1所指字符串复制到p2所指内存空间B:将p1所指字符串的地址赋给指针p2C:对p1和p2两个指针所指字符串进行比较D:检查p1和p2两个指针所指字符串中是否有'\0' 88.enum a {sum=9,mon=-1,tue};定义了A:枚举变量 B:3个标识符C:枚举数据类型 D:整数9和-189.变量的指针,其含义是指该变量的().BA:值 B:地址 C:名 D:一个标志90.已知有语句"FILE *fp; int x=123;fp=fopen("out.dat","w");",如果需要将变量x的值以文本形式保存到一个磁盘文件out.dat中,则以下函数调用形式中,正确的是( ).A:fprintf("%d",x);B:fprintf(fp,"%d",x);C:fprintf("%d",x,fp);D:fprintf("out.dat","%d",x);91.设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是A:c=*p1+*p2; B:p2=c;C:p1=p2; D:c=*p1*(*p2);92.若变量已正确定义并赋值,下面符合C语言语法的表达式是A:a:=b+1 B:a=b=c+2C:int 18.5%3 D:a=a+7=c+b93.C语言规定,在一个源程序中,main函数的位置A:必须在最开始 B:必须在系统调用的库函数的后面C:可以任意 D:必须在最后94. int a=1,b=2,c=3;if(a>c)b=a;a=c;c=b;则c的值为A:1 B:2 C:3 D:不一定95.设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______.A:0 B:1 C:2 D:396.下面正确的赋值语句是(设char a[5],*p=a;)().A:p="abcd"; B:a="abcd";C:*p="abcd"; D:*a="abcd";97.C语言源程序的基本单位是A:过程 B:函数 C:子程序 D:标识符98.在C语言中,为了结束由while语句构成的循环,while后一对圆括号中表达式的值应该为A:0 B:1 C:True D:非099.相同结构体类型的变量之间,可以A:相加 B:赋值 C:比较大小 D:地址相同三、程序填空1.功能:删除字符串中的指定字符,字符串和要删除的字符均由键盘输入。

相关文档
最新文档