首页 计算机三级网络技术机试超级讲义

计算机三级网络技术机试超级讲义

举报
开通vip

计算机三级网络技术机试超级讲义很多没接触过C语言的朋友,考三级最感到就是怕C语言学不来 计算机三级网络技术机试超级讲义 三级C上机的考试概括:一道编程题,不是完整的编程,完成一段函数 如何顺利通过考试: 熟悉上机环境,考试过程中不要在此浪费时间和精力 掌握一些C编程的基本知识 看好南开100题的各种题型的解法 多上机独立练习。 掌握题库题目分类规律,考试题型有限,只是少数考题条件略改,比如原题中是“从大到小”排序,考题也许改成“从小到大”排序;排序关键字变化等,因此读透题目的基础上在作题,不因马虎而作错题目。 考试过程中,认真审题最关键,看到自...

计算机三级网络技术机试超级讲义
很多没接触过C语言的朋友,考三级最感到就是怕C语言学不来 计算机三级网络技术机试超级讲义 三级C上机的考试概括:一道编程题,不是完整的编程,完成一段函数 如何顺利通过考试: 熟悉上机环境,考试过程中不要在此浪费时间和精力 掌握一些C编程的基本知识 看好南开100题的各种题型的解法 多上机独立练习。 掌握题库题目分类规律,考试题型有限,只是少数考题条件略改,比如原题中是“从大到小”排序,考题也许改成“从小到大”排序;排序关键字变化等,因此读透题目的基础上在作题,不因马虎而作错题目。 考试过程中,认真审题最关键,看到自己熟悉的简单题目、复杂题目考试之前分别对待,考试过程中保持冷静,不慌张,见易题步盲目欢喜,见难题不乱阵脚。 C编程的基本知识   《C程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 》的内容很丰富,按照考试要求,100题解法中主要涉及到的是基础知识、四种结构的的程序设计、函数与数组的应用和算法,在学习时,应该把主要精力放在这些部分,其它的知识,如输入输出的语句、文件的读写、指针的定义等,源程序已经给出(只要能读懂即可)。. 一、快速掌握C语言的语法忠告 强化学习,加上机练习。在写程序上经常忘记C语言中的分号、小括号、大括号的运用,一开始就要养成良好习惯和细心。特别注意的是为什么说上机练习很重要,原因就是在纸上写的,语法错了不知道,而上机错了就显示。 二、C语言的运算符和运算顺序 这是学好《C程序设计》的基础,C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算使表达式更为简单。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf 十分重要。 考试中常用的运算符: 1.算术运算符 包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(++)、自减(--) 2.关系运算符 用于比较运算。包括大于(>)、小于(<)、等于(==)、 大于等于(>=)、小于等于(<=)和不等于(!=) 3.逻辑运算符 用于逻辑运算。包括与(&&)、或(||)、非(!) 4.位操作运算符 左移(<<)、右移(>>) 5.赋值运算符 用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=) 6.指针运算符 用于取内容(*)和取地址(&)二种运算。 7.特殊运算符  有括号(),成员(.)等几种。 先要明确运算符按优先级不同分类,下面我们通过几个例子来说明: (1) 5*8/4%10 这个表达式中出现3种运算符,是同级运算符,运算顺序按从左至右结合,因此先计算5 *8=40,然后被4除,结果为10,最后是%(求余数)运算,所以表达式的最终结果为10%10 = 0;   (2)a = 3;b = 5;c =++ a* b ;d =a + +* b;   (3)(a = 3,b = 5,b+ = a,c = b* 5)  三、学好数据类型定义 常见的数据类型: (1)基本数据类型:整型、长整型、字符型、无符号型(unsigned char)、实数型float、double int 整数-32768~32767 ;char 字符 单引号,数字串问题,转义字符: \n ; double、float都是浮点型,double(双精度型)比float(单精度型)存的数据更准确些,占的空间也更大,int是整型,long是长整型,long的范围比int大 注意:允许字符变量参与数值运算,即用字符的ASCII 码参与运算。由于大小写字母的ASCII 码相差32,因此运算后把小写字母换成大写字母。然后分别以整型和字符型输出。 (2)指针类型: 定义方式: 类型说明符 *变量名; int *p; char *p; 赋值方法:int a; int *p=&a; 或者 int a;int *p; p=&a; 注意:不允许把一个数赋予指针变量,错误形式: int *p;p=1000; 被赋值的指针变量前不能再加“*”说明符,如写为*p=&a 错误 指针变量的运算: 取地址运算符& 取内容运算符* 注意:指针运算符*和指针变量说明中的指针说明符* 不是一回事。在指针变量说明中,“*”是类型说明符,表示其后的变量是指针类型。 而表达式中出现的“*”则是一个运算符用以表示指针变量所指的变量。 例如: main() {  int a=5,*p=&a;  printf ("%d",*p); } int a,*pa=&a,*pb; pb=pa; /*把a的地址赋予指针变量pb*/ int a[5],*pa; pa=a; (数组名表示数组的首地址,故可赋予指向数组的指针变量pa) 也可写为: pa=&a[0]; /*数组第一个元素的地址也是整个数组的首地址, 也可采取初始化赋值的方法: int a[5],*pa=a; 指针变量的加减算术运算:(主要针对数组变量的操作) 对于指向数组的指针变量,可以加上或减去一个整数n。设pa是指向数组a的指针变量,则pa+n,pa-n,pa++,++pa,pa--,--pa 指针变量加或减一个整数n的意义是把指针指向的当前位置(指向某数组元素)向前或向后移动n个位置。 注意,数组指针变量向前或向后移动一个位置和地址加1或减1 在概念上是不同的。因为数组可以有不同的类型 各种类型的数组元素所占的字节长度是不同的。如指针变量加1,即向后移动1 个位置表示指针变量指向下一个数据元素的首地址。 而不是在原地址基础上加1。 例如:int a[5],*pa; pa=a; pa指向数组a,也是指向a[0] pa=pa+2; pa指向a[2],即pa的值为&pa[2]指针变量的加减运算只能对数组指针变量进行,对指向其它类型变量的指针变量作加减运算是毫无意义。 两个指针变量之间的运算只有指向同一数组的两个指针变量之间才能进行运算, 否则运算无意义。 数组之间的关系运算: pf1==pf2表示pf1和pf2指向同一数组元素 pf1>pf2表示pf1处于高地址位置 pf1=7) B=a; 分支体可以是一条语句,此时“{ }”可以省略   它有两条分支路径可选,一是当条件为真,执行分支体,否则跳过分支体,这时分支体就不会执行。   ②if(条件)   {分支1}   else   {分支2}   这是典型的分支结构,如果条件成立,执行分支1,否则执行分支2,分支1和分支2都可以是1条或若干条语句构成。      ③嵌套分支语句:其语句格式为:   if(条件1) {分支1}; else if(条件2) {分支2}    else if(条件3) {分支3}    ……    else if(条件n) {分支n}    else {分支n+1} 3、循环结构: 循环结构可以减少源程序重复 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do –while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,在学习中我们主要学习while、do…while、for三种循环。常用的三种循环结构学习的重点在于弄清它们相同与不同之处,以便在不同场合下使用,这就要清楚三种循环的格式和执行顺序,将每种循环的流程图理解透彻后就会明白如何替换使用,如把while循环的例题,用for语句重新编写一个程序,这样能更好地理解它们的作用。特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。 do{ } while(条件表达式) ; while (条件表达式) { } ; 其中条件表达式:(若为真(或非0)则继续循环) for(表达式1;表达式2;表达3) {   语句: }   表达式1 通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。   表达式2 通常是循环条件,一般为关系表达式或逻辑表达式。   表达式3 通常可用来修改循环变量的值,一般是赋值语句。   注意 :这三个表达式都可以是逗号表达式, 即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。 3、转移语句 break, continue和return。 break 跳出本层循环,转去执行后面的程序 continue 结束本次循环,即不再执行循环体中continue 语句之后的语句,转入下一次循环条件的判断与执行 注意: 本语句只结束本层本次的循环,并不跳出循环。 void main() { int n=7; do {  if (n%7!=0) continue;   printf("%d ",n); n++; }  While(n<=100) } void main() {  int n;  for(n=7;n<=100;n++)  {   if (n%7!=0)    continue;   printf("%d ",n);  } } void main(){  int n,i;  for(n=2;n<=100;n++){   for(i=2;i=n) printf("\t%d",n);   }  }   注意它们的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while 循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while 循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环。   顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构。   4、模块化程序结构 C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。 因些,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。 注意:上机考试要求考生只对某个子函数作答 注意: 模块化程序中的全局变量与局部变量 简单记忆方法:主函数中定义的变量为全局变量,适用于任何子函数,而在子函数中定义的变量为局部变量,适用范围只是本函数。 #include #include void readwriteDat(); int isP(int m) { int i; for(i=2;i0;m++) if(isP(m)) { xx[s++]=m; k--;} } main() { int m,n,xx[1000]; clrscr(); printf("\nPlease enter two integers:"); scanf("%d%d",&m,&n); num(m,n,xx); for(m=0;m #include #include double countValue(int n) { int i; double s=0.0; for(i=1;ia[j]) 此处不能丢掉小括号 考试当中主要考试此处的判断条件    { temp=a;    a=a[j]; a[j]=temp; } 重点提示: 题库中几乎80%以上题目都用到以上方法,大家必须明白其原理,并熟练掌握。 特别提示:该题型请注意在冒泡排序过程中变量的使用。考试过程中常常出现以下画面,就是由于变量之间使用混淆所造成。 例如:考试中典型的数字排序问题 在文件in.dat中有200个正整数,且每个数均在1000至9999之间。函数ReadDat()读取这200个数存放到数组aa中。请编制函数jsSort(),其函数的功能是:要求按每个数的后三位的大小进行降序排列,然后取出满足此条件的前10个数依次存入数组b中,如果后三位的数值相等,则按原先的数值进行升序排列。最后调用函数WriteDat()把结果bb输出到文件out.dat中。 例:处理前 9012 5099 6012 7025 8088 处理后 5099 8088 7025 6012 9012 注意:部分源程序已给出。   请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include #include #include int aa[200],bb[10]; void jsSort() { int i,j,data; for(i=0;i<199;i++) for(j=i+1;j<200;j++) if(aa[i]%1000aa[j]) {data=aa[i];aa[i]=aa[j];aa[j]=data;} for(i=0;i<10;i++) bb[i]=aa[i]; } void main() { readDat(); jsSort(); writeDat(); system("pause"); } readDat() { FILE *in; int i; in=fopen("in.dat","r"); for(i=0; i<200; i++) fscanf(in,"%d,",&aa[i]); fclose(in); } writeDat() { FILE *out; int i; clrscr(); out=fopen("out.dat","w"); for(i=0; i<10; i++){ printf("i=%d,%d\n",i+1,bb[i]); fprintf(out,"%d\n",bb[i]); } fclose(out); } 典型的商品排序问题 补充: 考试中出现频率较高的函数 1、strlen(string) 求字符串长度 strlen(‘abdcd’) 返回值为 5 2、strcmp(string1,string2) 比较两个字符串大小 返回值大于零 string1>string2 3、sqrt 求double类型数值的平方根函数    已知在文件IN.DAT中存有100个产品销售 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 ,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按产品代码从大到小进行排列,若产品代码相同,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT6.DAT中。 部分源程序存在文件prog1.c中。   请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include #include #include #include #include #define MAX 100 typedef struct{ char dm[5]; /*产品代码*/ char mc[11]; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*金额*/ }PRO; PRO sell[MAX]; void ReadDat(); void WriteDat(); void SortDat() {int i,j; PRO xy; 上边这些是定义了一个结构体,名字为PRO 定义了一个PRO的数组xy 注意大写PRO for(i=0;i<99;i++) for(j=i+1;j<100;j++) if(strcmp(sell[i].dm,sell[j].dm)<0||strcmp(sell[i].dm,sell[j].dm)==0&&sell[i].je #include #include #include unsigned char xx[50][80]; int maxline=0;/*文章的总行数*/ int ReadDat(void); void WriteDat(void); void encryptChar() { int i,j; for(i=0;i130) continue; else xx[i][j]=xx[i][j]*11%256; } void main() { clrscr(); if(ReadDat()){ printf("数据文件ENG.IN不能打开!\n\007"); return; } encryptChar(); WriteDat(); } int ReadDat(void) { FILE *fp; int i=0; unsigned char *p; if((fp=fopen("eng.in","r"))==NULL) return 1; while(fgets(xx[i],80,fp)!=NULL){ p=strchr(xx[i],'\n'); if(p)*p=0; i++; } maxline=i; fclose(fp); return 0; } void WriteDat(void) { FILE *fp; int i; fp=fopen("ps1.dat","w"); for(i=0;i130) continue; else xx[i][j]=ch; } } 题库中典型的素数判断问题 int i,j,sum; for(i=100;i<=800;i++) { for(j=2;j0) /*此处一定先设定该条件*/ { totNum++; data=xx[i]>>1; /*此处一定记住右移符号>>*/ if(data%2==0) {totCnt++; totPjz+=xx[i]; } } totPjz/=totCnt; /*此处一定在循环体外边*/ 考试过程中同学容易出现错误形式: int i,data; for(i=0;i<200;i++) { if(xx[i]>0) { totNum++; data=xx[i]>>1; } if(data%2==0) { totCnt++; totPjz+=xx[i]; } } totPjz/=totCnt; 同学分析以上内容为什么出错 88、 int i,j,cnt=0,bw,sw,gw; for(i=100;i<=999;i++) { bw=i/100;sw=i%100/10;gw=i%10; for(j=10;j*j<=i;j++) if(i==j*j&&(bw==sw||sw==gw||gw==bw)) bb[cnt++]=i; } return cnt; /*此处一定返回cnt*/ ↓数字题目类型2---------------------------------------------------------------------- 25 qw=a[i]/1000; bw=a[i]%1000/100; sw=a[i]%100/10; gw=a[i]%10; ab=10*qw+gw; cd=10*bw+sw; if(ab%2!=0&&cd%2!=0&&(ab%5==0||cd%5==0)&&qw!=0&&bw!=0) b[cnt++]=a[i]; } for(i=0;ib[j]) {data=b[i]; b[i]=b[j]; b[j]=data; } 36: int i,j,tag; for(i=0;ia[j]) break; if(j==i+6) /*注意应该是i+6不是i+5*/ b[cnt++]=a[i]; } } for(i=0;ib[j]) { tag=b[i]; b[i]=b[j]; b[j]=tag; } 37: int i,j,tag; for(i=5;i500;i--) { for(j=2;j0;m++) { /*注意此处的大括号不能丢掉 */ for(i=2;i=m) { xx[s++]=m; k--; } } ↓其他数字题目类型---------------------------------------------------------------------- 69: int i,j,data; for(i=0;i<199;i++) for(j=i+1;j<200;j++) if(aa[i]%1000>aa[j]%1000||aa[i]%1000==aa[j]%1000&&aa[i]=half) return 1; else return 0; 94,95,96,97,98,99,100:统计问题 (注意此类题目的变量需要赋初值,自动保留小数两位)其中100题目注意取某个数字的整数部分方法:(long)xx[i];(int)xx[i] -------------------------------------------------------------------------------------------------------- 数字题目应对考试 总结 初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf : 考试过程中,由于此类题目在题库中占得比列比较大(约占1/3),但基本通过变换“条件”来改变题目,因此抽题后第一件事至关重要:仔细审题 仔细审题目中要求的条件。 此类题目解题方法雷同,根据审明的题干中的条件,确定好if判断语句中的条件表达式 2,36,37,38三题目相对难度大一些,可以把37,38归成一类;2,36为一类;这三个题目一定要在理解的基础上重点掌握。 11题目比较特殊,请特别对待。 忠告:做完题目后,调试没有错误运行通过后,最好自己针对自己的题目检查一下结果的正确性。检查方法:…………………… *************************************************************************** 第二部分 商品排序问题 抽中率在10%左右 商品记录排序问题考试形式比较单一,题库中所占比例1/10左右,题目主要考察strcmp函数的应用和结构体,结构数组,字符比较函数应用,冒泡排序法的应用,相对来讲比较容易复习题目类型。 该类型题目,大家熟练掌握。 3、41-49: int i,j; PRO data; 此处注意PRO的大小写 for(i=0;i=0;k--,j--) //注意此处j条件不能为j>0 { tmp=xx[i][j]; xx[i][j]=xx[i][k]; xx[i][k]=tmp; } 下面题目是以上前两点在题目中的运用: 4、 int i,j,len; for(i=0;i130) continue; /*注意此处没有使用中间变量*/ else xx[i][j]=xx[i][j]*11%256; } } 5、 int i,j,len; for(i=0;i='a'&&xx[i][j]<='z') /*小写字符表示方法*/ if(xx[i][j]=='z') xx[i][j]='a'; else xx[i][j]+=1; /*注意下一个字符表示方法*/ } 50-58:字符替换题目 50 int i,j,len; char ch; for(i=0;i='0'&&ch<='9'||ch<=32) continue; else xx[i][j]=ch; } } 59 题目5的简单条件变化 ★ 60:有关字符指针操作 while(*s) { if(*s=='z'||*s=='Z') { *s-=25; s++; } else if(*s>='a'&&*s<'z') { *s+=1; s++; } else if(*s>='A'&&*s<'Z') { *s+=1; s++; } Else /*此处else不能丢掉*/ s++; /*此处指针下移不能丢到*/ } 另外一种做法:如果指针不熟悉的同学,可以采用这种方法 int i; for(i=0;i='A') s[i]+=1; else if(s[i]<'z'&&s[i]>='a') s[i]+=1; 上题请大家如何合并判断字母条件,简化嵌套层次 ↓字符处理问题形式2 排序-------------------------------------------------------- 7 int i,j,k,len; char tmp; for(i=0;i='a'&&xx[i][j]<='z'||xx[i][j]>='A'&&xx[i][j]<='Z') /*注意此题不用此行条件,大家注意此条件的意义*/ if(xx[i][j]
本文档为【计算机三级网络技术机试超级讲义】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_170697
暂无简介~
格式:doc
大小:272KB
软件:Word
页数:24
分类:计算机考试
上传时间:2011-02-28
浏览量:12