计算机三级网络技术上机易错题.docx
fabs()取绝对值 sqrt()平方根 (int)xxi强制转换为整型strrev(xxi);字符串逆转unsigned int temp;无符号整型变量if(isalpha(xxij)是字母检查 () i, j =与= +=与= 作为返回值 return |与&&<str-1与<str.!是谁的值赋给谁temp=xxi0不要弄反了。销售PRO temp;float double Data ch;(ai.x1 ai.x2 ai.x3)0. fscanf(fp,”%d,”&xxij);fscanf(fp,”n”);if(feof(fp) break;1. for(i=0;i<MAX;i+) totfc+=(xxi-aver)*(xxi-aver)/MAX;求方差2. countValue(int *a,int *n) int i; *n=0; *n=*n+1;*a=i;a+; (或者这样些*a+=i)3. for(j=0;j<strlen(xxi);j+)还有就是0不要写成O了for(i=800;i>500;i-) for(j=2;j<i;j+) if(i%j=0)break;if(j=i) cnt+; 不是i%2奥%2是计算偶数 i%j是计算素数划线部分是一个循环 循环完成后j+,j=800;j=i(800)不符合j<i跳出循环,cnt+ if(cnt%2=1) sum+=i; else sum-=i; 注意1个数 +第二个-下标为奇数排序for(j=1;j<(strlen(xxi)-2);j=j+2)for(k=j+2;k<strlen(xxi);k=k+2)左for(j=0;j<str/2-1;j+)for(k=j+1;k<str/2;k+)右for(j=(str+1)/2;j<str-1;j+) for(k=j+1;k<str;k+)交for(j=0;j<strlen(xxi)/2;j+) /*左右 交换字符 */ k=j+(strlen(xxi)+1)/2;选票问题int i,j;int cnt; for(i=0;i<100;i+) cnt=0;for(j=0;j<10;j+) if(xxij='1') cnt+; if(cnt=0|cnt=10) continue;for(j=0;j<10;j+) if(xxij='1') yyj+;(注意0和10没有引号只有1有)/break语句:可以强制退出循环,然后继续执行循环体外的语句。 /continue语句:执行到循环体的某处就不再执行后面语句了,跳到循环的开始继续执行。 if(xxij='a') xxij='z' 前面是等号,后面是赋值。void chg(char *s) for(i=0;i<strlen(s);i+) if(*(s+i)>='a'&&*(s+i)<'z'|*(s+i)>='A'&&*(s+i)<'Z') *(s+i)=*(s+i)+1; else if(*(s+i)='Z') *(s+i)='A' else if(*(s+i)='z')*(s+i)='a'strrev(xxi);(用在fori内,temp=xxi0在for(i)内for(j)外)1. 注意括号!xxij=(xxij>>4)+xxij-1 ci = (ai<<8) + bi; 2. 排序后左边部分与右边部分进行交换。如果原字符串长度为奇数,则最中间的字符不参加处理(for(j=0;j<str/2;j+) k=(j+(str+1)/2))for(j=0;j<strlen(xxi)/2;j+) /* 交换字符 */ k=j+(strlen(xxi)+1)/2; 两个括号都要! temp=xxij; xxij=xxik; xxik=temp; 3.for for if if for if xx int i,j,cnt; /* 定义变量 */ for(i=0;i<100;i+) /* 逐张处理选票 */ cnt=0; for(j=0;j<10;j+) /* 统计选中人数 */ if(xxij= ='1') 注意双等号,不是赋值符号 cnt+; if(cnt>5) /* 判断条件 */大于5时为无效选票 continue; for(j=0;j<10;j+) /* 统计得票 */ if(xxij= ='1') yyj+; 4. bcnt=ai; cnt+; 是cnt不是I bcnt+=ai注意+5. for(i=5;i<MAX;i+) 注意:是大于前5个还是后5个 if(ai%2=1&&ai%7=0&&ai>ai-1 /* 判断条件 */ &&ai>ai-2&&ai>ai-3&&ai>ai-4&&ai>ai-5) 注意:不是ai>ai-1>ai-16. bbi与bi;7. ab=(a2*1000+b2*100+b1*10+a1); 注意a2,a1,b2,b1; if(ai%2=1&&bi%2=1)数组a和b中相同下标位置的数均是奇数8. PRO temp; if(strcmp(selli.mc,sellj.mc)<0 |strcmp(selli.mc,sellj.mc)=0&&selli.je>sellj.je) 注意括号的对数。 Outdate里面 名称从大到小e d c a 金额在最后一行9.求偶数的方差for(i=0;i<MAX;i+)if(xxi%2=0) totfc+=(xxi-ave2)*(xxi-ave2)/even;10. int isP(int m)判断素数 int i; for(i=2;i<m;i+) if(m%i=0) return 0; return 1;11. for(i=0;i<cnt-1;i+) for(j=i+1;j<cnt;j+) i,j要分清12. if(isP(ai) bcnt+=ai; 如果该数为素数,则将该数存入数组b中并统计满足条件的数的个数。13. if(a1+a2+a3+a4)%2=1) totCnt+; totPjz+=xxi; totPjz/=totCnt;14. return cnt; 函数返回值放在最后,不能放在中间,放在中间,函数已经得到结果,后面的的就不用计算了。15. if(aai.x1>(aai.x2+aai.x3) bbcnt+=aai;if(bbi.x1+bbi.x3)>(bbj.x1+bbj.x3)16. if(a4+a2=a3+a1&&ai%2=0) 双等号,记住17. int jsValue(long m) 回文数 long i,n; /* 定义变量 */ i=m;n=0; /* 初始化变量 */ while(i) /* 逐次把m最低位的数字拼接到n最低位 */ n=n*10+i%10; i/=10; return m=n; /* 判断是否对称 */18. 出圈void Josegh(void) int i,j,s1,w;s1=s;for(i=1; i<=n; i+)pi-1=i;for(i=n; i>=2; i-) s1=(s1+m-1)%i; if(s1= =0) s1=i; w=ps1-1; for(j=s1; j<i; j+) pj-1=pj; pi-1=w; 19. void encryptChar() int i,j; unsigned char ch; for(i=0;i<maxline;i+) for(j=0;j<80;j+) ch=xxij*11%256; if(ch<=32|ch>130) continue; else xxij=ch; int i,j; for(i=0;i<maxline;i+) for(j=0;j<strlen(xxi);j+) if(xxij*11%256<=32|xxij*11%256>130) continue; else xxij=xxij*11%256;int i,j,k; / unsigned char ch;20.void encryptChar() int i,k,ch; for(i=0;i<maxline;i+) for(k=0;k<strlen(xxi);k+) ch=xxik; ch=(ch*11)%256; if(!(ch<=32|ch>=130)xxik=ch; (中间变量一定要定义成int型或unsigned char不能用char)21. int i; int cnt; double s=0.0;for(i=1;i<n;i+)if(i%3=0&&i%7=0)s+=i; cnt+;s=sqrt(s);return s;注意s为返回值;注意sqrt求平方根,注意double s=0.0必须要定义成0.0 float x0;float x1=0.0; dox0=x1;x1=(float)cos(x0);while(fabs(x0-x1)>0.); (绝对值 do while型还有分号)return x1;数列int a0=0;int a1=1;int an;do an=a0+a1;a0=a1;a1=an;while(an<t);return an; float x0,x1=0.0; /*定义两个浮点型变量进行迭代*/while(1) /*无条件循环*/x0=x1; /*将x1赋值给x0*/ x1=cos(x0); /*求出新的x1*/if(fabs(x0-x1)<0.) break; /*若x0-x1的绝对值小于0.,则结束循环*/return x1; /*返回 x1的值*/22. pj=(float)(pj*100/k)/100; float pj; pj=0.0;保留两位小数,pj/=k.23. int i; for(i=0;i<N;i+) aver+=xxi; sumint+=(int)xxi; sumdec+=(xxi-(int)xxi); aver/=N;q 强制类型转换 (int)xxi括号括起来的是int24. 0.0 是一个 double 类型;0.0f 是一个 float 型;0 是一个 int 型;0u 是一个 unsigned int 型.25. for(i=0;i<100;i+) /*依次读取整型数据放入数组xx中*/ for(j=0;j<10;j+) fscanf(fp,"%d,",&xxi*10+j);fscanf(fp,"n");if(feof(fp) break; /*文件读取结束,则退出*/ %d,后的第一个逗号,就是在控制台上输出逗号啊,不加的话,就是没有输出逗号咯26. void countValue(int *a,int *n)int i; *n=0;for(i=1;i<=1000;i+)if(i%7=0&&i%11!=0)|(i%7!=0&&i%11=0) *n=*n+1;*a=i;a+; 或者写成(*n=*n+1;*a+=i)必须初始化*n计数器27. 800与500之间的素数个数void countValue()int i,j;for(i=800;i>500;i-) for(j=2;j<i;j+) if(i%j=0) break;if(j=i) cnt+; if(cnt%2=1) sum+=i; else sum-=i; void num(int m,int k,int xx)int i; int cnt=0; while(cnt<k) m+;if(isP(m)xxcnt+=m; 是m不是别的 m+记住要有。52.函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrOL(),其函数的功能是:以行为单位对行中以空格或标点符号为分隔的所有单词进行倒排。最后把已处理的字符串(应不含标点符号)仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT6.DAT中。原文:You He Me结果:Me He You void StrOL(void) int i,j,m; char str80; for(i=0;i<maxline;i+) m=strlen(xxi); memset(str,0,80); for(j=m-1;j>=0;j-) if(!isalpha(xxij) strcat(str,xxi+j+1); strcat(str," "); xxij='0' strcat(str,xxi); strcpy(xxi,str); 51.函数ReadDat( )实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中;请编制函数StrOR( ),其函数的功能是:以行为单位依次把字符串中所有小写字母o左边的字符串内容移到该串的右边存放,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边存放,之后把已处理的字符串仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat()把结果xx输出到文件OUT5.DAT中.you have the correct record.rd. yu have the crrect rec int i,j; /* 定义变量 */ for(i=0;i<maxline;i+) for(j=0;j<80;j+) if(xxij='o') /* 判断处理 */ change(xxi,j); j=-1; /* 循环复位 */ void StrOR(void) int i, j; char yy80, *p; for(i=0; i<maxline; i+) for(j=0; j<strlen(xxi); j+) if(xxij='o') memset( yy, 0, 80 ); p=&xxij+1; strcpy( yy, p ); /*将指针p所指向的字符串拷贝到字符串yy中去*/ strncat( yy, xxi, j ); /*将字符串xxi中前j个字符连接到yy中*/ strcpy( xxi, yy ); /*将字符串yy重新拷贝到字符串xxi中去*/ j=0; /* 开始下一次的扫描*/ 第12题编写一个函数findstr(),该函数统计一个长度为2的子字符串在另一个字符串中出现的次数。例如:假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值为6。int findStr(char *str,char *substr) int i,cnt=0; /* 定义变量 */ for(i=0;i<80;i+) /* 统计次数 */ if(*(str+i)=*substr&&*(str+i+1)=*(substr+1) /* 判断条件 */ cnt+; return cnt;请编制函数ReadDat()实现从文件IN.DAT中读取1000个十进制整数到数组xx中int ReadDat(void) FILE *fp; if(fp=fopen("IN.DAT","r")=NULL) return 1; for(i=0;i<100;i+) for(j=0;j<10;j+) fscanf(fp,"%d,",&xxi*10+j); fscanf(fp,"n");if(feof(fp) break; fclose(fp); return 0;