上海计算机二级c语言(共11篇)
1.上海计算机二级c语言 篇一
C语言是一种结构化的程序设计语言
结构化程序设计的优点是便于分工合作,便于调试、维护和扩充。这种程序设计方法是将一个大程序分成若千个模块,每个模块完成一个功能,由一个总控模块来控制和协调各个模块来实现总的功能;因此,这种程序设计方法又称为模块化程序设计方法。在C语言中,函数是构成C谙言程序的最小模块。实际上,C语言的程序是由一个或者多个文件组成的,每个文件叉是由一个或多个函数组成的。因此,一个程序是由一个或多个函数组成的,其中,须有且仅有一个主函数,生函数的名字规定为rnaino这样,组成一个程序的者干个文件中,仅有一个是主文件,只有主艾件中才含有main()函数。另外,函数是由若干条语句组成的,语句是由若干个单词组成的‘单词是由若干个字符组成的。字符是构成程序的最小单元。e语言程序的构成如下所示:
程序~文件~函数~语句~单词、字符。
C语言是结构化程序设计语言,它具有构成三种基本结构模式的语句,这种结构化程序设计应具有的三种基本结构模式如下:
顺序结构棋式
它将由若干条顺序执行的语句构成,这是程序设计的最基本形式。
分支结构模式
C语言中具有条件语句和开关语句,它将会构成各种需要的分支结构模式。
循环结构模式
C语言中提供了三种循环语句(for循环,whil。循环和do-while循环),用它们可以构成
各种循环结构模式
在讲述C语言是一种结构化程序设计语言的同时,还必须指出它与其他结构化程序设计语言(如PASCAL语言)相比较,还有一些不完全之处,因此,C语言是一种不完全的结构化程序设计语言。其表现如下:
第一,完全的结构化程序设计语言不允许使用goto语句,因为goto语句会破坏结构化。
但是。got。语句在某些时候会使得程序简练,因此,在C语言中原则上允许使用goto语句,为了减少它对结构化的影响,采取了限制使用的办法,即规定got。语句的转向范围只能在一个函数体内。不得使用gates语句从一个函数体内转向到另一个函数体中,这种限制性地使用goto语句会给编程带来一些方便,又不会影响棋块之间的结构化。但是,建议在G语言的程序中尽量少使用goto语句。
第二,完全的结构化程序设计语言要求一个模块只有一个入口和一个出口,这样便于结构化的管理。但是,C语言程序中允许函数使用多个返回语句(return语句),即允许函数有多个出口,返回到调用函数。这样做也是为了编程中的方便。在C语言程序中,可以使用条件语句来返回不同的函数值。
由此可见,C语言虽然是一个不够严格的结构化程序设计语言,但它是一个使用起来十分灵活的高级语言。
1.计算机二级C语言程序设计考点解析:C语言程序实例
2.计算机二级C语言程序设计考点:指针
3.计算机二级C语言程序设计考点:函数
4.计算机二级C语言程序设计考点:数组
5.计算机二级C语言考点:字符型数据
6.计算机二级c语言试题
7.计算机二级C语言程序设计考点解析:常用的输人函数
8.计算机二级C语言程序设计考点解析:常用的输出函数
9.计算机二级C语言程序设计考点:单词及词法规则
10.计算机二级《C语言》基础练习题及答案
2.上海计算机二级c语言 篇二
1.1 填空
1.2 改错
1.3 编程
2 上机操作解析
2.1 填空
2.2 改错
2.3 编程
3 知识点详析
类型的自动转换:
自动转换的规则是按照低类型转换到高类型或赋值号的右边类型转换到赋值号左边的类型来进行。例如:
(1) 字符型 (char) 和短整型 (short) 必须要先转换成整型 (int) 。
(2) 单精度型 (float) 必须要先转换成双精度型 (double) 。
(3) 若两个操作数之一为double型, 则另一项也转换为double型, 运算结果为double型。或者, 如果两个操作数之一为long型, 则另外一项也转换为long型, 运算结果为long型。否则, 如果两个操作数之一为unsigned型, 则另外一项也转换为unsigned型, 运算结果为unsigned型。
(4) 赋值号的右边类型转换到赋值号左边的类型, 结果为赋值号左边的类型。当把右边的浮点型转换成整型时, 去掉小数部分;把右边的双精度型转换成单精度型时, 进行四舍五入处理。
参考文献
[1]路瑾铭.全国计算机等级考试过关宝典系列——教程 (二级C语言) .2011 (9)
3.计算机二级C语言上机题型总结 篇三
(一)关于“******”问题
1、将字符串中的前导*号全部删除,中间和后面的*号不删除。void fun(char *a){ char *p=a;while(*p= =’*’)p++;for(;*p!=’’;p++,a++)*a=*p;*a=’’;}
2、只删中间* int i;for(i=0;a[i]= =’*’;i++)for(;h
3、只删尾* while(*a!=’’)a++;a--;while(*a= =’*’)a--;*(a+1)=’’;
4、只留前* int i , j=0;for(i=0;a=’*’;i++);j=i;for(;a;i++)if(a!=’*’)a[j++]=a[i];a[j]=’’;
5、只留中间* int i,j=0;for(i=h;i 6、只留尾* char *t=a;for(;t<=p;t++)if(*t!=’*’)*(a++)=*t;for(;t!=’’;t++)*(a++)=*t;*a=’’; 7、*个数>n个,删多余的*;*个数<=n个,不做任何处理。int i=0, k=0;char *p,*t;p=t=a;while(*t= =’*’){ k++;t++;} if(k>n){ while(*p){a[i]=*(p+k-n);i++;p++} a[i]=’’;} (二)移动问题 1、若一维数组中有n个整数,要求把下标从p到n-1(p<=n-1)的元素平移到数组前面。int i,j,t;for(i=p;i<=n-1;i++){ t=w[n-1];for(j=n-2;j>=0;j--)w[j+1]=w[j];w[0]=t;} 2、把下标从0到p(p<=n-1)的元素平移到数组最后。int i,j,t;for(i=0;i<=p;i++){ t=w[0];for(j=1;j 3、把字符串str中的字符向前移动,原来第1个字符放串尾,结果仍保存在原串中。ch=str[0];for(i=0;str[i+1];i++)str[i]=str[i+1];str[i]=ch; 4、移动字符串中的内容,把第1到第m个字符平移到串后,把第m+1到后移到前。void fun(char *w, int m){ int i, j;char t;for(i=1,i<=m;i++){ t=w[0];for(j=1;w[j]!=’’;j++)w[j-1]=w[j];w[j-1]=t;} } (三)排序法 1、冒泡法 for(i=1;i 2、选择法 for(i=0;i 3、插入法 for(i=1;i (四)Fibonacci问题 1、求Fibonacci数列中小于t的最大的一个数,结果由函数返回。int fun(int t){ int a=1,b=1,c=0,i;do { c=a+b;a=b;b=c;}while(c 2、用递归算法计算数列中第n项的值。long fun(int g){ swich(g){ case 0:return 0;switch(g)case1:case2:return 1;} return(fun(g-1)+fun(g-2));}(五)素数问题 1、将大于整数m且紧靠m的k个非素数存入所指的数组中。void fun(int m,int k,int xx[]){ int i,j,n;for(i=m+1,n=0;n 2、小于或等于lim的所有素数放在aa数组中,该函数返回所求出的素数个数。int fun(int lim, int aa[MAX]){ int i,j,k=0;for(i=2;i<=lim;i++){ for(j=2;j=i)aa[k++]=i;} return k;} 3、将所有大于1小于整数m的非素数存入xx数组中,个数通过k传回。void fun(int m,int *k,int xx[]){ int i,j,n=0;for(i=4;i {int i, j,t,n=0;for(i=2;i (六)删除相同数 int fun(int a[],int n){ int i, j=1;for(i=1;i { int i,t,j=0;t=a[0];for(i=1;i (七)统计字符个数,单词个数。 1、按‘0’到‘9’统计一个字符串中的奇数数字字符各自出现的次数,结果保存在数组num中。 void fun(char *tt, int num[]){ int i, j;int bb[10];char *p=tt;for(i=0;i<10;i++){ num[i]=0;bb[i]=0;} while(*p){ if(*p>=’0’&&*p<=’9’)bb[*p-‘0’]++;p++;} for(i=1,j=0;i<10;i=i+2,j++)num[j]==bb[i];} 2、str全部由小写字母和空格字符组成的字符串,num传入字符串长度。统计单词个数。void fun(char *s, int *num){ int I, n=0;for(i=0;i<*num;i++){ if(s[i]>=’a’&&ss[i]<=’z’&&(s[i+1]= =’’|| s[i+1]==’0’))n++;} *num=n;} 3、从’a’到’z’统计一个字符串中所有字母字符各自出现的次数,结果存在数组alf中。void fun(char *tt, int alf[]){ int i;char *p=tt;for(i=0;i<26;i++)alf[i]=0;while(*p){ if(*p>=’A’&&*p<=’Z’)*p+=32;if(*p>=’a’&&*p<=’z’)alf[*p-‘a’]++;p++;} } 4、str字符序列由字符0和1组成。查找0字符连续出现的最长长度,若有几个0字符长度相同,只记录最后1个0字符串相关信息,通过m和k返回最长0字符长度和其下标。void fun(char *str, int *m, int *k){ int i, j=0;int bb[N];char *p=str;*m=0;*k=0;for(i=0;i 5、统计在tt字符串中”a”到”z”26个字母各自出现的次数,并依次放在pp所指数组中。void fun(char *tt,int pp[]){ int i;for(i=0;i<26;i++)pp[i]=0;for(;*tt!=’’;tt++)if(;*tt>=’a’&&*tt<=’z’)pp[*tt-’a’]++;} 6、统计一个长度为n的字符串在另一个字符串中出现的次数。int fun(char *str, char *substr){ int n;char *p,*r;n=0;while(*str){ p=str;r=substr;while(*r)if(*r==*p){r++;p++;} else break;if(*r==’’)n++;str++;} return n;} 7、求出ss所指字符串中指定字符的个数,并返回此值。int fun(char *ss, char c){ int i=0;for(;*ss!=’’;ss++)if(*ss==c)i++;return i;} 8、统计一个长度为2的字符串在另一个字符串中出现的次数。int fun(char *str, char *substr){ int i,j=0;for(i=0;str[i+1]!=’’;i++)if(str[i]==substr[0]&&str[i+1]==substr[1])j++;return j;} (八)进制转换 1、把str字符串转换成任意进制的数。int fun(char *str, int x, int y){ int sum;int i=0;char *p=str;for(i=0;i :原进制;y:要转换成的进制。x while(sum!=0){ xx[i]=sum%y;sum=sum/y;i++;} return i;} 注: (1)将x转换成10进制:sum=sum*x+*p-‘0’;(2)将10进制转换成y: sum%y 得到y进制数的最低位。sum/y 得到y进制数的次低位。 2、str字符串由‘0’和‘1’组成。转换成十进制数。int fun(char *str){ int n;char *p=str;n=*p-‘0’;p++;while(*p){ n=n*2+*p-‘0’;p++;} return n;} (九)比较字符串长度 1、比较两个字符串的长度,函数返回较短的字符串。char *fun(char *s, char *t){int i,j;for(i=0;s[i]!=’’;i++);for(j=0;t[j]!=’’;j++);if(i<=j)return s;else return t;} 2、从传入的num个字符中找出最长的一个字符串,通过形参指针max传回该串地址。fun(char(*a)[81], int num,char *max){ int i=0;max=a[0];for(i=0;i (十)最大公约数,最小公倍数 1、int fun(int a, int b){ int r,t;if(a 2、输入两整数m和n,求最大公约数,最小公倍数。while(b!=0){t=a%b;a=b;b=t;} printf(“%d”,”%d”,a, n*m/a);注: A.FOR B.&a C.print D._00 正确答案:B 答案解析:合法的标识符要满足组成字符为a~z以及A~Z,数字字符0到9和下划线,其中数字不开头,不能是关键字。选项B中,&不属于组成字符,是错误的。 2). 下列描述中正确的是( ) A.程序就是软件 B.软件开发不受计算机系统的限制 C.软件既是逻辑实体,又是物理实体 D.软件是程序、数据与相关文档的集合 正确答案:D 答案解析:计算机软件与硬件是计算机系统中相互依存的两部分。计算机软件是包括程序、数据及相关文档的完整集合。软件由两部分组成:一部分是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。软件具有以下六个特点:①软件是一种逻辑实体,而不是物理实体,具有抽象性。②软件的生产与硬件不同,它没有明显的制作过程。③软件在运行、使用期间不存在磨损、老化问题。④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移值的问题。⑤软件复杂性高,成本昂贵。⑥软件的开发涉及诸多社会因素。 3). 变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是 A.a^b B.a|b C.a&b D.a<<4 正确答案:A 答案解析:本题考查的是位运算的知识,对于任何二进制数,和1进行异或运算会让其取反,而和0进行异或运算不会产生任何变化,故本题选A。 4). 下列关于栈叙述正确的是( ) A.栈顶元素最先能被删除 B.栈顶元素最后才能被删除 C.栈底元素永远不能被删除 D.以上三种说法都不对 正确答案:A 答案解析:栈是先进后出的线性表,栈顶的元素最先被删除,栈底的元素最后被删除。 5). 已知 int a=1,b=3则a^b的值为 A.3 B.1 C.2 D.4 正确答案:C 答案解析:^是按位异或运算,如果对应位不同则结果为1,相同则为0。 6). 按条件f对关系R进行选择,其关系代数表达式为( ) A.R|X|R B.R|X|Rf C.бf(R) D.∏f(R) 正确答案:C 7). 信息隐蔽的概念与下述哪一种概念直接相关( ) A.软件结构定义 B.模块独立性 C.模块类型划分 D.模拟耦合度 正确答案:B 8). 对于循环队列,下列叙述中正确的是( ) A.队头指针是固定不变的 B.队头指针一定大于队尾指针 C.队头指针一定小于队尾指针 D.队头指针可以大于队尾指针,也可以小于队尾指针 正确答案:D 答案解析:所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置。循环队列的主要操作是:入队运算和退队运算。每进行一次入队运算,队尾指针就进一。每进行一次退队运算,队头指针就进一。当rear或front等于队列的长度加1时,就把rear或front值置为1。所以在循环队列中,队头指针可以大于队尾指针,也可以小于队尾指针。 9). 设有定义: char p[]={′1′, ′2′, ′3′},*q=p; 以下不能计算出一个char型数据所占字节数的表达式是( ) A.sizeof(p) B.sizeof(char) C.sizeof(*q) D.sizeof(p[0]) 正确答案:A 答案解析:选项A计算的是p[ ]字符数组首地址所占的内存字节数,返回值数组中所有元素占有的空间。*q和p[0]分别表示数组p中下标为0的字符元素,选项B和D都可以计算char型数据占有的字节数。 10). 以下叙述中正确的是( ) A.打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖 B.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据 C.C语言中的文件是流式文件,因此只能顺序存取数据 D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失 正确答案:D 答案解析:在C语言中,有两种对文件的存取方式;顺序存取和直接存取;如果以″a″的方式对一个已打开的文件进行写操作后,则原有文件中内容将保存,新的数据写在原有内容之后。如果以″a+″的方式为读和写而打开一个文件,则既可以对文件进行读,也可以对文件进行写,而且在读和写操作之间不必关闭文件,可以从头开始读。当对文件的读(写)操作完成之后,必须将它关闭。 11). 若变量均已正确定义并赋值,以下合法的C语言赋值语句是( )。 A.x=y==5; B.x=n%2.5; C.x+n=I; D.x=5=4+1; 正确答案:A 答案解析:选项A的含义是把关系表达式y==5的值赋给变量x。所以这是一条正确的赋值语句。因为赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量,所以选项C和D是错误的。因为求余运算符″%″两侧的运算对象都应当是整型数据,所以选项B是错误的。 12). 下列数据结构中,属于非线性结构的是( ) A.循环队列 B.带链队列 C.二叉树 D.带链栈 正确答案:C 答案解析:根据数据结构中各数据元素之间的前后件关系的复杂程度,一般将数据结构分为两大类:线性结构和非线性结构。循环队列、带链队列和带链栈都是线性结构,而二叉树是非线性结构。 13). 下列叙述中正确的是( ) A.一个算法的空间复杂度大,则其时间复杂度也必定大 B.一个算法的空间复杂度大,则其时间复杂度必定小 C.一个算法的时间复杂度大,则其空间复杂度必定小 D.算法的时间复杂度与空间复杂度没有直接关系 正确答案:D 答案解析:算法的复杂度主要包括时间复杂度和空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量,算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),其中n是问题的规模;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。根据各自的定义可知,算法的时间复杂度与空间复杂度并不相关。 14). 下列描述中正确的是( ) A.程序就是软件 B.软件开发不受计算机系统的限制 C.软件既是逻辑实体,又是物理实体 D.软件是程序、数据与相关文档的集合 正确答案:D 答案解析:计算机软件与硬件是计算机系统中相互依存的两部分。计算机软件是包括程序、数据及相关文档的完整集合。软件由两部分组成:一部分是机器可执行的程序和数据;二是机器不可执行的,与软件开发、运行、维护、使用等有关的文档。软件具有以下六个特点:①软件是一种逻辑实体,而不是物理实体,具有抽象性。②软件的生产与硬件不同,它没有明显的制作过程。③软件在运行、使用期间不存在磨损、老化问题。④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移值的问题。⑤软件复杂性高,成本昂贵。⑥软件的开发涉及诸多社会因素。 1.计算机二级c语言试题 2.计算机二级C语言程序设计测试题及答案 3.计算机二级C语言考试考什么 4.计算机二级C语言基础练习题 5.计算机二级C语言考试必看技巧 6.计算机二级C语言考点:字符型数据 7.计算机二级《C语言》基础练习题及答案 8.全国计算机二级c语言练习题 9.计算机二级C语言重点知识点 下列给定程序中,函数fun的功能是:输出M×M整数方阵,然后求两条对角线上元素之和,并作为函数值返回。 请改正程序中的错误,使它能得出正确的结果; 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构! 试题程序: 四、程序设计题 编写函数fun,其功能是:将a,b两个两位正整数合并成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。 例如,当a=45,b=12,调用该函数后c=4251。 注意:部分源程序给出如下。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 1.1 填空题 1.2 改错题 1.3 编程题 2 上机操作题答案 2.1 填空题 (1) 0 (2) j-- (3) j 2.2 改错题 (1) doublef (double x) (2) return s; 2.3 编程题 3 知识点详析 一维数组的初始化: 数组的初始化即在数组定义的同时给数组元素赋初值。 一维数组的初始化可以用以下3种方法实现: (1) 顺序列出数组元素的全部初值。数组初始化时, 将数组元素的初值依次放在赋值符号后面的一对大括号中, 每个初值均以逗号间隔。 (2) 只给数组的前面一部分元素设定初值。 (3) 当对数组全部的元素赋初值时, 可以不指定数组元素的个数。 注意: (1) 当指定数组长度时, 不允许赋初值的个数多于数组元素的个数。 (2) 所赋初值的类型应与数组元素的类型一致。如不一致, 则会自动转化为与数组元素相同的类型。 (3) 在单纯的定义语句中, 不能出现省略数组长度的情况。 参考文献 [1]路瑾铭.全国计算机等级考试过关宝典系列——教程 (二级C语言) .2011 (9) 2.定义指针变量的一般形式为: 类型名*指针变量1,*指针变量2,…; ″类型名″称为″基类型″它规定了后面的指针变量中存放的数据类型,″*″号表明后面的″指针变量1″,″指针变量2″等是指针变量,″*″号在定义时不能省略,否则就会变成一般变量的定义了。″指针变量1″,″指针变量2″等称为指针变量名。 3.一个指针变量只能指向同一类型的变量。 4.与指针和指针变量有关的两个运算符: (1)*:指针运算符(或称″间接访问″运算符) (2)&:取地址运算符 通过*号可以引用一个存储单元,如有如下定义: inti=123,*p,k; 则p=&I;或k=*p;或k=*&I;都将变量i中的值赋给k。 *p=10;或*&i=10;都能把整数10赋给变量i。这里,等号左边的表达式*p和*&i都代表变量i的存储单元。 2变量、数组、字符串、函数、结构体的指针以及指向它们的指针变量 1.变量的指针和指向变量的指针变量。 2.数组的指针和指向数组的指针变量。 所谓数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。 C语言规定数组名代表数组的首地址,也就是第一个元素的地址。 3.字符串的指针和指向字符串的指针变量。 我们可以通过定义说明一个指针指向一个字符串。 C语言将字符串隐含处理成一维字符数组,但数组的每个元素没有具体的名字,这一点跟字符数组不一样。要引用字符串中的某个字符,只能通过指针来引用:*(s+0),*(s+1),…,*(s+n)。 4.函数的指针和指向函数的指针变量。 指向函数的指针变量的一般形式为: 数据类型标识符(*指针变量名); 这里的″数据类型标识符″是指函数返回值的类型。 函数的调用可以通过函数名调用,也可以通过函数指针调用(即用指向函数的指针变量调用)。 指向函数的指针变量表示定义了一个指向函数的指针变量,它不是固定指向哪一个函数,而只是定义了这样的一个类型变量,它专门用来存放函数的入口地址。在程序中把哪一个函数的地址赋给它,它就指向哪一个函数。在一个程序中,一个指针变量可以先后指向不同的函数。 在给函数指针变量赋值时,只需给出函数名而不必给出参数。因为函数指针赋的值仅是函数的入口地址,而不涉及到实参与形参的结合问题。 对指向函数的指针变量,表达式p+n,p++,p--等都无意义。 5.结构体的指针与指向结构体的指针变量 一个结构体变量的指针就是该变量所占据的内存段的起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。 3用指针做函数参数 函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。 4返回指针值的指针函数 一个函数可以返回一个整型值、字符值、实型值等,也可以返回指针型数据,即地址这种带回指针值的函数,一般的定义形式为: 类型标识符*函数名(形参表); 1.计算机二级C语言程序设计考点:函数 2.计算机二级C语言考点:字符型数据 3.计算机二级c语言试题 4.计算机二级office考点 5.计算机考试二级C++语言程序设计考试大纲 6.全国计算机二级考试C++语言程序设计大纲 7.计算机等级考试二级C语言程序设计考试大纲 8.计算机考试二级C语言程序设计考试大纲 9.计算机二级《C语言》基础练习题及答案 该部分对非计算机专业的学生来说是一个难点,因为结构体在《数据结构》这门课程中应用最为广泛,但考生忽视对该知识点的复习,但在以往的机试中,有17%的题目是属于该类型。考生在复习这部分的时候,首先应注意结构体成员的两种不同的引用方法:结构体变量和指向结构体的指针,也就是结构体成员运算符’.’和指向运算符’->’,在编程的过程中,往往会涉及到结构体数组,其实这类数组除了数据类型是结构体以外,其它的特性和普通数组是一样的,结构体除了定义、赋值和初始化以外,它的其它操作和普通变量也是一样的,包括在结构体数组(记录)中进行查找、删除、求最大最小值等操作,我们应该用对待普通变量的方法来解决结构体的问题,这样的话,难度就可以大幅度的降低。 通常来说C语言属于计算机程序设计语言中的重要组成部分, 和其他设计语言相比, C语言不仅具备了高级语言的特点同时还具备了汇编语言的优越性。这意味着C语言不仅仅可以作为工作系统中的设计语言同时还能作为编写系统的重要组成部分来应用于编写不依附计算机硬件的应用程序。除此之外, C语言在计算机的软件和程序的设计过程中不仅具有效率较高的优越性同时也能够应用于多个计算机的操作系统当中, 因此具有极好的泛用性和实用性。 2 C语言应用特点 C语言作为计算机程序设计的重要组成部分具有很多优越性, 这主要体现在简洁性强、运算范围广、结构较为完善等环节。以下从几个方面出发, 对C语言应用特点进行了分析。 (一) 简洁性强。简洁性强是指C语言作为编程语言具有紧凑、简洁、灵活、方便等优越性。例如C语言仅有32个关键字和9类控制语句, 因此其程序书写方式较为自由灵活, 在这一过程中通常会选择使用小写字母来对其进行表示并且压缩掉所有相对不重要的部分。除此之外, 虽然C语言被称为高级语言中的低级语言, 即C语言的应用模式过于简单, 但是需要注意的是, C语言的应用效率和移植泛用性都非常强, 因此这也在另一方面反映出C语言具有较强的简洁性。 (二) 运算范围广。运算范围对于编程语言的重要性是不言而喻的。众所周知C语言的运算范围非常广, 并且具有34种运算符, 这意味着C的运算方式非常丰富并且运输结果的表达形式也是多种多样的。除此之外, 由于C语言的数据结构较为丰富并且具备了各类数据结构所需要的实型、整型、数组类型、字符型、结构体类型、指针类型、共用体类型等内容。因此在计算机编程过程中C语言可以用来作为各类复杂的数据结构的运算。 (三) 结构较为完善。众所周知在计算机编程中, 具有结构化的控制语句能够作为程序的模块单位并且可以在此基础上更好地实现程序的模块化。因此C语言是非常好的结构化语言同时能够很好地顺应当前的编程类型的具体要求。这使得C语言不仅能够成功的系统进行描述并且能够使得系统的结构和运行时的执行效率更高, 因此具有很强的优越性。 3计算机中C语言的运用 在计算机中C语言的运用可以取得良好的应用效果, 以下从数据与文字的有效表达、内存储器构造完善、变量的灵活设定、关键环节有效处理等方面出发, 对计算机中C语言的运用进行了分析。 (一) 数据与文字的有效表达 数据与文字的有效表达是计算机中C语言的运用的基础和前提。通常来说在计算机数据处理和文字表达过程中, C语言的应用能够将简单类型的数据和文字进行关联, 从而在此基础上促进其语言数据表达更为精确。除此之外, 从表达方式上说, 计算机中c语言的运用能够有效攻克之前二进制无法实现计算机语言数据表达欠缺问题与此同时还具备了完善的表述功能并且具有较为完备的类型。 (二) 内存储器构造完善 内存储器构造完善对于计算机中C语言的运用的重要性是不言而喻的。众所周知在C语言应用过程中程序数据往往是存放在内存储器中的, 并且在这之后提供给CPU进行处理和运转, 因此在这一前提下内存储器构造的完善就显得极为重要了。除此之外, 内存储器构造完善也是C语言应用的重要优越性, 即通过解多大容量的内存编址需要多少位的二进制来支持才可以更好地保障其中的每个字节都具有唯一的编号。 (三) 变量的灵活设定 变量的灵活设定是计算机中C语言的运用的重中之重。通常来说变量的地址是指变量所拥有的多个字节里的第一个字节地址。这意味着一个指针变量里所包含的变量是可以灵活设定的, 因此在C语言的应用过程中工作人员可以根据相应的语言数据类型和内存特点来对变量的初始值进行有效设定, 从而更好地影响之后获得的变量结果, 最终促进计算机编程效率的有效提高。 (四) 关键环节有效处理 关键环节有效处理是C语言在计算机中运用的核心要素之一。众所周知程序设计是计算机领域中异常关键、重要的环节。因此在这一领域中C语言的应用能够促进其关键环节的有效处理。例如C语言在计算机程序中的应用不仅能够有效促进传统计算机语言编程方法的改良和革新并且能够同时提升计算机的工作效率并且能够更好地确保了计算机先进性的操作。因此C语言在计算机中的运用可以促进其关键环节的有效处理。 4结语 在计算机中C语言的应用已经有了较长的历史, 并且在许多程序和软件的设计过程中都有着极好的应用, 并且在我国计算机专业学习过程中C语言也是重要的必修课。因此在这种前提下对计算机中C语言的运用进行分析就有着极为重要的技术意义和现实意义。 摘要:随着我国技术水平的持续进步和计算机整体水平的快速提升, 在计算机领域中C语言的应用取得了良好的实践效果。因此工作人员在计算机应用过程中应当对C语言有着深刻的了解, 并且在此基础上通过计算机实践的进行促进C语言整体水平的有效进步。 关键词:计算机,C语言,运用 参考文献 [1]丽萍, 李兢, 吴长奇.如何用C语言编写面向对象的程序[J].软件, 1995 (09) . [2]王建滨.浅谈用C语言实现直接写屏[J].计算机世界, 1994 (03) . [3]周隽青, 杜秀茹.C语言与pascal语言的比较[J].黑龙江教育学院学报, 1995 (01) . c语言中有关命令行参数涉及到程序的主函数main(int argc,char *argv[]这样两个参数,其中,int argc表示命令行参数的个数(包括可执行程序名本身),char *argv[]表示每个参数的具体内容,argv[0]为命令行中可执行程序名本身,argv[1]为命令行中第二个参数的内容,依次类推。 如下例输出命令行参数的个数及参数的内容: main (int argc,char *argv[], {int i; printf(“ 命令行中可执行文件名为:%s”,argv[0]); printf(“ 总共有%d个参数:”,argc); i=0; while(argc>=1) {printf(″%s “,argv[i++]); argc--;} } 命令行参数用的最多还是在诸如dir a:等之类带有盘符、路径或文件名这样的命令行中,所以说灵活处理这一类参数才能有效地提高程序的运行效果。譬如dir命令,其后可以是盘符,可以是路径,也可以是文件名,如何区分这一参数呢?请看下例(此程序模拟dir命令,程序要求在命令行输入一个参数:盘符或路径或文件名,若无参数或参数多于一个都将取默认的参数“*.*”)。 *-------------------- 功能:模拟dir命令进行处理命令行参数 --------------------*/ #include #include #include #inchlude int j,num=0; char ss[20],path[50],path2[50]; void main (int argc,char *argv[]) { struct ffblk f; int done; if(argc==2) /*取命令行参数到数组中*/ strcpy(ss,argv[1]); else strcpy(ss,″*.*″); /*给数组赋值缺省参数*/ if (((ss[strlen(ss)-1]==′′||((ss[strlen(ss)-1]==’:’)) strcat(ss,″*.*″); /*若参数为路径或盘符,则加上″*.*″ */ getcwd(path1,50); /*取当前路径*/ if (chdir(ss)==0) /*判断参数是否为路径*/ strcat(ss,”*.*“); /*若路径末没有带”“,则加上”*.*“ */ chdir(path1); /*恢复原来路径*/ strcpy(path2,ss); for(j=strlen(path2);j>0;j--)/*提取参数中的路径到path2 */ {if((path2[j]==’’))||(path2[j]==’:’)){ path2[j+1]=’�’; goto senull;} path2[0]=’�’; senull: if(strlen(path2)==0) /* 若给出的参数中没带路径,则取当前路径*/ strcpy(path2,path1); printf(” **模拟dir** 命令目录路径%s“,path2); done=findfirst(ss,&f,55); /*查找第一个配匹的文件*/ j=1; while(!done) {if (f.ff_attrib!=0x10) /* 若文件属性不是目录 */ printf(” %15s %20ld“,f.ff_name,f.ff_fsize); else printf(” &11s “,f.ff_name); num++; j++; if(j==23) printf(” --------more (按任意键继续)----“); getch; j=0; printf(″ (目录路径%s)″,path2);} done=findnext(&f); /*查找下一个配匹的文件*/ } printf(″ 当前目录中总共有%d个文件. ″,num); 在许多应用软件运行时都带有命令行参数,其实这些命令行参数在c语言编写的程序中也可以实现,灵活地运用命令行参数进行处理可以有效地提高程序的运行效率,收到事半功倍的效果。 c语言中有关命令行参数涉及到程序的主函数main(int argc,char *argv[]这样两个参数,其中,int argc表示命令行参数的个数(包括可执行程序名本身),char *argv[]表示每个参数的具体内容,argv[0]为命令行中可执行程序名本身,argv[1]为命令行中第二个参数的内容,依次类推。 如下例输出命令行参数的个数及参数的内容: main (int argc,char *argv[], {int i; printf(” 命令行中可执行文件名为:%s“,argv[0]); printf(” 总共有%d个参数:“,argc); i=0; while(argc>=1) {printf(″%s ”,argv[i++]); argc--;} } 命令行参数用的最多还是在诸如dir a:等之类带有盘符、路径或文件名这样的命令行中,所以说灵活处理这一类参数才能有效地提高程序的运行效果。譬如dir命令,其后可以是盘符,可以是路径,也可以是文件名,如何区分这一参数呢?请看下例(此程序模拟dir命令,程序要求在命令行输入一个参数:盘符或路径或文件名,若无参数或参数多于一个都将取默认的参数“*.*”)。 *-------------------- 功能:模拟dir命令进行处理命令行参数 --------------------*/ #include #include #include #inchlude int j,num=0; char ss[20],path[50],path2[50]; 下列各题a)、b)、c)、d)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1) 1mb等于 a) 1000字节 b) 1024字节 c) 1000×1000字节 d) 1024×1024字节 (2) 与十六进制数200等值的十进制数为 a) 256 b) 512 c) 1024 d) 2048 (3) 所谓“裸机”是指 a) 单片机 b) 单板机 c) 不装备任何软件的计算机 d) 只装备操作系统的计算机 (4) 能将高级语言编写的源程序转换成目标程序的是 a) 链接程序 b) 解释程序 c) 编译程序 d) 编辑程序 (5) 在64位计算机中,一个字长所占的字节数为 a) 64 b) 8 c) 4 d) 1 (6) 在windows环境下,当一个应用程序窗口被最小化后,该应用程序 a) 继续在后台运行 b) 继续在前台运行 c) 终止运行 d) 暂停运行 (7) 在windows环境下,能实现窗口移动的操作是 a) 用鼠标拖动窗口中的任何部位 b) 用鼠标拖动窗口的边框 c) 用鼠标拖动窗口的控制按钮 d) 用鼠标拖动窗口的标题栏 (8) 在windows环境下,printscreen键的作用是 a) 打印当前窗口的内容 b) 打印屏幕内容 c) 复制屏幕到剪贴板 d) 复制当前窗口到剪贴板 (9) internet的通信协议是 a) tcp/ip b) bbs c) www d) ftp (10) 下列叙述中正确的是 a) 计算机病毒只感染可执行文件 b) 计算机病毒只感染文本文件 c) 计算机病毒只能通过软件复制的方式进行传播 d) 计算机病毒可以通过网络或读写磁盘等方式进行传播 (11) 一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是 a) 有零个或多个输入 b) 有零个或多个输出 c) 有穷性 d) 可行性 (12) 以下叙述中正确的是 a) c语言的源程序不必通过编译就可以直接运行 b) c语言中的每条可执行语句最终都将被转换成二进制的机器指令 c) c源程序经编译形成的二进制代码可以直接运行 d) c语言中的函数不可以单独进行编译 (13) 以下符合c语言语法的实型常量是 a) 1.2e0.5 b) 3.14.159e c) .5e-3 d) e15 (14) 以下4组用户定义标识符中,全部合法的一组是 a) _main b) if c) txt d) int enclude -max real k_2 sin turbo 3com _001 (15) 若以下选项中的变量已正确定义,则正确的赋值语句是 a) x1=26.8%3 b) 1+2=x2 c) x3=0x12 d) x4=1+2=3; (16) 设有以下定义 int a=0; double b=1.25; char c=’a’; #define d 2 则下面语句中错误的是 a) a++; b) b++ c) c++; d) d++; (17) 设有定义:float a=2,b=4,h=3;,以下c语言表达式与代数式 计算结果不相符的是 a) (a+b) *h/2 b) (1/2)*(a+b) *h c) (a+b) *h*1/2 d) h/2*(a+b) (18) 有以下程序 main( ) { int x=102,y=012; printf(“%2d,%2d ”,x,y); } 执行后输出结果是 a) 10,01 b) 02,12 c) 102,10 d) 02,10 (19) 以下4个选项中,不能看作一条语句的是 a) {;} b) a=0,b=0,c=0; c) if(a>0); d) if(b==0) m=1;n=2; (20) 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是 a) scanf(“%d”,pa) ; b) scanf(“%d”,a) ; c) scanf(“%d”,&pa) ; d) scanf(“%d”,*pa) ; (21) 以下程序段中与语句k=a>b?(b>c?1:0):0;功能等价的是 a) if((a>b) &&(b>c) ) k=1; b) if((a>b) ||(b>c) ) k=1 else k=0; else k=0; c) if(a<=b) k=0; d) if(a>b) k=1; else if(b<=c) k=1; else if(b>c) k=1; else k=0; (22) 有以下程序 main( ) { char k; int i; for(i=1;i<3;i++) { scanf(“%c”,&k); switch(k) { case ‘0’: printf(“another ”); case ‘1’: printf(“number ”); } } } 程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是 a) another b) another c) another d) number number number number number another number (23) 有以下程序 main( ) { int x=0,y=5,z=3; while(z-->0&&++x<5) y=y-1; printf(“%d,%d,%d ”,x,y,z); } 程序执行后的输出结果是 a) 3,2,0 b) 3,2,-1 c) 4,3,-1 d) 5,-2,-5 (24) 有以下程序 main( ) { int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d ”,s); } 程序执行后的输出结果是 a) 自然数1~9的累加和 b) 自然数1~10的累加和 c) 自然数1~9中的奇数之和 d) 自然数1~10中的偶数之和 (25) 有以下程序 main( ) { int i,n=0; for(i=2;i<5;i++) { do { if(i%3) continue; n++; } while(!i); n++; } printf(“n=%d ”,n); } 程序执行后的输出结果是 a) n=5 b) n=2 c) n=3 d) n=4 (26) 若程序中定义了以下函数 double myadd(double a,double b) { return (a+b) ;} 并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是 a) double myadd(double a,b) ; b) double myadd(double,double); c) double myadd(double b,double a) ; d) double myadd(double x,double y); (27) 有以下程序 char fun(char x , char y) { if(x main( ) { int i,j; for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) printf(“ “); for(j=1;j<=_______;j++) printf(“*”); printf(“ ”); } } 在下划线处应填入的是 a) i b) 2*i-1 c) 2*i+1 d) i+2 (43) 有以下程序 void sort(int a[],int n) { int i,j,t; for(i=0;i} main() { int aa[10]={1,2,3,4,5,6,7,8,9,10},i; sort(aa,10); for(i=0;i<10;i++) printf(“%d”,aa[i]); printf(“ ”); } 其输出结果是 a) 1,2,3,4,5,6,7,8,9,10 b) 10,9,8,7,6,5,4,3,2,1 c) 9,2,7,4,5,6,3,8,1,10 d) 1,10,3,8,5,6,7,4,9,2 (44) 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是 a) char s[10]=”abcdefg”; b) char t[]=”abcdefg”,*s=t; c) char s[10];s=”abcdefg”; d) char s[10];strcpy(s,”abcdefg”); (45) 有以下程序 #include main(int argc ,char *argv[ ]) { int i,len=0; for(i=1;i printf(“5d ”,len); } 经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行 ex abcd efg h3 k44 执行后输出结果是 a) 14 b)12 c) 8 d) 6 (46) 有以下程序 void f(int a[],int i,int j) { int t; if(i for(i=0;i for(j=0;【13】;j++) {t=a[i][j]; 【14】; a[j][i]=t; } } (14) 以下sstrcpy( )函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。 void sstrcpy(char *s,char *t) { while(*s++=【15】);} main( ) { char str1[100],str2[]=”abcdefgh”; sstrcpy(str1,str2); printf(“%s ”,str1); } (15) 下列程序的运行结果是:【16】 #include char *ss(char *s) { return s+strlen(s)/2;} main( ) { char *p,*str=”abcdefgh”; p=ss(str); printf(“%s ”,p); } (16) 下面程序的运行结果是:【17】 int f( int a[], int n) { if(n>1) return a[0]+f(&a[1],n-1); else return a[0]; } main ( ) { int aa[3]={1,2,3},s; s=f(&aa[0],3); printf(“%d ”,s); } (17) 以下程序中给指针p分配三个double型动态内存单元,请填空。 # include main ( ) { double *p; p=(double *) malloc(【18】); p[0]=1.5;p[1]=2.5;p[2]=3.5; printf(“%f%f%f ”,p[0],p[1],p[2]); } (18) 以下程序的运行结果是【19】 # include typedef struct student{ char name[10]; long sno; float score; }stu; main( ) { stu a={“zhangsan”,2001,95},b={“shangxian”,2002,90},c={“anhua”,2003,95},d,*p=&d; d=a; if(strcmp(a.name,b.name)>0) d=b; if(strcmp(c.name,d.name)>0) d=c; printf(“%ld%s ”,d.sno,p->name); } 19、以下sum函数的功能是计算下列级数之和。 s=1+x+x2/2!+x3/3!+........+xn/n! 请给函数中的各变量正确赋初值。 doublesum( doublex, intn ) {inti;doublea,b,s; 【20】 for( i=1;i<=n;i++) { a=a*x; b=b*i; s=s+a/b; } return s; 【上海计算机二级c语言】推荐阅读: 计算机二级C语言上机题型总结06-22 2016年下半年上海农村信用社招聘:笔试计算机试题09-25 上海2018年C类安全员考试题08-14 计算机二级access试题08-09 计算机二级模拟试题答案06-23 2018年上海建筑施工C类安全员模拟试题07-10 计算机专业c语言实训报告09-18 计算机二级OFFICEMS习题及答案06-17 计算机二级考试培训策划书09-23 各种计算机语言的选择10-034.计算机二级C语言考前测试题 篇四
5.上海计算机二级c语言 篇五
6.上海计算机二级c语言 篇六
7.上海计算机二级c语言 篇七
8.计算机二级C语言考试必看技巧 篇八
9.探析计算机中C语言的运用 篇九
10.上海计算机二级c语言 篇十
11.上海计算机二级c语言 篇十一