浙江大学C语言上机题及答案.docx
- 文档编号:7279944
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:53
- 大小:24.67KB
浙江大学C语言上机题及答案.docx
《浙江大学C语言上机题及答案.docx》由会员分享,可在线阅读,更多相关《浙江大学C语言上机题及答案.docx(53页珍藏版)》请在冰豆网上搜索。
浙江大学C语言上机题及答案
c语言程序设计题目及答案
40021程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat(0 输入1个正整数n,计算s的前n项的和(保留4位小数)。 s=1+1/2! +....+1/n! 例: 括号内是说明 输入: 2(repeat=2) 2(n=2) 10(n=10) 输出: 1.5000 1.7183 #include"stdio.h" intmain() { intri,repeat; inti,n; floats,t; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d",&n); /*---------*/ printf("%0.4f\n",s); } } 40022程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=1000),输出m和n之间所有满足各位数字的立方和等于它本身的数。 输出语句: printf("%d\n",i); 例: 括号内是说明 输入: 2(repeat=2) 100400(m=100,n=400) 1100(m=1,n=100) 输出: 153(1*1*1+5*5*5+3*3*3=153) 370(3*3*3+7*7*7=370) 371(3*3*3+7*7*7+1*1*1=371) 1 #include"stdio.h" intmain() { intri,repeat; inti,digit,m,n,number,sum; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d%d",&m,&n); /*---------*/ } } 40023程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=500),统计并输出m和n之间的素数的个数以及这些素数的和。 例: 括号内是说明 输入: 3(repeat=2) 110(m=1,n=10) 2035(m=20,n=35) 1416(m=14,n=16) 输出: count=4,sum=17(1到10之间有4个素数: 2,3,5,7) count=3,sum=83(20到35之间有3个素数: 23,29,31) count=0,sum=0(14到16之间没有素数) #include"stdio.h" #include"math.h" intmain() { intri,repeat; intcount,digit,i,j,k,m,n,sum; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d%d",&m,&n); /*---------*/ printf("count=%d,sum=%d\n",count,sum); } } 40031程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入一行字符,统计其中单词的个数。 各单词之间用空格分隔,空格数可以是多个。 例: 括号内是说明 输入 2(repeat=2) Reoldbuildingroom123 Programmingisfun 输出 4 3 #include intmain() { intri,repeat; intcount,word; charc; scanf("%d",&repeat); getchar(); for(ri=1;ri<=repeat;ri++){ c=getchar(); /*---------*/ printf("%d\n",count); } } 40032程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入一个整数,从高位开始逐位输出它的各位数字。 输出语句: printf("%-2d",digit); 例: 括号内是说明 输入 3(repeat=3) 123456 -600 8 输出 123456 600 8 #include intmain() { intri,repeat; intdigit; longin,temp,pow; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%ld",&in); /*---------*/ printf("\n"); } } 40033程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 程序模拟简单运算器的工作: 输入一个算式(没有空格),遇等号"="说明输入结束,输出结果。 假设计算器只能进行加减乘除运算,运算数和结果都是整数,4种运算符的优先级相同,按从左到右的顺序计算。 例: 括号内是说明 输入 2(repeat=2) 15+2/3= 1+2*10-10/2= 输出 5 10 #include intmain() { intri,repeat; intop1,op2,res; charoperator; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d",&op1); operator=getchar(); /*---------*/ printf("%d\n",res); } } 50001程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入1个正整数n,计算s的前n项的和(保留4位小数)。 s=1+1/2! +....+1/n! 要求定义并调用函数fact(n)计算n的阶乘。 例: 括号内是说明 输入: 2(repeat=2) 2(n=2) 10(n=10) 输出: 1.5000 1.7183 #include"stdio.h" intmain() { intri,repeat; inti,n; doubles; doublefact(intn); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d",&n); /*---------*/ printf("%0.4f\n",s); } } /*---------*/ 50002程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入2个正整数a和n,求a+aa+aaa+aa…a(n个a)之和。 要求定义并调用函数fn(a,n),它的功能是返回aa…a(n个a)。 例如,fn(3,2)的返回值是33。 例: 括号内是说明 输入 2(repeat=2) 23(a=2,n=3) 85(a=8,n=5) 输出 246(2+22+222) 98760(8+88+888+8888+88888) #include voidmain() { intri,repeat; inti,n; longa,sn; longfn(longa,intn); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%ld%d",&a,&n); /*---------*/ printf("%ld\n",sn); } } /*---------*/ 50003程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 读入1个整数,统计并输出该数中2的个数。 要求定义并调用函数countdigit(number,digit),它的功能是统计整数number中数字digit的个数。 例如,countdigit(10090,0)的返回值是3。 例: 括号内是说明 输入: 3(repeat=3) -21902 2 345543 输出: count=2(-21902中有2个2) count=1(有1个2) count=0(345543中没有2) #include"stdio.h" intmain() { intri,repeat; intcount; longin; intcountdigit(longnumber,intdigit); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%ld",&in); /*---------*/ printf("count=%d\n",count); } } /*---------*/ 50004程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入一个正整数n,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。 要求定义并调用函数prime(m)判断m是否为素数。 例: 括号内是说明 输入 4(repeat=4) 12917 输出 NO(1不是素数) YES(2是素数) NO(9不是素数) YES(17是素数) #include #include intmain() { intri,repeat; intflag,n; intprime(intm); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d",&n); /*---------*/ if(flag)printf("YES\n"); elseprintf("NO\n"); } } /*---------*/ 50005程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=500),统计并输出m和n之间的素数的个数以及这些素数的和(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。 要求定义并调用函数prime(m)判断m是否为素数。 例: 括号内是说明 输入: 3(repeat=3) 110(m=1,n=10) 2035(m=20,n=35) 1416(m=14,n=16) 输出: count=4,sum=17(1到10之间有4个素数: 2,3,5,7) count=3,sum=83(20到35之间有3个素数: 23,29,31) count=0,sum=0(14到16之间没有素数) #include"stdio.h" #include"math.h" intmain() { intri,repeat; intcount,i,n,sum; intprime(intm); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d%d",&m,&n); /*---------*/ printf("count=%d,sum=%d\n",count,sum); } } /*---------*/ ******50006程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=10000),输出m和n之间所有的Fibonacci数。 Fibonacci序列(第1项起): 1123581321...... 要求定义并调用函数fib(n),它的功能是返回第n项Fibonacci数。 例如,fib(7)的返回值是13。 输出语句: printf("%d",f); 例: 括号内是说明 输入: 3(repeat=3) 110(m=1,n=10) 20100(m=20,n=100) 10006000(m=1000,n=6000) 输出: 112358(1到10之间的Fibonacci数) 21345589(20到100之间的Fibonacci数) 159725844181(1000到6000之间的Fibonacci数) #include"stdio.h" #include"math.h" intmain() { intri,repeat; inti,m,n; longf; longfib(intn); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d%d",&m,&n); /*---------*/ printf("\n"); } } /*---------*/ 50007程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=1000),输出m到n之间的所有完数(完数就是因子和与它本身相等的数)。 要求定义并调用函数factorsum(number),它的功能是返回number的因子和。 例如,digitsum(12)的返回值是16(1+2+3+4+6)。 输出语句: printf("%d",i); 例: 括号内是说明 输入: 2(repeat=2) 20500(m=100,n=400) 1100(m=1,n=100) 输出: 28496 1628 #include"stdio.h" intmain() { intri,repeat; inti,m,n; longfactorsum(intnumber); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d%d",&m,&n); /*---------*/for(i=m;i<=n;i++){ if(factorsum(i)==i) printf("%ld",factorsum(i));} printf("\n"); } } /*---------*/longfactorsum(intnumber){ inti; longresult=0; if(number==1)result=1; else for(i=1;i<=number/2;i++){ if(number%i==0) result=result+i;} returnresult;} 50008程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入2个正整数m和n(1<=m,n<=1000),输出m到n之间的所有满足各位数字的立方和等于它本身的数。 要求定义并调用函数is(number)判断number的各位数字之立方和是否等于它本身。 输出语句: printf("%d",i); 例: 括号内是说明 输入: 2(repeat=2) 100400(m=100,n=400) 1100(m=1,n=100) 输出: 153370371(1*1*1+5*5*5+3*3*3=153;3*3*3+7*7*7=370;3*3*3+7*7*7+1*1*1=371) 1 #include"stdio.h" intmain() { intri,repeat; inti,m,n; intis(intnumber); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d%d",&m,&n); /*---------*/for(i=m;i<=n;i++) if(is(i)) printf("%d",i); printf("\n"); } } /*---------*/ intis(intnumber){ intresult,t,j,sum; j=number; result=0;sum=0; while(number>0){ t=number%10; sum=sum+t*t*t; number=number/10;} if(sum==j) result=1; returnresult;} 50009程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入一个整数,将它逆序输出。 要求定义并调用函数reverse(number),它的功能是返回number的逆序数。 例如reverse(12345)的返回值是54321。 例: 括号内是说明 输入 4(repeat=4) 123456-100-299 输出 654321 -1 -1 99 #include intmain() { intri,repeat; longin,res; longreverse(longnumber); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%ld",&in); /*---------*/ printf("%ld\n",res); } } /*---------*/ 50010程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入1个正整数n,将其转换为二进制后输出。 要求定义并调用函数dectobin(n),它的功能是输出n的二进制。 例如,调用dectobin(10),输出1010。 输出语句: printf("%d"); 例: 括号内是说明 输入: 2(repeat=2) 15(n=2) 100(n=10) 输出: 1111 1100100 #include"stdio.h" intmain() { intri,repeat; inti,n; voiddectobin(intn); scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d",&n); /*---------*/dectobin(n); printf("\n"); } } /*---------*/voiddectobin(intn){ inti,j,a[20]; for(i=0;n>0;i++){ a[i]=n%2; n=n/2;} for(j=i-1;j>=0;j--) printf("%d",a[j]);} 60001程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入一个正整数n(1 例: 括号内是说明 输入 2(repeat=2) 312-6 5122540 输出 aver=-1.00 aver=4.60 #include intmain() { intri,repeat; inti,n,sum; floataver; inta[10]; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); /*---------*/ printf("aver=%.2f\n",aver); } } 60002程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入一个正整数n(1 例: 括号内是说明 输入 3(repeat=3) 3164 31081 512540 输出 max=6,index=1(最大值6的下标是1) max=10,index=0(最大值10的下标是0) max=5,index=2(最大值5的下标是2) #include intmain() { intri,repeat; inti,index,n,max; inta[10]; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++){ scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); /*---------*/max=a[0];index=0; for(i=1;i if(a[i]>=max){ max=a[i]; index=i;} printf("max=%d,index=%d\n",a[index],index); } } 60003程序填空,不要改变与输入输出有关的语句。 输入一个正整数repeat(0 输入一个正整数n(1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙江大学 语言 上机 答案