北京大学C语言上机试题.doc_第1页
北京大学C语言上机试题.doc_第2页
北京大学C语言上机试题.doc_第3页
北京大学C语言上机试题.doc_第4页
北京大学C语言上机试题.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

C语言上机试题:1 1. 题目:编一C程序,它能读入一个正整数n(n 20),再逐行读入一个n*n的矩阵的元素(矩阵元素为整数,输入时相邻的整数用空格隔开),找出这个矩阵的最大的元素,再输出该元素的行号和列号(行号和列号均从1开始)。(注:程序命名为e1_1.exe)程序设计: main() int n,i,j,a2020,max,max_i,max_j; printf(Please inter n=); scanf(%d,&n); printf(n); printf(Please inter a:n); for (i=0;in;i+) for (j=0;jn;j+) scanf(%d,&aj); max=a00,max_i=0,max_j=0; for (i=0;in;i+) for (j=0;jn;j+) if (maxaj) max=aj; max_i=i; max_j=j; printf(max_i=%d,max_j=%dn,max_i+1,max_j+1); 2. 题目:设 y(n) = 1 n1时 编一C程序,它能对读入的任意n(n=0且n50),能计算并输出y(n)的值。(注:程序命名为e1_2.exe)程序设计: int y(n) int n; if (n=1) return (1); else return (-y(n-2)+2*y(n-1); main() int n; printf(Please inter n=); scanf(%d,&n); printf(n); printf(y(%d)=%dn,n,y(n); 3. 题目:编一C程序,它能读入一个字符串(串长100,串中可能有空格符),计算并输出该字符串中十进制数字的个数。(注:程序命名为e1_3.exe)程序设计: #include stdio.h #include string.h main() char a100; int i,l,num=0; printf(Please inter a string:n); gets(a); l=strlen(a); for (i=0;i=0&a=9) num+; printf(Number is %dn,num); C语言上机试题:2 1. 题目:编一C程序,它能读入一正整数n,(n10),并输出如下图形: 1 2 2 2 3 3 3 3 3 . . n n . . . . . nn (共2n-1个n) . . 3 3 3 3 3 2 2 2 1 (可执行文件名为e2_1.exe)程序设计: main() static int a2020; int n,i,j,k; printf(Please inter n=); scanf(%d,&n); printf(n); for (i=0;in;i+) k=1; for (j=0;jn-i-2) aj=i+1; if (k=2*i+1+n-i-2) k+; else break; for (i=0;in;i+) for (j=0;j2*n-1;j+) if (aj=0) aj= ; else aj+=48; for (i=0;in;i+) printf(n); for (j=0;j=0;i-) printf(n); for (j=0;j2*n-1;j+) printf(%c,aj); printf(n); 2题目:编一C程序,它能读入矩阵A的行数L,列数M,矩阵B的列数N,矩阵B的行数是M。L,M,N值都小于20), 以及按行读入矩阵A的L*M个元素(整数)及矩阵B的M*N个元素(整数),计算并输出A与B的矩阵乘积(按行,列输出)。(输入时,相邻的两个整数用空格隔开)。(可执行文件名为e2_2.exe)程序设计: main() int a2020,b2020,c2020,l,m,n,i,j,k; printf(Please inter alm and bmn of l,m,n:); scanf(%d,%d,%d,&l,&m,&n); printf(n); printf(Please inter alm:n); for (i=0;il;i+) for (j=0;jm;j+) scanf(%d,&aj); printf(Please inter bmn:n); for (i=0;im;i+) for (j=0;jn;j+) scanf(%d,&bj); for (i=0;il;i+) for (j=0;jn;j+) cj=0; for (k=0;km;k+) cj+=ak*bkj; printf(cln=alm*bmn:); for (i=0;il;i+) printf(n); for (j=0;jn;j+) printf(%-5d,cj); printf(n); 3题目:编一C程序,它能读入n(n200)个整数(以-9999为结束标记,-9999不算在内,相邻的两个整数用空格隔开),找出第1到第n-1个数中第一个与第n个数相等的那个数,并输出该数读入时的序号(序号从1开始记)。(可执行文件名为e2_3.exe)程序设计: main() int a200,n,i; scanf(%d,&a0); if (a0!=-9999) for (i=1,n=0;ai-1!=-9999;i+,n+) scanf(%d,&a); printf(%d,%dn,n,an-1); for (i=0;in;i+) if (a=an-1) printf(%dn,i+1); break; C语言上机试题:3 1. 题目:编一C程序,它能读入一正整数n(n40),并输出如下图形: A A A . A A A A . A . . A A A . A 共n行,每行n个A,下一行比上一行右移一列.(注:可执行文件名为e3_1.exe)程序设计: main() int n,i,j,k; char ch=A,space= ; printf(Please inter n=); scanf(%d,&n); printf(n); for (i=0;in;i+) for (j=0;ji;j+) printf(%c,space); for (k=0;k=0;-i) d=c; printf(%c,bd); printf(%c,n); 3. 题目:编一C程序,它能读入两个整数m与n,计算并输出m与n的绝对值的最大公约数及最小公倍数。(注:可执行文件名为e3_3.exe)程序设计: main() int m,n,d,r; printf(Please enter m and n:n); scanf(%d %d,&m,&n); if (m0) m=-m; if (n0) n=-n; if (m=0;i-) if (a=0)&(a=A)&(a=C) k=a-55; else printf(error!n); for (j=1;jn-i;j+) k*=13; s+=k; printf(To 10 base number is:n); printf(%dn,s); 2. 题目:编一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)程序设计: main() int l,i,n,d1,r1,d2,r2,d3,r3; for (i=0;i=r1=0,d2=r2=0,d3=r3=0:n); scanf(%d %d %d %d %d %d,&d1,&r1,&d2,&r2,&d3,&r3); while (l!=0)&(n=1e-4) scanf(%f,&f+n); for (i=1;if1) i1+; else if (abs(f-f1)f1:%dn,i1); printf(=f1:%dn,i2); printf(f1:%dn,i3); C语言上机试题:5 1题目:编一C程序,它能读入若干个非零浮点数(相邻的两个数用空格隔开,以0.0为输入结束标记,0.0不算在内),计算并输出这些数的平均值。(注:可执行文件名为e5_1.exe)程序设计: #include math.h main() float f,s=0.0; int n=0; printf(Please enter float number:n); scanf(%f,&f); if (fabs(f-0.0)1e-4) n+; s+=f; scanf(%f,&f); if (n!=0) printf(%d number of average is:%fn,n,s/n); 2题目:编一C程序,它能反复读入正整数(相邻的用空格隔开),并判断它是否为素数(质数),若是,则输出yes,否则,输出no,直到读入1时,程序终止执行。(注:可执行文件名为e5_2.exe)程序设计: main() int n,m,f; printf(Please enter a number:n); scanf(%d,&n); while (n!=1) f=1; if (n=2) printf(%d yesn,n); else for (m=2;mn;m+) if (n%m=0) printf(%d non,n); f=0; break; if (n!=2&f=1) printf(%d yesn,n); scanf(%d,&n); 3题目:编一C程序,它能读入21个整数(相邻的两个数用空格隔开),并输出值为中间的整数的值(即恰有10个值小于它,恰有10个值大于它)。(注:可执行文件名为e5_3.exe)程序设计: main() int a21,i,j,k,t; printf(Please enter 21 numbers:n); for (i=0;i21;i+) scanf(%d,&a); for (k=1;k21;k+) for (j=20,i=0;i21-k;i+,j-) if (aj=0;i-) printf(%d ,a); printf(n); 2题目:编一C程序,它能以字符串形式读入两个无符号正整数m和n(两个串各占一行),计算并输出这两个整数的和,其中m和n的值最大可为1000亿。(注:可执行文件名为e6_2.exe)程序设计: #include stdio.h #include string.h main() char m20,n20,mn20; int ml,nl,ms,ns,mns,k,i,j,f; printf(Please enter 2 number string:n); scanf(%s,m); scanf(%s,n); ml=strlen(m); nl=strlen(n); if (ml=ml-nl-1;i-,j-) n=nj; for (i=0;i=0;i-) ms=m-48; ns=n-48; mns=ms+ns; if (mns10) f=0; else f=1; if (mns0;i-) m=mi-1;m0=1;printf(%sn,m); 3题目:编一C程序,它能读入10个浮点数(相邻的两个数用空格隔开),计算并输出其中最大数和最小数之差。(注:可执行文件名为e6_3.exe)程序设计: main() float f9,max,min; int i; printf(Please enter 10 float:n); for (i=0;i10;i+) scanf(%f,&f); max=min=f0; for (i=0;i10;i+) if (maxf) min=f; printf(max=%f,min=%f,max-min=%fn,max,min,max-min); C语言上机试题:7 1题目:编一C程序,它能读入10个用空格隔开的整数n1,n2,n10,对于i=1,2,10,执行:若ni是某个整数的平方,则输出yes,否则输出no。(注:可执行文件名为e7_1.exe)程序设计: #include math.h main() int a9,i,j,n; printf(Please enter 10 number:n); for (i=0;i10;i+) scanf(%d,&a); for (i=0;i10;i+) if (a=1) printf(%d yesn,a); else n=(int)(floor(sqrt(a); if (a=n*n) printf(%d yesn,a); else printf(%d non,a); 2题目:编一C程序,它能读入由空格隔开的5个正整数,对每个正整数n,判断,若n是完全数(即n=d1+d2+.+dk,其中d1,d2,.dk是n的所有小于它的因子,如6的所有小于它的因子是1,2,3,6=1+2+3,即6是完全数),则输出yes,否则输出no。(注:可执行文件名为e7_2.exe)程序设计: main() int a5,i,j,n; printf(Please enter 5 number:n); for (i=0;i5;i+) scanf(%d,&a); for (i=0;i5;i+) n=0; for (j=1;ja;j+) if (a%j=0) n+=j; if (n=a) printf(%d yesn,a); else printf(%d non,a); 3题目:编一C程序,它能读入一个正整数n(n10),然后输出如下图形: 1 2 2 2 3 3 3 3 3 n n n . . . . . . . n n-1 n-1 . . . n-1 . 2 2 2 1 如n=3的图形为: 1 2 2 2 3 3 3 3 3 2 2 2 1 (注:可执行文件名为e7_3.exe)程序设计: main() static int a2020; int n,i,j,k; printf(Please inter n=); scanf(%d,&n); printf(n); for (i=0;in;i+) k=1; for (j=0;jn-i-2) aj=i+1; if (k=2*i+1+n-i-2) k+; else break; for (i=0;in;i+) for (j=0;j2*n-1;j+) if (aj=0) aj= ; else aj+=48; for (i=0;in;i+) printf(n); for (j=0;j=0;i-) printf(n); for (j=0;j2*n-1;j+) printf(%c,aj); printf(n); C语言上机试题:8 1. 题目:编一程序,它能读入一个正整数,然后输出如下图形: -()个 共()行 时,输出为 (注:可执行文件名为e8_1.exe)程序设计: main() static char a8080; int n,i,j,k; printf(Please inter n=); scanf(%d,&n); printf(n); for (i=0;in;i+) k=1; for (j=0;jn-i-2) aj=i+1; if (k=2*i+1+n-i-2) k+; else break; for (i=0;in;i+) for (j=0;j2*n-1;j+) if (aj=0) aj= ; else aj=*; for (i=0;in;i+) printf(n); for (j=0;j=0;i-) printf(n); for (j=0;j2*n-1;j+) printf(%c,aj); printf(n); 2题目:编一个程序,它能读入一个学生登记表(学生数,并把它按学号从小到大排序后输出,每个学生登记项包含学号(型),姓名(字符串),门课程成绩(均为浮点型),当读到学号值为时,表示输入结束,不算在内。输入时,相邻两数据间用空各隔开。(注:可执行文件名为e8_2.exe)程序设计: #include string.h struct student long num; char name10; float score3; ; main() struct student s100,x; int i=0,j,k,n,m; printf(Please enter student data:n); for (i=0;i10;i+) scanf(%ld,&s.num); if (s.num=-1) break; scanf(%s,); for (m=0;m3;m+) scanf(%f,&s.scorem); n=i; for (k=1;kn;k+) for (j=n-1,i=0;in-k;i+,j-) if (sj.numsj-1.num) x.num=sj.num; strcpy(,); for (m=0;m3;m+) x.scorem=sj.scorem; sj.num=sj-1.num; strcpy(,); for (m=0;m3;m+) sj.scorem=sj-1.scorem; sj-1.num=x.num; strcpy(,); for (m=0;m3;m+) sj-1.scorem=x.scorem; printf(Number Name Score1 Score2 Score3n); for (i=0;i1e-4) max=fabs(f);if (f0.0) f1=0;else f1=1; min=fabs(f);if (f0.0) f2=0;else f2=1; do scanf(%f,&f); if (fabs(f-0.0)1e-4) break; else if (max0.0) f1=0;else f1=1; if (minfabs(f) min=fabs(f);if (f0.0) f2=0;else f2=1; while (1); if (f1=0) printf(abs max: %gn,max); else printf(abs max: %gn,-max); if (f2=0) printf(abs min: %gn,min); else printf(abs min: %gn,-min); C语言上机试题:91题目:编一个程序,它能读入一串浮点数(以为结束标记,不算在内,相邻的两个数用空格隔开),计算并输出这些数的平均值以及这些数中大于、小于平均值的数的个数。(注:可执行文件名为e9_1.exe)程序设计: #include math.h main() float a100,ave=0.0; int ma=0,mi=0,qe=0,i=-1,n; printf(Please enter float number:n); do i+; scanf(%f,&a); while (fabs(a+9999.0)1e-4); n=i; for (i=0;in;i+) ave+=a; ave/=n; for (i=0;in;i+) if (aave) ma+; else qe+; printf( %dn,mi,qe,ma); 2题目:编一个程序,它能读入文件和中的所有整数,并把这些数按从小到大的次序写到文件中,文件中的相邻两个整数都用空格或换行符隔开。(注:可执行文件名为e9_2.exe)程序设计: #include stdio.h main() FILE *fp1,*fp2,*fp3; int a100,n,i,j,k,x; if (fp1=fopen(f1.c,wb)=NULL) printf(f1.c can not open!n); exit(0); x=9999; while (x!=-9999) scanf(%d,&x); if (x!=-9999) fwrite(&x,sizeof(int),1,fp1); fclose(fp1); if (fp2=fopen(f2.c,wb)=NULL) printf(f2.c can not open!n); exit(0); x=9999; while (x!=-9999) scanf(%d,&x); if (x!=-9999) fwrite(&x,sizeof(int),1,fp2); fclose(fp2); if (fp1=fopen(f1.c,rb)=NULL) printf(f1.c can not open!n); exit(0); if (fp2=fopen(f2.c,rb)=NULL) printf(f2.c can not open!n); exit(0); if (fp3=fopen(f3.c,wb)=NULL) printf(f3.c can not open!n); exit(0); i=-1; while (!feof(fp1) fread(&a+i,sizeof(int),1,fp1); fclose(fp1); i-; rewind(fp2); while (!feof(fp2) fread(&a+i,sizeof(int),1,fp2); fclose(fp2); n=i; for (k=1;kn;k+) for (j=n-1,i=0;in-k;i+,j-) if (ajaj-1) x=aj;aj=aj-1;aj-1=x; fwrite(a,sizeof(int),n,fp3); fclose(fp3); if (fp3=fopen(f3.c,rb)=NULL) printf(f3.c can not open!n); exit(0); while (!feof(fp3) fread(&x,sizeof(int),1,fp3); printf(%d ,x); printf(n); 3题目:编一C程序,它能读入一正整数n(n10),再输出如下图形: 1 2 3 4 n 1 2 3 .n 1 2 .n 1 2n 共 n 行.。(注:可执行文件名为e9_3.exe)程序设计: main() int n,i,k,j; printf(Please enter n(10)=); scanf(%d,&n); printf(n); for (i=0;in;i+) printf(n); for (k=0;ki;k+) printf(%c, ); for (j=1;jn+1;j+) printf(%d,j); printf(n); C语言上机试题:10 1题目:编一C程序,它能读入一个正整数n(n 20),再读入二个n*n的矩阵(矩阵元素为整数,输入时相邻的整数用空格隔开),分别判断每个矩阵是否为对称矩阵,若是,相应输出为Yes,否则为No。(注:程序命名为e10_1.exe) 程序设计: main() int n,a2020,b2020,i,j; char fa=y,fb=y; printf(Please enter n(20)=); scanf(%d,&n); printf(n); printf(Please enter a%d%d:n,n,n); for (i=0;in;i+) for (j=0;jn;j+) scanf(%d,&aj); printf(Please enter b%d%d:n,n,n); for (i=0;in;i+) for (j=0;jn;j+) scanf(%d,&bj); for (i=0;in;i+) for (j=0;jn;j+) if (aj!=aj) fa=n; break; for (i=0;in;i+) for (j=0;jn;j+) if (bj!=bj) fb=n; break; if (fa=y) printf(a%d%d yesn,n,n); else printf(a%d%d non,n,n); if (fb=y) printf(b%d%d yesn,n,n); else printf(b%d%d non,n,n); 2题目:设 y(n) = 1 n1时 编一C程序,它能对读入的任意n(n=0且n50),能计算并输出y(n)的值。(注:程序命名为e10_2.exe)程序设计: int y(n1) int n1; if (n1=0 and =a)&(a=A)&(a=Z) n+; i+; printf(n=%dn,n); C语言上机试题:11 1题目:编一C程序,它能读入浮点数x和正整数n,(输入时,x和n之间用空格隔开)计算并输出xn的值。(注:可执行程序命名为e11_1.exe)程序设计: main() float x; double y=1.0; int n,i; printf(Please enter x(float) ang n(int):n); scanf(%f %d,&x,&n); printf(x=%f,n=%dn,x,n); for (i=0;in;i+) y*=x; printf(y=%fn,y); 2题目:编一C程序,它能读入三组a、b、c,a、b、c分别是三个一元二次方程ax2+bx+c=0的系数(float型)。求解这三个方程,若某方程无实根,则输出No solution,否则输出方程的两个实根。 (注:可执行程序命名为e11_2.exe)程序设计: #include math.h main() float a,b,c,q,x1,x2; int i; for (i=0;i3;i+) printf(Plesae enter a,b,c:n); scanf(%f %f %f,&a,&b,&c); q=b*b-4*a*c; if (q0) printf(No solutionn); else if (q=0) printf(x1=x2=%fn,(-b+sqrt(q)/(4*a); else printf(x1=%f,x2=%fn,(-b+sqrt(q)/(4*a),(-b-sqrt(q)/(4*a); 3题目:编一C程序,它能读入一个字符串(可能包含空格字符),计算该字符串中十进制数字的个数并输出。(注:可执行程序命名为e11_3.exe)程序设计: #include stdio.h #include string.h main() char a100; int i,n,k=0; printf(Please enter a string:n); gets(a); n=strlen(a); for (i=0;i=0&a=9) k+; printf(k=%dn,k); C语言上机试题:12 1题目:编一C程序,它能读入一个正整数n(0n26),并能打印如下图形,其中最下层为字母A,最上层为2n-1个n对应的字母。如n=3时,可打印的图形为: CCCCC BBB A (注:可执行程序命名为e12_1.exe)程序设计: main() static char a8080; int n,i,j,k; printf(Please inter n=); scanf(%d,&n); printf(n); for (i=0;in;i+) k=1; for (j=0;jn-i-2) aj=i+65; if (k=0;i-) printf(n); for (j=0;j2*n-1;j+) printf(%c,aj); printf(n); 2题目:编一C程序,在DOS下输入程序名,在紧跟程序名后读入两个无符号短整型整数,该程序能计算出这两个数之和。如输入e12_2.exe 12 88,则输出100。 (注:可执行程序命名为e12_2.exe)程序设计: #include stdlib.h main(argc,argv) int argc; char *argv; int x,y,sum; x=atoi(argv1); y=atoi(argv2); sum=x+y; printf(%d+%d=%dn,x,y,sum); 3题目:编一C程序,它能读入一个字符串(可能包含空格字符),计算该字符串中十进制数字的个数并输出。(注:可执行程序命名为e12_3.exe)程序设计: #include stdio.h #include string.

温馨提示

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

评论

0/150

提交评论