1、sellj.je)3 i+) if (strcmp(selli.dm,sellj.dm)0) temp=selli; else if(strcmp(selli.dm,sellj.dm)=0) if(selli.je10 /*定义数据交换时的暂存变量*/i+) if (selli.jesellj.je) /*按金额从小到大进行排列*/ selli=sellj; else if (selli.je=sellj.je) /*若金额相同*/ if (strcmp(selli.dm,sellj.dm)0) /*则按产品代码从小到大进行排列*/ temp=selli; 14void jsValue() i
2、nt a1,a2,a3,a4; /*定义变量保存4位数的每位数字*/ int temp;300;i+) /*逐个取每一个4位数*/ a4=ai/1000; /*求4位数的千位数字*/ a3=ai%1000/100; /*求4位数的百位数字*/ a2=ai%100/10; /*求4位数的十位数字*/ a1=ai%10; /*求4位数的个位数字*/ if (a4+a3=a2+a1) /*如果千位数加百位数等于十位数加个位数*/ bcnt=ai; /*把满足条件的4位数依次存入数组b中*/ cnt+; /*计算满足条件的数的个数*/ cnt-1;i+) /*对数组b中的4位数按从大到小进行排序*/c
3、nt; if(bi0) /*如果个位数减千位数减百位数减十位数大于零*/ bcnt=ai; /*则将满足条件的数存入数组b中*/ /*统计满足条件的数的个数*/i+) /*对数组b的4位数按从大到小的顺序进行排序*/21void jsVal( )200; /*求4位数的千位数字*/ if (a4+a1=a3+a2) & a1%2=1) /*如果千位数加个位数等于百位数加十位数,并且此数是奇数*/i+) /*将数组b中的数按从小到大的顺序排列*/ if(bi28void jsVal() int ab,cd; /*存储重新组合成的2位数*/ a4=ai/1000; ab=10*a4+a1; /*把
4、千位数字和个位数字重新组成一个新的2位数*/ cd=10*a3+a2; /*把百位数字和十位数字组成另一个新的2位数*/ if (ab%2=1 & cd%2=1 & (ab%5=0 | cd%5=0)& a4!=0 & a3!=0) /*如果这两个2位数均是奇数并且两个2位数中至少有一个数能被5整除,同时两个新2位数的十位上的数字均不为零*/ /*则把满足条件的数存入数组b中*/ /*并统计满足条件的数的个数*/i+) /*将数组b中的数按从大到小的顺序排列*/38 for(i=5;MAX;i+) /*逐个取每个4位数*/ if(ai%2! ai%7=0) /*如果当前数是奇数且可以被7整除*
5、/ for(j=i-5;=i-1;j+) /*取该数前面的5个数进行比较*/ if(aiaaj%1000) /*按照每个数的后3位的大小进行升序排列*/ temp=aai; aai=aaj; aaj=temp; else if(aai%1000=aaj%1000) /*如果后3位数值相等*/ if(aaiaaj) /*则要按原4位数的值进行降序排列*/ temp=aai; aai=aaj; aaj=temp;10;i+) /*将排好序的前十个数存入数组bb中*/ bbi=aai;45int jsValue(int t) int f1=0,f2=1,fn; /*定义变量存储Fibonacci数,
6、初始化数列的前两项*/ fn=f1+f2; /*计算下一个Fibonacci数*/ while(fn=t) /*如果当前的Fibonacci数不大于t,则继续计算下一个Fibonacci数*/ f1=f2; f2=fn; fn=f1+f2; return fn; /*返回Fibonacci数列中大于t的最小的一个数*/50 int i,n=0; /*定义循环控制变量和计数器变量*/i+) /*逐个取4位数*/ if(isP(ai) /*如果该数为素数*/ pjz1+=ai; /*将满足条件的数求和*/ else pjz2+=ai; /*将不满足条件的数求和*/ n+; /*统计不满足条件的数的
7、个数*/ pjz1/=cnt; /*求满足条件的数的平均值*/ pjz2/=n; /*求不满足条件的数的平均值*/56void main() int cnt1,cnt2,xxN; float pj; FILE *fw; int i,k=0; long j=0; cnt1=0; cnt2=0; pj=0.0; system(CLS); fw=fopen(out.dat,w read_dat(xx);N; if(xxi%2) cnt1+; /*求出数组xx中奇数的个数cnt1*/ cnt2+; /*求出数组xx中偶数的个数cnt2*/ if(i%2=1) j+=xxi; /*求数组xx下标为奇数的
8、元素值的总和*/ k+; pj=(float)(j*100/k)/100; /*求数组xx下标为奇数的元素值的算术平均值pj*/ printf(nncnt1=%d,cnt2=%d,pj=%6.2fn,cnt1,cnt2,pj); fprintf(fw,%dn%dn%6.2fn fclose(fw);60:C语言中文件读函数,if条件判断结构,对多个整数求平均值和方差的算法等。int ReadDat(void) FILE *fp; int i,j; /*定义计数器变量*/ if(fp=fopen(IN.DATr)=NULL) return 1;i+) /*依次读取整型数据放入数组xx中*/ fo
9、r(j=0; fscanf(fp,%d,&xxi*10+j); fscanf(fp,n if(feof(fp) break; /*文件读取结束,则退出*/ fclose(fp); return 0;void Compute(void) int i; int ttMAX; /*定义数组保存奇数*/1000; if(xxi%2!=0) odd+; /*计算出xx中奇数的个数odd*/ ave1+=xxi; /*求奇数的和*/ ttodd-1=xxi; /*将奇数存入数组tt中*/ else even+; /*计算出xx中偶数的个数even*/ ave2+=xxi; /*求偶数的和*/ ave1/=
10、odd; /*求奇数的平均值*/ ave2/=even; /*求偶数的平均值*/ for(i=0;odd; totfc+=(tti-ave1)*(tti-ave1)/odd; /*求所有奇数的方差*/65 此题属于数学类问题。分析题干,本题存在2个关键点:关键点1如何通过条件同时能被3与7整除筛选出指定范围内满足条件的数;关键点2对所有满足条件的数计算出总和的平方根。本题的解题思路为:通过循环控制,依次判断小于等于n范围内的自然数是否满足关键点1中的条件。累加满足条件的数,并通过总和求出算术平方根,最后通过函数值返回。【参考答案】double countValue(int n) double
11、sum=0.0; /*存储满足条件的自然数之和,继而求出平方根*/ for(i=1;n;i+) /*求n以内(不包括n)同时能被3与7整除的所有自然数之和*/ if(i%3=0 & i%7=0) sum+=i; sum=sqrt(double)sum); /*再对总和求平方根*/ return sum;69【考点分析】本题考查对字符数组中字符的计算和替换。考查的知识点主要包括:字符串数组的访问,字符ASCII码的算术运算,if判断结构以及逻辑表达式。【解题思路】此题属于字符替代问题;分析题干要求,可以归纳出3个关键点:关键点1如何对字符数组的元素逐个访问;关键点2如何根据给出的函数替代关系f(
12、p)=p*11 mod 256对字符进行计算;关键点3根据条件(本题为原字符的ASCII值是偶数或计算后f(p)的值小于等于32)对计算结果进行判断,并分别对满足与不满足条件的情况进行处理。通过问题分析,得出解此题的思路为:首先通过字符串处理函数strlen获取字符串的长度,根据获得的长度使用下标法逐一对字符数组的元素进行访问;然后按照题目给出的函数关系式直接对字符进行算术运算;最后通过if判断结构和逻辑表达式判断计算结果是否满足条件,分别对两种情况进行处理。void encryptChar() int str; /*存储字符串的长度*/ char ch; /*存储当前取得的字符*/maxli
13、ne;i+) /*以行为单位获取字符*/ str=strlen(xxi); /*求得当前行的字符串长度*/ for(j=0;str;j+) /*依次取每行的所有字符*/ ch=xxij*11%256; if(xxij%2=0|ch=a & chz) | ch=32) /*如果计算后的值小于等于32或对应的字符是小写字母*/ /*否则用新字符来替代这个字符*/74本题属于字符串类题。要求对二维数组中的字符元素按行处理。首先用strlen()函数得到当前行所包含的字符个数。void encryptChar() j+) /*依次取每行的各个字符*/ ch=xxij*11%256; if(ch130)
14、 /*如果计算后的值小于等于32或大于130*/ else /*否则将所对应的字符进行替代*/78本题考查对字符串中字符的替换。指针对字符串元素的访问,C语言循环结构,if判断结构,逻辑表达式。【解题思路】此题属于字符替换题型;分析题干要求,可以归纳出2个关键点:关键点1用指针实现对字符串元素的逐一访问;关键点2根据要求把所有的小写字母改写成该字母的下一个字母对字符进行替换。接着分析具体的解决方法,首先通过指针的移动来实现对字符串的遍历,当指针指向位置的数值不为空,通过if判断结构和逻辑表达式来实现对所有字母的替换操作;其中对于字母z和Z,要分别将其替换成字母aA。void chg(char *s) while(*s) /*若当前字符不是字符串结束符,则循环一直进行*/ if(*s=|*s=Z) /*将当前字母是或者*/ *s-=25; /*则分别将其改成或A s+; /*取下一个字母*/ else if(*s *sy) /*若是小写字母,则改成该字母的下一个字母*/ *s+=1;Y) /*若是大写字母,则改成该字母的下一个字母*/ *
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1