您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 5-计算机等级C语言上机考试编程题分类总结
错误!未指定书签。第1页共22页计算机等级C语言上机考试编程题分类总结编程题目分类:(一)、数学题目:5、6、11、14、34、48、49编程的题目中,如果是数学题目,编程时用到阶乘或者是奇数项的积,则首先给变量赋初值为1,不能赋初值为0,同时把变量的类型定义为实型而不是整型。数学题目中结果都需要返回,如果说函数的类型是void则是通过指针返回,如果不是void,则必须用return返回。如果是表达式中的值为1,则在编写程序时用去1.0.而不能用1。C语言中的除法的运算原则是整数除以整数,结果还是整数。数组中存储数据时以下标来存储的,在数组中下标从0开始。解题详解:6、观察表达式,左边求出的是p的值的一半,所以右边的表达式的值的计算好后应该乘以2才能得到p的值,观察表达式的右边,右边表达式中有分子、分母以及各表达式的值的和,分子是阶乘、分母是奇数项的积,分子除以分母得到一项的值。由此定义三个变量:s1代表分子,s2代表分母、s3代表各项的和,定义一个整型变量i,让变量i从1开始。知道循环的结束。inti;doubles1=1.0,s2=1.0,s3=0.0;for(i=1;s1/s2=eps;i++){s3+=s1/s2;s1*=i;s2*=(2*i+1);}return2*s3;注意:此题目中要特别注意,循环语句的表达式2的判断条件是s1/s2=eps,而不是i=n,循环语句的语句的顺寻不能颠倒,即先加之后再计算。11、此题中要求能整除x,那么x应该为分子,而不是分母,把满足条件的数组放到pp所指的数组中,即pp数组应用一个整型的变量来做pp下标,数组下标从0开始,所以定义一个整形变量k并且赋初值为0;满足条件的个数通过形参传回。inti,k=0;for(i=1;i=x;i++)if(x%i==0&&i%2==1)pp[k++]=i;*n=k;错误!未指定书签。第2页共22页备注:此题目中不能把i初值定义为0,否则程序运行时得不到结果。14、首先看清题意,题目中要求是小于形参n,不包括n,能被3与7整除,两者用逻辑与连接,平方根用平方根的函数sqrt;此题中要求的是自然数的和的平方根,而不是平方根的和,所以要先把满足条件的数加起来后再开方。定义一个整型变量i,让该变量由1直到n-1,用循环实现,一个整形变量s,让该变量存放的是满足条件的数的和,由于s为全局变量,故应该赋初值为0;inti,s=0;for(i=1;in;i++)if(i%3==0&&i%7==0)s+=i;returnsqrt(s);34、观察表达式,表达式的分子为x的n次冥,分母为数字的阶乘,s为表达式的累加和,定义三个变量s1为分子,s2为分母,s为分子除以分母的和。floats1=1.0,s2=1.0,s=1.0;inti;for(i=1;i=n;i++){s1*=x;s2*=i;s+=s1/s2;}returns;备注:此时s的值不能赋初值为0;如果s得初值为0,此时表达式的值中没有第一项的值。并且必须用return返回。48、该表达式的分子均为1,分母为该项和下一项的积,s为最后表达式的累加和,定义一个整形变量I,用于代表某一项的序号,则i+1到表达的是下一项的序号。floats=0.0;inti;for(i=1;i=n;i++)s+=1.0/(i*(i+1));returns;备注:分子为1.0,而不能是1;因为c语言中规定,整型除以整型,得到的值仍然为整型,i+1必须错误!未指定书签。第3页共22页用括号括起来,如果没有用括号括起来,根据乘法运算规则,则先运算i*i,再运算i*i+1的值。49、在该表达式中,分子分母都是阶乘,可以看做是三个数之间的运算,其中的每一个数都是另外一个数的阶乘,定义三个变量,其中s1代表的是m的阶乘,s2代表的n的阶乘,s3代表的是m-n的阶乘,表达式的值可以计算为:s1/(s2*s3);三个变量都是代表的是阶乘,所以在赋初值时应该赋初值为1或者是1.0;floats1=1.0,s2=1.0,s3=1.0;inti;for(i=1;i=m;i++)s1*=i;for(i=1;i=n;i++)s2*=i;for(i=1;i=m-n;i++)s3*=i;returns1/(s2*s3);(二)、把满足条件的数放到数组中4、12、25、35、37在做该类题目时,看清题目的要求,根基题目的要求解题,若只是把满足条件的删除或者是保留,则该类题目首先要定义一个整型变量并且赋初值0,根据题目意思把满足条件的存放到数组中,数组的下标同时加一往后走一个位置,如果是字符串类型的题目,在最后还要加上字符串的结束符’\0’;如果是把字母的大小写进行改变,则根据原则:小写改大写,减32,大写改小写,加32.只要涉及到数组的题目,都要定义一个整型变量i访问数组中的元素.在循环语句中,如果是字符串时,循环的条件是判断字符是否是结束符,而不是i=n;判断一个字母是否是大写字母ss[i]=’A’&&ss[i]=’Z’判断是否是小写字母ss[i]=’a’&&ss[i]=’z’。判断一个字符是数字字符ss[i]=’0’&&ss[i]=’9’;4、定义一个整型变量i来访问字符数组中的元素。把小写字母改写成大写字母,只用把小字母的ASCII值减去32即可。inti;for(i=0;ss[i]!=’\0’;i++)if(i%2==1&&ss[i]=’a’&&ss[i]=’z’)ss[i]-=32代码中:i代表的是访问数组下标的变量。循环的条件是ss[i]!=’\0’,这事字符串是否结束的判断条件。从第一个字符开始,一直到遇到结束符为止。当取出一个字符后,对该字符进行判断,如果该字符满足条件的时候,执行ss[i]-=32;语句,即将小写字母改变成大写字母。12、先定义一个整型变量k,并且赋初值0,作为数组的下标,一个整型变量i用来访问数组中的元素的下标.错误!未指定书签。第4页共22页inti,k=0;for(i=0;s[i]!=’\0’;i++)if(!(i%2==0&&s[i]%2==1))t[k++]=s[i];备注:if条件中的内容是先将删除的写出来,再前面加上一个!,用来否定,则剩下的就是要保留的内容。把满足条件的存放到数组t中,t也是一个字符数组,所以要够成个字符串,必须在后面赋值结束符。(三)、素数20、21判断一个数是否是素数的方法很多,我们只用掌握一种即可,首先掌握判断一个素数的方法;素数的定义:1、是自然数2、只能被1和本身整除,2到本身减一之间的数不能整除该数。判断m是否为素数的格式:for(i=2;im;i++)if(m%i==0)break;if(m==i)表明m是素数;素数只能被1和m,那么用2到m-1之间的数除m,如果有一个数能整除m,说明m不是一个素数,就不用再判断后面的数值了,用一条break语句提前结束函数;如果一直都不能整除,则说明m是一个素数。那么用循环语句表示2到m-1之间的数的语句为:for(i=2;im;i++),如果在这个范围内的数值有一个数值能整除m,说明m不是一个素数,则可以提前结束循环,break;那么结束之后这个循环中的变量I的值小于m,如果m是一个素数的时候,则一直都不执行break语句;则循环语句结束的时候是在i==m的时候退出循环。结束循环以后,进行i和m的比较,如果i小于m,则表明m不是一个素数;如果i等于m,则表明m是一个素数。20、把素数存放到数组中,先定义一个整型变量k,并且赋值为0,小于或者等于lim的条件为:for(m=2;m=lim;m++)所以代码为:intm,k=0,i;for(m=2;m=lim;m++){for(i=2;im;i++)if(m%i==0)break;if(m==i)aa[k++]=m;}returnk;错误!未指定书签。第5页共22页21、大于m的整数,m+1就大于m,,找k个素数,那么循环的条件找到k个为止,用j代表找到素数的个数,则程序的代码:inti,j=1;for(m=m+1;j=k;m++){for(i=2;im;i++)if(m%i==0)break;if(m==i)xx[j++]=m;}(四)、星号题目的解答方法:8、9、10、19、45该类题目的解答方法是用简便方法。具体步骤如下:以第8题为例。1、单击上面的答题按钮。错误!未指定书签。第6页共22页2、启动好了visualc++3、单击“文件”菜单下面的“打开”错误!未指定书签。第7页共22页4、找到“prog1.c”,双击打开:5、不编写任何程序代码,直接编译程序,编译程序时错误!未指定书签。第8页共22页6、编译好程序之后直接连接程序:7、运行程序出现运行窗口,运行程序以后输入如果说窗口中没有出现“pressanykeytocontinue”的文字提示时,随便键入就可以了,之后按回车键结束。错误!未指定书签。第9页共22页出现上面的窗口,再按回车键结束。8、单击“文件”中的“打开”错误!未指定书签。第10页共22页9、找到“out.dat”这一个文件双击打开“out.dat”文件将每一行中的内容根据题意进行修改。即将每一行中的星号,除了开始的外,其余的全部删除。得到的结果为:错误!未指定书签。第11页共22页10、单击“文件”菜单中的“保存”11、单击“文件”菜单下的“退出”回到了开始的界面,就可以交卷了。星号的其他题目也是一样的做法。错误!未指定书签。第12页共22页(五)、结构体类型2、3、16、23、33所有的结构体的类型的题目中都可以用简便方法进行解答,结构体的解答时要主要看程序中是否有nono()函数,如果有,要以该函数为准,如果没有该函数,则以main()函数为主。以第2题为例:观察程序代码中的内容:首先,该程序代码中没有nono()函数,那么就以main()函数为主。根据题意观察主函数中的内容,主要看主函数中的数据,也就是结构体中的数据。s[N]={{GA005,85},{GA003,76},{GA002,69},{GA004,85},{GA001,96},{GA007,72},{GA008,64},{GA006,87},{GA015,85},{GA013,94},{GA012,64},{GA014,91},{GA011,90},{GA017,64},{GA018,64},{GA016,72}};找到主函数中的fprintf函数的内容:求的就是80到98范围内的数据,满足的个数以及写到out.dat文件中。只用数就可以了。有8个,观察代码中的这些代码,记住这是排序的格式,如果是小于号,那么说明是降序排列,如果是大于号是升序排序。此题中是升序。观察后米的代码的内容,都是找到fprintf函数的内容:该函数的把排序后的内容写到out.dat文件中。还要注意的是%4d的功能,这是按照格式写到文件中,只是这个是后输入的数据占有4个宽度,并且是右对齐。最后写到out.dat文件中的内容应该是:错误!未指定书签。第13页共22页保存程序后退出程序即可。(六)、数值平移1、42数值平移的题目可以用简便方法解决,其步骤和上面所写的一样,只是在打开“out.dat”文件之后的操作有所不同,具体的为:以1题为例:打开了“out.dat”文件之后,打开的是“in.dat”文件。错误!未指定书签。第14页共22页在“in.dat”这个文件中,前面的数字代表的是平移的个数。根据题目要求,是把前面的字符平移到最后,在“out.dat”文件中进行修改,最后的结果为:单击“文件”菜单下面的“保存”,单击“文件”菜单下的“退出”。(七)、找出数组中的最大值或者最大值所在的下标18、29、36该类型题目可以用简便方法解决;解决此类题目时,首先要找到源程序中的以下内容,1、找到nono()函数,如果没有nono()函数,则找到主函数。2、找到fprintf函数。3、打开“in.dat”文件和“out.dat”文件。4、进行相应的修改之后,保存和退出。
本文标题:5-计算机等级C语言上机考试编程题分类总结
链接地址:https://www.777doc.com/doc-3296030 .html