您好,欢迎访问三七文档
1.(5分)利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。1.程序分析:(ab)?a:b这是条件运算符的基本例子。2.程序源代码:main(){intscore;chargrade;printf(pleaseinputascore\n);scanf(%d,&score);grade=score=90?'A':(score=60?'B':'C');printf(%dbelongsto%c,score,grade);}2.(10分)编写函数fun(),它的功能是:计算和输出下列级数的和。S=1/(1×2)+1/(2×3)+…+1/(n×(n+1))例如,当n=10时,函数值为0.909091。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#includeconio.h#includestdio.hdoublefun(intn){inti=1,j=2,k;doublesum=0.0;for(k=0;kn;k++){sum+=1.0/(i*j);i++;j++;}returnsum;}main(){clrscr();printf(%f\n,fun(10));}3.(10分)某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。1.程序分析:2.程序源代码:main(){inta,i,aa[4],t;scanf(%d,&a);aa[0]=a%10;aa[1]=a%100/10;aa[2]=a%1000/100;aa[3]=a/1000;for(i=0;i=3;i++){aa[i]+=5;aa[i]%=10;}for(i=0;i=3/2;i++){t=aa[i];aa[i]=aa[3-i];aa[3-i]=t;}for(i=3;i=0;i--)printf(%d,aa[i]);}4.(5分)下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。#includemain(){inti,j;for(i=0;i=9或i10或9=i或10i;i++){j=i*10+6;if(j%3!=0或j%3)continue;printf(%d,j);}}5.(10分)判断一个素数能被几个9整除1.程序分析:2.程序源代码:main(){longintm9=9,sum=9;intzi,n1=1,c9=1;scanf(%d,&zi);while(n1!=0){if(!(sum%zi))n1=0;else{m9=m9*10;sum=sum+m9;c9++;}}printf(%ld,canbedividedby%d\9\,sum,c9);}6.(10分)将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。程序源代码:/*zhengintisdividedyinshu*/main(){intn,i;printf(\npleaseinputanumber:\n);scanf(%d,&n);printf(%d=,n);for(i=2;i=n;i++){while(n!=i){if(n%i==0){printf(%d*,i);n=n/i;}elsebreak;}}printf(%d,n);}7.(5分)打印出如下图案******************程序源代码:main(){inti,j,k;for(i=0;i=3;i++){for(j=0;j=2-i;j++)printf();for(k=0;k=2*i;k++)printf(*);printf(\n);}}8.(10分)请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37。注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何去何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序。#includeconio.h#includestdio.h/*本题中的for()循环用来判断一个数是否为素数,由于个数只能是k个所以用do-while循环来控制。*/voidfun(intm,intk,intxx[]){inti,j=0,p=m+1;do{for(i=2;ip;i++)if(p%i==0)break;if(i=p)xx[j++]=p;p++;}while(jk);}main(){intm,n,zz[1000];printf(\npleaseentertwointegers:);scanf(%d%d,&m,&n);fun(m,n,zz);for(m=0;mn;m++)printf(%d,zz[m]);printf(\n);}9.(10分)古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....2.程序源代码:main(){longf1,f2;inti;f1=f2=1;for(i=1;i=20;i++){printf(%12ld%12ld,f1,f2);if(i%2==0)printf(\n);/*控制输出,每行四个*/f1=f1+f2;/*前两个月加起来赋值给第三个月*/f2=f1+f2;/*前两个月加起来赋值给第四个月*/}}10.(5分)写程序,实现矩阵(3行3列)的转置(即行列互换)。试题程序:#includestdio.h#includeconio.hintfun(intarray[3][3]){inti,j,t;for(i=0;i2;i++)for(j=i+1;j3;j++){t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;}}main(){inti,j;intarray[3][3]={{100,200,300},{400,500,600},{700,800,900}};clrscr();for(i=0;i3;i++){for(j=0;j3;j++)printf(%7d,array[i][j]);printf(\n);}fun(array);printf(Convertedarray:\n);for(i=0;i3;i++){for(j=0;j3;j++)printf(%7d,array[i][j]);printf(\n);}}11.(10分)要求程序的功能是:把20个随机数存入一个数组,然后输出该数组中的最小值。其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。试题程序。#includestdio.h#includeconio.h#defineVSIZE20intvector[VSIZE];/*注:该题的算法是用一个变量(j)来存储最小值元素的下标,在循环过程中让每个元素都与原最小值元素进行大小比较(if(list[i]list[j]),如发现更小的则让j重新拥有最小值元素的下标(j=i)。*/intfun(intlist[],intsize){inti,j=0;for(i=1;isize;i++)if(list[i]list[j])j=i;returnj;}main(){inti;clrscr();for(i=0;iVSIZE;i++){vector[i]=rand();printf(Vector[%d]=%6d\n,i,vector[i]);}i=fun(vector,VSIZE);printf(\nMininum:vector[%d]=%6d\n,i,vector[i]);}12.(10分)编写函数fun,函数的功能是:从字符串中删除指定的字符。同一字母的大小写按不同字符处理。若程序执行时,输入字符串为:turbocandBorlandc++从键盘上输入字符:n,则输出后变为:turbocadborladc++如果输入的字符串不存在,则字符串照原样输出。试题程序。#includestdio.h#includeconio.h/*注:该题的算法是让i控制一个一个字符往后走,在移动过程中如果s[i]不是要删的字符,则将其按顺序放到新串中(新串亦是用s来做,只是用k来控制新串的下标,由于要删除一些元素,因此新串的下标总是比原下标i要慢。因而可用此法即同一字符串变量的方法。*/intfun(chars[],intc){inti,k=0;for(i=0;s[i];i++)if(s[i]!=c)s[k++]=s[i];s[k]='\0';}main(){staticcharstr[]=turbocandborlandc++;charch;clrscr();printf(:%s\n,str);printf(:);scanf(%c,&ch);fun(str,ch);printf(str[]=%s\n,str);}13.(5分)试编程判断输入的正整数是否既是3又是5的整数倍数。若是,则输出yes;否则输出no。#includestdio.hintmain(){inta;printf(inputanumber:);scanf(%d,&a);if(a%3==0&&a%5==0)printf(yes);elseprintf(no);getch();}14.(10分)有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。1.程序分析:请抓住分子与分母的变化规律。2.程序源代码:main(){intn,t,number=20;floata=2,b=1,s=0;for(n=1;n=number;n++){s=s+a/b;t=a;a=a+b;b=t;/*这部分是程序的关键,请读者猜猜t的作用*/}printf(sumis%9.6f\n,s);}15.(10分)输入三个整数x,y,z,请把这三个数由小到大输出。1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果xy则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小。2.程序源代码:main(){intx,y,z,t;scanf(%d%d%d,&x,&y,&z);if(xy){t=x;x=y;y=t;}/*交换x,y的值*/if(xz){t=z;z=x;x=t;}/*交换x,z的值*/if(yz){t=y;y=z;z=t;}/*交换z,y的值*/printf(smalltobig:%d%d%d\n,x,y,z);}16.(5分)一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?1.程序分析:见下面注释2.程序源代码:main(){floatsn=100.0,hn=sn/2;intn;for(n=2;n=10;n++){sn=sn+2*hn;/*第n次落地时共经过的米数*/hn=hn/2;/*第n次反跳高度*/}printf(thetotalofroadis%f\n,sn);printf(thetenthis%fmeter\n,hn);}17.(10分)将一个数组逆序输出。1.程序
本文标题:c语言试题库编程题
链接地址:https://www.777doc.com/doc-4598980 .html