欢迎来到天天文库
浏览记录
ID:21953598
大小:346.12 KB
页数:11页
时间:2018-10-25
《c语言二级编程题技巧总结》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、上机编程题总结一、编程题的基本算法1.求和问题。(1)(循环控制变量)计数器的范围。(2)和变量的初值~般为0。(3)如是分数求和,请注意整除问题。(4)在确保前三个条件的情况卜,按编程的思路,一步步完善。2.求乘积问题。(1)积变量(2)乘积表达式作分母的时候,是一个整体,请加拈号。3.找最大值、最小值问题。(1)首先将首元素(行首、列首等)的值赋给保存最大值(或最小值)的变量,如max(或min)(2)然G将max(或min)和盾而的元素一一比较,如果出现更大的值(或更小的值),则将该值赋给max(或min),直到全部比完为止,利用一个临时变量j记录max所在位置。(3)一维数组的首元素为
2、a[0],二维数组的首元素为a[0][0],二维数组的行首元素为a[i][0],二维数组的列首元素为a[0][i]。例:找出2XM整型二维数组屮最人元素的值intfun(inta[][M])inti,j,max=a[0][0];for(i=0;i<2;i++)for(j=0;j3、j];returnmax;}4.求素数问题。(1)判断一个素是否为素数。(2)求某个范围内素数的个数、和、平方根和等。5.求最小公倍数、最大公约数问题。则此数为最小公倍数,否则继续加1再最小公倍数求法:用从1开始的数去整除,若能同吋整除整除,直到找到为止。fo4、r(k=l;;k++)if(k%a=0&&k%b==0)break最大公约数求法(碾转相除法):x〉y(1)将两数中的大数去除以小数,如果除不断,转入(2),若能整除,转入(3)。(2)将小数变成被除数,它们的余数为除数,再相除。如果除不断,转入(2)。若能整除,转入(3)。(3)则此除数为最大公约数。inta(intx,inty)}elsereturna(y,temp)}inttemp;temp=x%y;if(temp=0){returny;1.字符串问题。(1)串重新组合问题。①原串中去掉(或添加)一部分组成成分(如数字、*号)②奇数或偶数重排(2)在串中查找字符或字符串问题。(3)前两个5、问题屮涉及到的字符移动问题(前移、后移)(4)将串中的某些前移,某些后移,实质是先选出来,存在不同的数组中,再重新合并。(5)逆序。(6)字符型的数字转换为成其而值相同的整数,并进行相关运算。如‘5’转换为数值5怎么转换?‘5'-‘(T=5或‘5'-48=5(7)字符大小写转换。如‘A’转换为‘a’怎么转换?c=b[i]+32;returnc;}‘A'-‘a'=-32或‘a''32=‘A’for(i=0;i=,a,&&b[i]<=,z,)c=b[i]-32;if(b[i]>=,A,&&b[i]<=T)2.排序问题(假定有ii个元素)。1)H泡排序。从数组的首元素开6、始,依次对相邻的两个元素进行比较,当发现前面的数字大于(或小于)后面时就进行依次交换,从头到尾比较完一遍就挑出一个最大(或最小)的数,将其排在最后面,n个数要比较n-1遍,其中第j遍耍两两相比n-j遍。主要参数说明:i(循环次数n-1次):0----n-2如果a[i]7、or(i=0;i〈10-j;i++)if(a[i]〉a[i+l]){temp=a[i];a[i]=a[i+l];a[i+l]=temp;}}for(i二0;i〈10;i++)printf("%5d,",a[i]);printf(”rT);}2)选择排序。选择排序分升序和降序,苒中降序排序,首先从数组中挑选•一个最大的元素,把它和第一个元素交换,接着从剩卜的n-1个元素中再挑出一个最大的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。主要参数说明:i(循环次数n-1次):0…-n-2j(被比较元素的下标):i+1-…n-1如果a[i]8、9、j];a[j]=t;}则为降序。如果a[i]>a[j]{t=a[il;a[il=a[j];a[jl=t;}则为升序。例:intmyarray[6]={23,54,60,15,20,37};inti,j,temp;intn=6;for(i=0;imyarray[j]){temp=myanay[i];myarray
3、j];returnmax;}4.求素数问题。(1)判断一个素是否为素数。(2)求某个范围内素数的个数、和、平方根和等。5.求最小公倍数、最大公约数问题。则此数为最小公倍数,否则继续加1再最小公倍数求法:用从1开始的数去整除,若能同吋整除整除,直到找到为止。fo
4、r(k=l;;k++)if(k%a=0&&k%b==0)break最大公约数求法(碾转相除法):x〉y(1)将两数中的大数去除以小数,如果除不断,转入(2),若能整除,转入(3)。(2)将小数变成被除数,它们的余数为除数,再相除。如果除不断,转入(2)。若能整除,转入(3)。(3)则此除数为最大公约数。inta(intx,inty)}elsereturna(y,temp)}inttemp;temp=x%y;if(temp=0){returny;1.字符串问题。(1)串重新组合问题。①原串中去掉(或添加)一部分组成成分(如数字、*号)②奇数或偶数重排(2)在串中查找字符或字符串问题。(3)前两个
5、问题屮涉及到的字符移动问题(前移、后移)(4)将串中的某些前移,某些后移,实质是先选出来,存在不同的数组中,再重新合并。(5)逆序。(6)字符型的数字转换为成其而值相同的整数,并进行相关运算。如‘5’转换为数值5怎么转换?‘5'-‘(T=5或‘5'-48=5(7)字符大小写转换。如‘A’转换为‘a’怎么转换?c=b[i]+32;returnc;}‘A'-‘a'=-32或‘a''32=‘A’for(i=0;i=,a,&&b[i]<=,z,)c=b[i]-32;if(b[i]>=,A,&&b[i]<=T)2.排序问题(假定有ii个元素)。1)H泡排序。从数组的首元素开
6、始,依次对相邻的两个元素进行比较,当发现前面的数字大于(或小于)后面时就进行依次交换,从头到尾比较完一遍就挑出一个最大(或最小)的数,将其排在最后面,n个数要比较n-1遍,其中第j遍耍两两相比n-j遍。主要参数说明:i(循环次数n-1次):0----n-2如果a[i]7、or(i=0;i〈10-j;i++)if(a[i]〉a[i+l]){temp=a[i];a[i]=a[i+l];a[i+l]=temp;}}for(i二0;i〈10;i++)printf("%5d,",a[i]);printf(”rT);}2)选择排序。选择排序分升序和降序,苒中降序排序,首先从数组中挑选•一个最大的元素,把它和第一个元素交换,接着从剩卜的n-1个元素中再挑出一个最大的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。主要参数说明:i(循环次数n-1次):0…-n-2j(被比较元素的下标):i+1-…n-1如果a[i]8、9、j];a[j]=t;}则为降序。如果a[i]>a[j]{t=a[il;a[il=a[j];a[jl=t;}则为升序。例:intmyarray[6]={23,54,60,15,20,37};inti,j,temp;intn=6;for(i=0;imyarray[j]){temp=myanay[i];myarray
7、or(i=0;i〈10-j;i++)if(a[i]〉a[i+l]){temp=a[i];a[i]=a[i+l];a[i+l]=temp;}}for(i二0;i〈10;i++)printf("%5d,",a[i]);printf(”rT);}2)选择排序。选择排序分升序和降序,苒中降序排序,首先从数组中挑选•一个最大的元素,把它和第一个元素交换,接着从剩卜的n-1个元素中再挑出一个最大的元素,把它和第二个元素交换,不断重复以上过程,直到比较完最后两个元素。主要参数说明:i(循环次数n-1次):0…-n-2j(被比较元素的下标):i+1-…n-1如果a[i]8、9、j];a[j]=t;}则为降序。如果a[i]>a[j]{t=a[il;a[il=a[j];a[jl=t;}则为升序。例:intmyarray[6]={23,54,60,15,20,37};inti,j,temp;intn=6;for(i=0;imyarray[j]){temp=myanay[i];myarray
8、
9、j];a[j]=t;}则为降序。如果a[i]>a[j]{t=a[il;a[il=a[j];a[jl=t;}则为升序。例:intmyarray[6]={23,54,60,15,20,37};inti,j,temp;intn=6;for(i=0;imyarray[j]){temp=myanay[i];myarray
此文档下载收益归作者所有