C语言上机试题_第1页
C语言上机试题_第2页
C语言上机试题_第3页
C语言上机试题_第4页
C语言上机试题_第5页
已阅读5页,还剩51页未读, 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C上机题1.设 y(n) = 1 nv= 1 时;y(n) = -y(n-2)+2*y(n-1) n1 时。编一 C 程序,它能对读入的任意n(n=0且n50),能计算并输出y(n)的值。(注:程序命名为e1_2.exe)int#i nclude stdio.hy(n)int n;if (*=1)return 1;elseretur n(-y( n-2)+2*y( n-1);void mai n()int n;prin tf( please input the n :n);sca nf(%d,&n);prin tf(y(%d)=%d n,n ,y( n);2 .编一 C程序,它能读入一个字符串

2、(串长=100 II i=0)prin tf(sorry! there is more tha n or less tha n one hun dred nu mber n);elseif (i0)for(j=0;j=0 & aj=9)n+;prin tf(the length is :%d n, n);第三题编一 C程序,它能读入一正整数n, (n10),并输出如下图形:1nn(共 2n-1 个 n)(可执行文件名为e2_1.exe)#i nclude stdio.h void prin t(i nt a,i nt printnu m,i nt char num ,char prin tch

3、ar)int i,j;for(i=0;ichar nu m;i+)prin tf(%c ”,prin tchar);for(j=i;j=10 II *=0)prin tf( please input n aga in (n 0):n);scan f(%d,&n); /*i为打印的数字 printnum为打印数字的个数printchar为打印的空格 charnum为打印的空格个数 */for(i=1, printnum=2*i-1,charnum=n-i;iv=n ;i+, printnu m+=2,charnum-)prin t(i, printnu m,char numprin tchar)

4、;for(i-=2, printnum-=4,charnum=1;i=1;i-, printnum-=2,charnum+)prin t(i, printnu m,char num,prin tchar);4.编一 C程序,它能读入矩阵A的行数L,列数M,矩阵B的列数N,矩阵B的行数是M。 L,M,N值都小于20),以及按行读入矩阵A的L*M个元素(整数)及矩阵B的M*N个元素(整数),计算并输出A与B的矩阵乘积(按行,列输出)。(输入时,相邻的两个整数用空格隔开)。(可执行文件名为e2_2.exe)#i nclude stdio.h #defi ne MAX 20void mai n()in

5、 t l,m, n,i,k,j,o,aMAXMAX,bMAXMAX,cMAXMAX,tm p=0;prin tf( please input the L :n);scan f(%d,&I);prin tf( please input the m :n);scan f(%d,&m);prin tf( please input the n :n);scan f(%d,&n);if (l=20 |l=0)prin tf( please input l again (0l=20 |m=20 |n =0)scan f(%d,&n);prin tf( please input n aga in (0vnv

6、 20):n);prin tf( please input the number in a%d%d:n,l,m);for(i=0;ivl;i+)for(j=0;jvm;j+)sca nf(%d,&aij);prin tf( please input the nu mber in b%d%d:n, m,n);for(i=0;im;i+)for(j=0;j n;j+)sca nf(%d,&bij);for(i=0;il;i+)for(k=0;k n;k+) tmp=0;for(j=0;jm;j+)tmp+=aij*bjk;cik=t mp;prin tf(the result is:n);for(

7、o=0;oi;o+)prin tf(n);for(j=0;jk;j+)prin tf(%d ,coj);5.编一 C程序,它能读入n(*200)个整数(以-9999为结束标记,-9999不算在内,相邻的两个整数用空格隔开),找出第1到第n-1个数中第一个与第n个数相等的那个数,并输出该数读入时的序号(序号从1开始记)。(可执行文件名为for(i=0;i n & flag=0;i+)e2_3.exe) #i nclude stdio.h #defi ne MAX 200 void mai n()int i,j,n, flag=0,t mp ,aMAX;prin tf( please input

8、the nu mber :n);for(i=0;i=40 II *=0)printf(p lease input the n aga in( 0=0;i-)j=bi;prin tf(%c,aj);prin tf(n);第八题编一 C程序,它能读入两个整数 m与n,计算并输出m与n的绝对值的最大公约数及最小公倍数。(注:可执行文件名为e3_3.exe)分析:求最大公约数的算法思想:(最小公倍数=两个整数之积/最大公约数)(1)对于已知两数 m,n,使得mn ;m除以n得余数r;(3)若r=0,则n为求得的最大公约数,算法结束;否则执行(4);mF,nr,再重复执行 。#i nclude stdi

9、o.h void mai n()int nm,r,n ,m,t;prin tf( please input two nu mbers: n);sca nf(%d %d,&m,&n);if (m0)m*=-1;if (n0)n*=-1;nm=n*m;if (mvn) t=n; n=m; m=t; r=m% n;while (r!=0) m=n; n=r; r=m% n; printf(最大公约数:dn,n);printf(最小公倍数:%dn,nm/n);9.编一 C程序,它能读入一个13进制数(用字符串表示,用 A、B、C分别表示10、11和12),输出该数的值(按十进制数输出)。如输入为3B时

10、,输出为50。(注:可执行文件名为e4_1.exe) #i nclude stdio.h #i nclude stdlib.h void main (void) char str64,* p;un sig ned long x;prin tf(i nput the nu mber:n);gets(str);x=strtoul(str,&p ,13);prin tf(the nu mber is %ldn,x);10.任何进制转换成十进制 #i nclude stdio.h #i nclude stdlib.h void main (void) char str64,* p;un sig ned

11、 long x;prin tf(i nput the nu mber:n);gets(str);x=strtoul(str,&p,13); /*只是这里该是几进制就改为几*/ prin tf(the nu mber is %ldn,x);11.题编一 C程序,它能依次读入三组d1、r1、d2、r2、d3、r3共18个非负整数(其中0=r1d1,0=r2d2,0=r3d3),对每组6个非负整数依次判断是 否有正整数n,满足n%d1=r1且n%d2=r2且n%d3=r3,若有,则输出其中最小者;否则,输出No。(输入整数时,相邻的两个用空格隔开)。(注:可执行文 件名为e4_2.exe)#i nc

12、lude stdio.hin t l,i, n, d1,r1,d2,r2,d3,r3;for(i=0;iv=2;i+)void mai n() 1=1;n=1;printf(p lease input the number (0=r1=d1 0=r2=d2 0=r3=d3):n);/*别犯低级错误! ! scanf( %dn”,&n);千万别那样写*/sca nf(%d %d %d %d %d %d,&d1,&r1,&d2,&r2,&d3,&r3);while(l!=O)&(*=d1*d2*d3)if (n %d1=r1) & (n %d2= & (n %d3=r3) prin tf(%dn,

13、 n);l=0;else n+;if (l!=0)prin tf(NOn);12.编一 C程序,它能读入10个用空格隔开的整数n1, n2 ,,n10,对于i=1 ,2,10,执行:若ni是某个整数的5次方,则输出yes,否则输出no。#i nclude stdio.h void mai n() int a10,i,j,m, n=10;prin tf( please en ter 10 nu mbers: n);for (i=O;i vn ;i+)sca nf(%d,&ai);for (i=0;i0)if (ai=1) prin tf(%d yes,ai);else m=0;for (j=0;

14、j=ai;j-)if (j*j*j*j*j=ai) n=1;break;if (n=1) prin tf(%d yes,ai);if (n=0) prin tf(%d no,ai);else if (ai=0)prin tf(%dYES ,ai);prin tf(n);13.编一 C程序,它能读如若干浮点数f1、f2、fn(以-9999.0为结束标记,-9999.0不算在内)并输出在f2、f3、fn这n-1个数中大于f1的数的个数、等于f1的数的个数和小于f1的数的个数。(注:可执行文件名为e4_3.exe)in elude math.h #i nclude stdio.h void mai

15、n()float f1OO,f1;int n=0,i,i1=0,i2=0,i3=0;prin tf( PI ease en ter float nu mber :n);scan f(%f, &f1);f0=f1;while (fn!=-9999.0)scan f(%f, &f+n);for (i=1;if1) i1+;elseif (fif1:%dn,i1);prin tf(=f1:%dn,i2);prin tf(f1:%dn,i3);14.输入一个整数x和一个正整数n,求x(x-1)(x-2)(x-3).(x-n+1)的值并输出.好象上次还考过呢.用递归,这里只给出算法,没有输入输出,没有溢

16、出处理int Get(i nt x,i nt n)if(n = 0) return 1; / 最后一步,相当于 x*1else return (x-n+1) * Get(x, n-1);void mai n()int r;r = Get(-5,3);15. 编一 C程序,它能读入若干个非零浮点数(相邻的两个数用空格隔开,以0.0为输入结束标记,0.0不算在内),计算并输出这些数的平均值。(注:可执行文 件名为e5_1.exe)#in elude math.h #i nclude stdio.h void main()float f,s=0.0;int n=0;printfCP lease en

17、 ter float nu mber:n);sca nf(%f, &f);prin tf(No number!n);if (fabs(f-0.0)1e-4)n+;s+=f;if (n !=0) prin tf(%d nu mber of average is:%fn,n ,s/n);16. 编一 C程序,它能反复读入正整数(相邻的用空格隔开),并判断它是否为素数(质数),若是,则输出yes”,否则,输出nO”,直到读入1时,程序终止执行。(注:可执行文件名为e5_2.exe)#i nclude stdio.h #defi ne MAX 10000 void test (int a) int j

18、,testdiv=2;if (a2)for(j=0;testdiv=a/2 & j=0;testdiv+)if (a%testdiv=0)break;if (j=1 | a=1)prin tf(NO );elseprin tf(YES );void mai n()int n,i,aMAX;prin tf( please input the nu mber :n);for(i=0;iMAX;i+)sca nf(%d,&ai);if (ai=1)break;n=i;prin tf(the result is :n);for(i=0;i vn ;i+)test(ai);prin tf(n);17.

19、编一 C程序,它能读入21个整数(相邻的两个数用空格隔开),并输出值为中间的整数的值(即恰有10个值小于它,恰有10个值大于它)。(注:可执行文 件名为e5_3.exe)#i nclude stdio.h void mai n() int a21,i,t mp,j;prin tf( please input the nu mber :n);for(i=0;i21;i+)scan f(%d,&ai);for(i=0;i21;i+)for(j=i+1;j21;j+)if (aiaj)tmp=ai;ai=aj;aj=t mp;prin tf(the middle nu mber is :n);pri

20、n tf(%dn,a10);18. 编一个C程序,它能读入文件f 1.C和f2.c中的所有整数,并把这些数按从小到大的次序写到文件f3. C中,文件中的相邻两个整数都用空格或换行符隔开,相同的数只能写一次,十个数一行)。(注:可执行文件名为e9_2.exe)#i nclude stdio.h #i nclude stdlib.h*/int o=0;/*设置一个全局变量使O等于去掉重复数后的总的数据个数in t clearSort(i nt a,i nt qua ntity) /* 将重复的数去掉并且改掉总的数据个数*/ for(i=0;iqua ntity-1;i+) for(j=i+1;jq

21、ua ntity;j+)if(ai=aj)for(m=j+1;mv=qua ntity;m+)am-1=am;qua ntity-;j-;o=qua ntity;retu rn(quan tity);void main (void)FILE *fp1,*fp2,*fp3;inta100,b100,i,x, n,j,p ,t mp;system(cls);/*清屏 */if (fp1=fo pen (f1.c,wb)=NULL)prin tf(the file f1.c can not open !n);exit(0);prin tf( please input the nu mber in f

22、1.c:n);x=9999;while (x!=-9999)scan f(%d, &x);if (x!=-9999)fwrite(&x,sizeof(i nt),1,fp1);fclose(fp1);if (fp2=fo pen (f2.c,wb)=NULL)prin tf(the file f2.c can not open !n);exit(O);prin tf( please input the nu mber in f2.c:n);x=9999;while (x!=-9999)scan f(%d, &x);if (x!=-9999)fwrite(&x,sizeof(i nt),1,fp

23、2);fclose(fp2);if (fp1=fo pen (f1.c,rb)=NULL)prin tf(the file f1.c can not open !/n);exit(0);if (fp2=fo pen( f2.c,rb)=NULL)prin tf(ca n not open the file f2.c!n);exit(0);if (fp3=fo pen( f3.c,wb)=NULL) prin tf(ca n not open the file f3.c!n);exit(O);i=-1;while(!feof(fp1) fread(&a+i,sizeof(int),1,fp1);

24、 /* 将 FP1 文件中的数据写入 a 数组中 */ fclose(fp1);i-;rewi nd(fp2);while(!feof(fp2) fread(&a+i,sizeof(int),1,fp2); /* 紧接着 FP1 FP2 也将数据写入 a 数组中 */ fclose(fp2);n=i;for(j=0;ja p) tmp=aj;aj=a p;ap =t mp;clearSort(a ,n);/*调用子函数*/fwrite(a,sizeof(i nt),o,fp3);/*将数据写到文件FP3中*/fclose(fp3);if(fp3=fo pen( f3.c,rd)=NULL)pr

25、in tf(ca n not open f3.c !n);exit(0);i=0;*/while(!feof(fp3)/*这里开始输出并且每行十个fread(&bi,sizeof(int),1,fp3); /* 将 FP3 文件中的数据写到 B 数组中 */prin tf(%d ,bi+);if(i%10=0)prin tf(n);if (i=o)break;prin tf(n);第十九题 编一 C程序,它能读入一正整数n,并输出如下图形:AAAA .AAAABBBBBBB,. BBBBBBBnnnnnnn nnnnnnnnnn (共 2n-1 个 n)AAAAAA.AAAAAAAA当 n9

26、时输出 A,B C. : =9 时输出 12345.9 #i nclude stdio.h void prin t(i nt num ,char shu,char row,i nt rows)/* num是要输出的字符的个数 Shu要输出的字符row是空格rows是空格的个数*/int m,j;for(m=0;mvrows;m+) prin tf(%c ,row);j=m;for(;jm+nu m;j+) prin tf(%c ,shu);for(m=0;mrows;m+)*/prin tf(%c ,row);/*到这里还没换行呢 prin tf(n);void prin t11(i nt n

27、um ,int shu,char row,i nt rows) int m,j;for(m=0;mrows;m+) prin tf(%c ,row);j=m;for(;jm+nu m;j+) prin tf(%d ,shu);for(m=0;mrows;m+) prin tf(%c ,row);prin tf(n);void main (void) int inprintnum ,rows,j;char rownu m,a52=ABCDEFGHIJKLM NOP QRSTUVWXYZabcdefghijkIm nop qrst uvwxyz.prin tchar;int prin tchar1

28、;prin tf( please input the nu mber :n);sca nf(%d,&n);for(i=1, printnum=1, prin tchar=1,row nu m- ,rows=n-i;iv=n;printnu m+=2,i+,rows-,prin tcha 叶+)if (i9)for(j=0;j vn-9;j+,printnu m+=2,rows-,i+)prin t( printnu m,aj,row nu m,rows);break;for(pnntnum-=4,i-=2,rows=1;i=1; printnum-=2,i-,rows+)if (i9)for(

29、j=n-11;j=0;j-printnum-=2,rows+,i-) prin t( printnu m,aj,row nu m,rows);if (i=0; printnum-=2 ,pnn tchar1-,i-,rows +) prin t11( pnntnum,pnn tchar1,row nu m,rows);break;m与n (m细,20.编一 C程序,它能计算并输出读入的两个无符号整数 0m1050,0* 1050 )的差 m-n。#i nclude stdio.h #i nclude stri ng.h void mai n()static char m20, n20, mn

30、20;int n l,ml,ms ,ns,mn s,k,i,j,f;prin tf( please input two nu mber (0):n);scan f(%s,&m);scan f(%s,&n);ml=strle n( m);n l=strle n(n);if (ml vnl) | (m=ml-nl-1;i-,j-)ni=nj;for(i=0;i=0;i-)ms=mi-48;ns=ni-48;if(ms=ns)mn s=ms-ns;f=0;elsemn s=ms+10-ns;f=-1;if(ms=ns)mi=mn s+48;elsemi=mn s+48;mi-1+=f;k=0;whi

31、le(mk=O)k+;for(i=k,j=0;ivml;i+,j+)mn j=mi;prin tf(%sn,m n);第二十一题加编一 C程序,它能以字符串形式读入两个无符号正整数m和n (两个串各占一行),计算并输出这两个整数的和,其中 m和n的值最大可为1000亿。(注:可执行文件名为e6_2.exe)#大于1000亿就超过了无符号长整型的数值范围范围是01 0000 00000000无符号短整型065535无符号长整形042 9496 7295所以要数据类型转换float根据转换原贝 U char short - int dun sig ned -long -doubleun sig n

32、edshort un sig ned long所以依据这个我们就得转换成 double #i nclude stdio.h #i nclude stri ng.h void mai n()char m20, n20,m n20;int ml, nl,ms ,ns,mn s,k,i,j,f;printfCP lease en ter 2 nu mber stri ng:n);sca nf(%s,&m);sca nf(%s,&n);ml=strle n(m);n l=strle n(n);if (mlvn I II mvn)strc py(mn ,m);k=ml;strc py(m, n);ml=

33、nl;strc py( n,m n); nl=k;prin tf(%s+%s=,m, n);for (i=ml-1,j=n l-1;i=ml-nl-1;i-,j-)ni=nj;for (i=0;i=0;i-) ms=mi-48;ns=ni-48;mn s=ms+ns;if (mn s10) f=0;else f=1;elseif (mn s0;i-)mi=mi-1;m0=1;for(i=0;i=ml;i+)prin tf(%c,mi);elsefor(i=0;iml;i+)prin tf(%c,mi);prin tf(n);22.编一 C程序,它能读入由空格隔开的 5个正整数,对每个正整数n,

34、判断,若n是完全数(即n=d1+d2+.+dk,其中d1,d2,.dk是n的所有小于它的因子,如6的所有小于它的因子是1,2,3,6=1+2+3,即6是完全数),贝U输出yes,否则输出no。(注:可执行文件名为e7_2.exe)#i nclude stdio.h void mai n()printfCP lease en ter 5 nu mber:n);for (i=0;i5;i+) sca nf(%d,&ai);for (i=0;i5;i+) n=0;for (j=1;jai;j+)if (ai%j=0)n+=j;if (n=ai)prin tf(%d yes n,ai);else pr

35、in tf(%d non,ai);23.编一个C程序,它能读入一个学生登记表(学生数v=10 0,并把它按学号从小到大排序后输出,每个学生登记项包含学号(int型),姓名(字符串),3门课程成绩(均为浮点型),当读到学号值为-1时,表示输入结束,-1不算在内。输入时,相邻两数据间用空各隔开。(注:可执行文件名为e8_2.exe)#i nclude #defi ne STDMAX 100 struct Stude nt int num;char n ame20;float arith;float Ian guage;float chem;void main (void) int i, j, n;

36、struct Stude nt myClassSTDMAX-1, temp;for(i = 0; iSTDMAX-1; +i)prin tf( PI eace input a stude nt in fo.n);prin tf(Exe mp le:(23 green 90 78 54):);if(myClassi. num = -1)scan f(%d, &m yClassi. nu m);break;sea nf(%s, myClassi. name);scan f(%f, &m yClassi.arith);scan f(%f, &m yClassi.la nguage);scan f(%

37、f, &m yClassi.chem);n= i;for(i = 0; ivn-1; +i)/冒泡排序for(j = i+1; jmyClassj. num)temp = myClassi;myClassi = myClassj;myClassj = temp;for(i = 0; ivn; +i)/输出prin tf(%dt%st%5.2ft%5.2ft%5.2fn,myClassi. num,myClassi. name,myClassi.arith,myClassi.la nguage, myClassi.chem);24.编一 C程序,它能读入一个正整数n (n 20),再读入二个n*

38、n的矩阵(矩阵元素为整数,输入时相邻的整数用空格隔开),分别判断每个矩阵是否为对称矩阵,若是,相应输出为 Yes,否则为No。(注:程序命名为e10_1.exe) #i nclude stdio.h void mai n()int n ,a2020,b2020,i,j;char fa=y,fb=y;printf(PI ease en ter n (20)=);sca nf(%d,&n);prin tf(n);printf(PI ease en ter a%d%d:n, n,n);for (i=0;i vn ;i+) for (j=0;j n;j+) sca nf(%d,&aij);prin t

39、f( PI ease enter b%d%d:n, n,n);for (i=0;i vn ;i+) for (j=0;j n;j+) sca nf(%d,&bij);for (i=0;i vn ;i+) for (j=0;jv n;j+) if (ai!=aj)fa=n ; break;for (i=O;i vn ;i+) for (j=O;j n;j+) if (bi!=bj)fb= n;break;if (fa=y) prin tf(a%d%d yesn, n,n);else prin tf(a%d%d n on, n,n);if (fb=y) prin tf(b%d%d yesn, n,

40、n);else prin tf(b%d%d n on, n,n);25. 编一 C程序,它能读入三组 a、b、c,a、b、c分别是三个一元二次方程ax2+bx+c=0的系数(float型)。求解这三个方程,若某方程无实根,则输出“ Nosolution ”,否则输出方程的两个实根。(注:可执行程序命名为e11_2.exe)#i nclude #in clude #defi ne NUM 3 void equati on( float a, float b, float c) double d, x1, x2;d = b*b-4*a*c;if(d0) elseprin tf(No Solutio

41、 nn);x1 = (-b+sqrt(d)/2*a;x2 = (-b-sqrt(d)/2*a;prin tf(x1 = %f, x2 = %fn, x1, x2);void main (void)float modNUM3;int i, j;for(i = 0; iNUM; +i)prin tf(I nput a group of modulus (3 nu mbers):);for(j = 0; j3; +j)sca nf(%f, &m odij);prin tf(The %d equation of result is:n, NUM);for(i = 0; iNUM; +i)equatio

42、 n( modi0, modi1, modi2);26. 编一 C程序,它能读入一个正整数n (0*26),并能打印如下图形,其中最下层为字母A,最上层为2n-1个n对应的字母。如n=3时,可打印的图形为:cccccBBB#i nclude stdio.h prin t(char a,i nt k,i nt l,char b) int i,j;for(j=0;jvl;j+)prin tf(%c,b);for(i=0;i26)sca nf(%d,&n);for(pnn tchar= n+64, printnum=2* n-1,s pace num=0; printnum =1; prin tch

43、ar-,s p ace nu m+,printnum-=2)pnnt(pnn tchar, printnu m,s pace nu m,s pace);27. 编一 C程序,其功能是能把读入一串英文单词(以单词end做为结束标记,单个单词字母数w20),并按字典顺序输出。(注:可执行程序命名为e13_1.exe)#i nclude stri ng.h #i nclude stdio.h void mai n() char a8020,c20;int i=-1,j,k, n=-1;printfCP lease en ter a word stri ng:n);do i+;n+;sca nf(%s

44、,ai);while (strc mp (ai,e nd)!=0);for (k=1;k n;k+) for (j=n-1,i=0;iv n-k;i+,j-) if (strcm p( aj,aj-1)0)strcpy(c,aj);strcpy(aj,aj-1);strcpy(aj-1,c);for (i=0;i vn ;i+) prin tf(%s ,ai);prin tf(n);28. 编一 C程序,它能读入构成集合 A, B的两串非零整数x1 , x2,xm ,0, y1 , y2,yn , 0。计算A与B的交集A CB,再以由小到大的顺序输出ACB中的元素,ACB为空时无输出。(注:可执行程序命名为e14_2.exe)#i nclude stdio.h void main()int a100,b100,c100,i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论