




免费预览已结束,剩余25页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.(5分)利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 1.程序分析:(ab)?a:b这是条件运算符的基本例子。 2.程序源代码: main() int score; char grade; printf(please input a scoren); scanf(%d,&score); grade=score=90?A:(score=60?B:C); printf(%d belongs to %c,score,grade); 2.(10分)编写函数fun(),它的功能是:计算和输出下列级数的和。S=1/(12)+1/(23)+1/(n(n+1)例如,当n=10时,函数值为0.909091。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include#includedouble fun(int n) int i=1,j=2,k; double sum=0.0; for(k=0;kn;k+) sum+=1.0/(i*j);i+;j+; return sum;main() clrscr(); printf(%fn,fun(10);3.(10分)某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。1.程序分析:2.程序源代码:main()int a,i,aa4,t;scanf(%d,&a);aa0=a%10;aa1=a%100/10;aa2=a%1000/100;aa3=a/1000;for(i=0;i=3;i+)aai+=5;aai%=10;for(i=0;i=0;i-)printf(%d,aai);4.(5分)下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。 #include main() int i, j; for(i=0; i=9或i=i或10i; i+) j=i*10+6; if(j%3!=0或j%3 ) continue; printf(%d,j); 5.(10分)判断一个素数能被几个9整除1.程序分析:2.程序源代码:main() long int m9=9,sum=9;int zi,n1=1,c9=1;scanf(%d,&zi);while(n1!=0) if(!(sum%zi)n1=0;elsem9=m9*10;sum=sum+m9;c9+;printf(%ld,can be divided by %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的值,重复执行第一步。 程序源代码: /* zheng int is divided yinshu*/ main() int n,i; printf(nplease input a number: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; else break; printf(%d,n); 7.(5分)打印出如下图案* * * * 程序源代码: main() int i,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分)请编写一个函数void fun(int m,int k,int xx),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37。注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何去何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序。#include #include /*本题中的for()循环用来判断一个数是否为素数,由于个数只能是k个所以用do-while循环来控制。*/void fun(int m, int k, int xx) int i,j=0,p=m+1;dofor( i=2; i=p) xxj+=p;p+; while(jk); main() int m,n,zz1000;printf(n please enter two integers: );scanf(%d%d,&m,&n);fun( m,n,zz);for(m=0; mn; m+)printf(%d , zzm);printf(n);9.(10分)古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21. 2.程序源代码: main() long f1,f2; int i; 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列)的转置(即行列互换)。试题程序:#include #include int fun(int array33) int i,j,t;for(i=0;i2;i+)for(j=i+1;j3;j+)t=arrayij;arrayij=arrayji;arrayji=t;main() int i,j;int array33=100,200,300,400,500,600,700,800,900;clrscr();for(i=0;i3;i+)for(j=0;j3;j+)printf(%7d,arrayij);printf(n);fun(array);printf(Converted array:n);for(i=0;i3;i+)for(j=0;j3;j+)printf(%7d,arrayij);printf(n);11.(10分)要求程序的功能是:把20个随机数存入一个数组,然后输出该数组中的最小值。其中确定最小值的下标的操作在fun函数中实现,请给出该函数的定义。试题程序。#include #include #define VSIZE 20int vectorVSIZE;/*注:该题的算法是用一个变量(j)来存储最小值元素的下标,在循环过程中让每个元素都与原最小值元素进行大小比较(if(listilistj),如发现更小的则让j重新拥有最小值元素的下标(j=i)。*/int fun(int list,int size) int i,j=0;for(i=1;isize;i+)if(listilistj)j=i;return j;main()int i;clrscr();for(i=0;iVSIZE;i+)vectori=rand();printf(Vector%d=%6dn,i,vectori);i=fun(vector,VSIZE);printf(nMininum:vector%d=%6dn,i,vectori);12.(10分)编写函数fun,函数的功能是:从字符串中删除指定的字符。同一字母的大小写按不同字符处理。若程序执行时,输入字符串为:turbo c and Borland c+从键盘上输入字符:n,则输出后变为:turbo c ad borlad c+如果输入的字符串不存在,则字符串照原样输出。试题程序。#include #include /*注:该题的算法是让i控制一个一个字符往后走,在移动过程中如果si不是要删的字符,则将其按顺序放到新串中(新串亦是用s来做,只是用k来控制新串的下标,由于要删除一些元素,因此新串的下标总是比原下标i要慢。因而可用此法即同一字符串变量的方法。*/int fun(char s,int c)int i,k=0;for(i=0;si;i+)if(si!=c) sk+=si; sk=0;main() static char str=turbo c and borland c+;char ch;clrscr();printf( :%sn,str);printf( :);scanf(%c,&ch);fun(str,ch);printf(str=%sn,str);13.(5分)试编程判断输入的正整数是否既是3又是5的整数倍数。若是,则输出yes;否则输出no。#includeint main()int a;printf(input a number:);scanf(%d,&a);if(a%3=0 & a%5=0) printf(yes);else printf(no); getch();14.(10分)有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13.求出这个数列的前20项之和。 1.程序分析:请抓住分子与分母的变化规律。 2.程序源代码: main() int n,t,number=20; float a=2,b=1,s=0; for(n=1;ny则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小。 2.程序源代码: main() int x,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(small to big: %d %d %dn,x,y,z); 16(5分)一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高? 1.程序分析:见下面注释 2.程序源代码: main() float sn=100.0,hn=sn/2; int n; for(n=2;n=10;n+) sn=sn+2*hn;/*第n次落地时共经过的米数*/ hn=hn/2; /*第n次反跳高度*/ printf(the total of road is %fn,sn); printf(the tenth is %f metern,hn); 17(10分)将一个数组逆序输出。 1.程序分析:用第一个与最后一个交换。 2.程序源代码: #define N 5 main() int aN=9,6,5,4,1,i,temp; printf(n original array:n); for(i=0;iprintf(%4d,ai); for(i=0;itemp=ai; ai=aN-i-1; aN-i-1=temp; printf(n sorted array:n); for(i=0;iprintf(%4d,ai); 18(10分)求s=a+aa+aaa+aaaa+aa.a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。 1.程序分析:关键是计算出每一项的值。 2.程序源代码: main() int a,n,count=1; long int sn=0,tn=0; printf(please input a and nn); scanf(%d,%d,&a,&n); printf(a=%d,n=%dn,a,n); while(count=n) tn=tn+a; sn=sn+tn; a=a*10; +count; printf(a+aa+.=%ldn,sn); 19求1+2!+3!+.+20!的和 1.程序分析:此程序只是把累加变成了累乘。 2.程序源代码: main() float n,s=0,t=1; for(n=1;n=a&c=A&c=0&c=9) digit+; else others+; printf(all in all:char=%d space=%d digit=%d others=%dn,letters, space,digit,others); 21.(10分)对10个数进行排序 1.程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。 2.程序源代码: #define N 10 main() int i,j,min,tem,aN; /*input data*/ printf(please input ten num:n); for(i=0;iaj) min=j; tem=ai; ai=amin; amin=tem; /*output data*/ printf(After sorted n); for(i=0;i0) x1=(x2+1)*2;/*第一天的桃子数是第2天桃子数加1后的2倍*/ x2=x1; day-; printf(the total is %dn,x1); 24.(10分)从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个#为止。1.程序分析:2.程序源代码:#include stdio.hmain() FILE *fp;char ch,filename10;scanf(%s,filename);if(fp=fopen(filename,w)=NULL)printf(cannot open filen);exit(0);ch=getchar();ch=getchar();while(ch!=#)fputc(ch,fp);putchar(ch);ch=getchar();fclose(fp);25.(5分)以下程序的功能是输出如下形式的方阵:13 14 15 169 10 11 125 6 7 81 2 3 4请填空。main() int i,j,x;for(j=4; j 0 j-) for(i=1; i=4; i+) x=(j-1)*4 + 6 printf(%4d,x);printf(n);26.(10分)请编一个函数float fun(double h),函数的功能是对变量h中的值保留2位小数,并对第三位进行四舍五入(规定h中的值为正数)。例如:h值为8.32433,则函数返回8.32;h值为8.32533,则函数返回8.33。试题程序。#include #include /*注:h乘以1000后正好是原小数点后第三位做了新数的个位数,然后再进行加5运算时。如原小数点后第三位为4及以下则加5后还是不能进一位(即四舍),如是5及以上则加5后该位就要向前进一位数(即五入)。进行加5运算后除10再赋给一个整型变量此时就只有原小数点第二位及以前各位保留在整型变量中,最后再对整型变量除100,这样又出现了两位小数。该题中,进行四舍五入后一定要赋给一个整型变量才能将不用部分彻底变成0 。*/float fun(float h) long t;h=h*1000;t=(h+5)/10;return (float)t/100;main()float a;clrscr();printf(Enter a:); scanf(%f,&a);printf(The original data is:);printf(%fnn,a);printf(The result :%6.2fn,fun(a);27.(10分)请编写一个unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n=2)位的整数,函数求出w的后n-1位的数作为函数值返回。例如:w值为5923,则函数返回923;w值为923则函数返回23。试题程序。#include #include /* 注:由于unsigned型整数在0-65535这间,只要它大于10000则对10000求余即得出后面4位,否则如果大于1000则对1000求余得出后3位数,这样一层一层往小的判断。由于return的作用除了返回值以外,还有当执行到return时就跳出该程序,所以可以连续的用if()语句。 */unsigned fun( unsigned w ) if(w=10000) return w%10000;if(w=1000) return w%1000;if(w=100) return w%100;return w%10;main() unsigned x;printf( enter a unsigned integer number : );scanf( %u,&x);if(x10) printf(data error!);else printf (the result :%un, fun(x);28.(5分)以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。#include char *huiwen(char *str) char *p1,*p2; int i,t=0;p1=str;p2= str+strlen(str)-1 for(i=0;i=strlen(str)/2;i+)if(*p1+!=*p2-)t=1;break;if(t=0或!t ) return(yes!);else return(no!);main() char str50;printf(Input:); scanf(%s,str);printf(%sn, huiwen(str) );29.(10分)编写函数int fun(int lim,int aaMAX),该函数的功能是求出小于lim的所有素数并放在aa数组中,该函数返回所求出素数的个数。试题程序。#include #include #define MAX 100 int i,j=0,k;for( k=2; klim; k+) for( i=2; i=k) aaj+=k;return j;main() int limit,i,sum;int aaMAX;printf(n input a integer number:);scanf( %d,&limit);sum=fun(limit,aa);for(i=0; isum; i+) if(i%10=0&i!=0)printf(n);printf(%5d, aai);30.(10分)请编写函数fun,对长度为7个字符的字符串,除首尾字符外,将其余5个字符按降序排列。例如,原来的字符串为CEAedca,排序后输出为CedcEAa。试题程序。#include #include #include int fun(char *s,int num) int i,j,t;for(i=1;inum-2;i+)for(j=i+1;jnum-1;j+)if(sisj) t=si;si=sj;sj=t;main() char s10;clrscr();printf(输入7个字符的字符串:);gets(s);fun(s,7);printf(n%s,s);1. (5分)以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。main() int i,a20,sun,count;suum=count=0;for(i=0;i20;i+) scanf(%d, _ &a _ );fro(i=0;i0) count+;sum+= _ a _ printf(sum=%d,count=%dn,sum,count);32.(10分)请编一函数void fun(int ttMN,int ppN),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中,二维数组中的数已在主函数中赋予。试题程序。#include conio.h#include stdio.h#define M 3#define N 4/*注:该题用for(i=0;iN;i+)来控制一列一列地找,而内嵌循环for(j=0;jM;j+)用于控制同列内元素的比较。多重循环的嵌套总是最里层循环变化最快,即外层循环改变一个值,内层循环就要循环完一次, */void fun(int ttMN,int ppN) int i, j;for(i=0;iN;i+) pp=tt0i;for(j=0;jM;j+)if(ttjippi) ppi=ttji;main() int tMN= 22,45,56,30,19,33,45,38,20,22,66,40;int pN,i,j,k;clrscr();printf(the original data is:n);for(i=0;iM;i+)for(j=0;jN;j+)printf(%6d,tij);printf(n);fun(t,p);printf(nthe result is:n);for(k=0;k100)printf(data eror!n);exit(0);y=fun(x);if(y) printf(%d yesn,x);else printf (%d no!n,x);34(5分) 以下sum函数的功能是计算下列级数之和。S=1x+x2/2!+x3/3!+.+xn/n!请给函数中的各变量正确赋初值。doublesum(doublex,intn)inti;doublea,b,s;a=1.0;b=1.0;s=1.0;for(i=1;i=n;i+)a=a*x;b=b*i;s=s+a/b;returns;35(10分) 请编写函数fun,函数的功能是:在字符串中所有数字字符前加一个$字符。例如,输入:A1B23CD45,则输出为:A$1B$2$3CD$4$5。注意:部分源程序给出如下。#include /*注:该题用while()循环来控制原字符串从头走到尾,在走动过程中判断是当前字符是否是数字,若是则在新串中先连一个$然后再连原字符,否则直接连原字符。一定要注意指针和下标的变化。最后要把新串拷贝到s所指的地址中,注意不能用s=a;若用了,则实参数组还是原字符串。*/void fun( char *s)char a100;int i=0;while(*s)if(*s=0&*s=9) ai+=$;ai+=*s+;else ai+=*s+; a=0;strcpy(s,a);main() char s80;printf(enter a string:);scanf(%s, s);fun(s);printf(the result: %sn, s);36.(10分)请编写函数fun,函数的功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。例如,若输入:17,则应输出:9和4 6 8 9 10 12 14 15 16。试题程序。#include #include /* 注:内嵌的for()循环用于判断是否是素数,在ji的情况下,只要j对i求余,余数为0则表示i不是素数,则将i存入xx数组中。break;语句只是让它提前结束循环。不用亦可。*/void fun( int m, int *k, int xx ) int i,j;*k=0;for( i=2; im; i+)for( j=2; ji; j+)if( i%j=0) xx(*k)+=i; break;main() int m, n,zz100;printf(n please enter an integer number between 10 and 100: );scanf( %d,&n);fun(n,&m,zz);printf(nn there are %d non-prime numbers less than %d: , m,n);for(n=0; nm; n+)printf(n %4d,zzn);37. 以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。# define N 4void rotate(int aN, int bN) int i, j;for (i=0; i bN-1 = a0 b0 = aN-1; 38. (10分) 请编写函数fun,经的功能是:求出1到1000之内能被7或11整除 但不能同时补7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何去何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序。#include #include /*该题关键就是如何表示能被7或11整除,但不能同时被7和11整除。用(i%7=0)/(i%11=0)来表示能被7或11整除,用 !(i%7=0)&(i%11=0)来表示不能同时被7和11整除。void fun(int *a,int *n) int i,m=0;for(i=1;i1000;i+)if(i%7=0)/(i%11=0)&!(i%7=0)&(i%11=0)am=i;m+=1;*n=m; main() int aa1000,n,k;clrscr();fun(aa,&n);for(k=0;kn;k+)if(k+1)%10=0) printf(n);else printf(%d,aak);39. (10分)m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回。例如,当score 数组中的数据为:10 20 30 40 50 60 70 80 90 时,函数返回的人数应该是4,below中的数据应为:10 20 30 40。注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何去何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序。#include #include #include /*第一个for()循环用来计算score数组中分数的总和,然后用aver/=m求出平均值,第二个循环用来找出小于平均分的元素,并放到数组below中,这里要注意j的递增方式。*/int fun(int score,int m, int below) int i,j=0,aver=0;for(i=0;im;i+)aver+=scorei;aver/=m;for(i=0;im;i+)if(scoreiaver)belowj+=scorei;return j;main() int i,n,below9;int score9=10,20,30,40,50,60,70,80,90;clrscr();n=fun(score,9,below);printf(nBelow the average score are :);for(i=0;in;i+) printf(%4d,belowi);40. 以下函数的功能是:求x的y次方,请填空。 double fun( double x, int y) int i; double z; for(i=1, z=x; ireturn z; 41. (10分) 函数YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角,形式如下111121133114641其构成规律是:第0列元素和主对角线无素均为1其余元素为其左上方和正上方元素之和数据的个数每行递增1请将程序补充完整。#defintN6voidYangHui(int*NN)inti,j;x00=1for(i=1;iN;i+)x0=x和xi-1j-1+xi-1j=1;for(j=1;j=0&s=9)和042. (10分)程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int aN),函数的功能是:使数组右上半三角元素中的值全部置成0。例如:a数组中的值为,则返回主程序后a数组中的值应为 注意:部分源程序给出如下。请勿改动主函数main和其它函数中的任何去何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序。#include #include #include #define N 5/*:该题的关键亦是在如何表示右上半角,当从上往下到第i行时要从第i列(所以内嵌for()的j从i开始循环)开始替换直到最后一列,本题用外层for()来控制行,而用内嵌的for()来控制在每一行内右边元素置0。int fun(int aN) int i,j;for(i=0;iN;i+)for(j=i;jN;j+)aij=0; main() int aNN,i,j;clrscr();printf(* The array *n);for(i=0;iN;i+)for(j=0;jN;j+)aij=rand()%20; p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江苏省连云港市2024-2025学年高二下学期期末调研考试地理试卷(含答案)
- 合肥学院《建筑材料力学》2024-2025学年第一学期期末试卷
- 临床统计面试题目及答案
- 室内设计知识竞赛试题及答案
- 群体性不明原因疾病事件专项应急演练脚本(2篇)
- 入党论文题目及答案
- 医院停水停电停氧的应急预案考核试题及答案
- 《项目管理案例教程》课件-04 第4章 项目管理方法和工具的应用案例
- 2025年电梯安全员守则培训考核试题附答案
- 外科休克病人的护理考试题及答案
- 建筑施工现场签证单(模板)
- GB/T 41837-2022温泉服务温泉水质要求
- GB/T 9729-2007化学试剂氯化物测定通用方法
- MA控台基本知识和技巧
- 东芝空调用户使用手册
- BVI公司法全文(英文版)
- 住房公积金投诉申请书
- 众辰变频器说明书3400
- 《世说新语》乘船 完整版课件
- 施工现场安全检查记录表(周)以及详细记录
- 煤矿地质基础知识课件
评论
0/150
提交评论