C语言基础编程题_第1页
C语言基础编程题_第2页
C语言基础编程题_第3页
C语言基础编程题_第4页
C语言基础编程题_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

1、5-1 求幂之和   (15分)本题要求编写程序,计算sum=21 + 22 + 23 + cdots + 2nsum=21+22+23+2n。可以调用pow函数求幂。输入格式:输入在一行中给出正整数nn(le10)。输出格式:按照格式“result = 计算结果”输出。输入样例:5输出样例:result = 62#include<stdio.h>#include<math.h>int main()int i,n,sum=0;scanf("%d",&n);for(i=1;i<=n;i+)sum=s

2、um+pow(2,i);printf("result = %dn",sum);return 0;5-2 近似求PI   (15分)本题要求编写程序,根据下式求pi的近似值,直到最后一项小于给定精度eps。fracpi2=1+frac1!3+frac2!3times 5 + frac3!3times 5times 7+ cdots +fraci!3times 5times cdots times (2times i+1)+ cdots2=1+31!+3×52!+3×5×73!+3×5×&

3、#215;(2×i+1)i!+输入格式:输入在一行中给出精度eps,可以使用以下语句来读输入:scanf("%le", &eps);输出格式:在一行内,按照以下格式输出pi的近似值(保留小数点后5位):PI = 近似值输入样例:1E-5输出样例:PI = 3.14158#include<stdio.h>#include<math.h>int main()double a=1,b=3,i=1,j=3;double eps,m=1,sum=0; scanf("%le", &eps);while(m>ep

4、s)m=a/b;sum=sum+m;i=i+1;j=j+2;a=a*i;b=b*j;printf("PI = %.5lfn",2+2*sum);return 0;5-3 判断素数   (15分)输入一个正整数m,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。输入格式:在一行中输入一个正整数m。输出格式:对每一组输入,在一行中输出结果并换行。输入样例:17输出样例:YES#include<stdio.h>#include&

5、lt;math.h>int main()int i,j,n;scanf("%d",&n);j=sqrt(n);for(i=2;i<=j;i+)if(n%i=0) break;if(i>=j && n!=1)printf("YESn");elseprintf("NOn");return 0;5-4 出生年   (15分)以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同

6、”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。输入格式:输入在一行中给出出生年份y和目标年份中不同数字的个数n,其中y在1, 3000之间,n可以是2、或3、或4。注意不足4位的年份要在前面补零,例如公元1年被认为是0001年,有2个不同的数字0和1。输出格式:根据输入,输出x和能达到要求的年份。数字间以1个空格分隔,行首尾不得有多余空格。年份要按4位输出。注意:所谓“n个数字都不相同”是指不同的数字正好是n个。如“2013”被视为满足“4位数字都不同”的条件,但不被视为满足2位或3位数字不同的条件。输入样例1:1988 4输出样例1:25

7、2013输入样例2:1 2输出样例2:0 0001#include<stdio.h>#include<string.h>int main()int y,n,a,b,c,d,f10,l=0;scanf("%d %d",&y,&n);for(int i=y;i<10000;i+)a=i/1000;b=i/100%10;c=i%100/10;d=i%10;memset(f,0,sizeof(f);fa=1;if(fb!=1)fb=1;if(fc!=1)fc=1;if(fd!=1)fd=1;int sum=0;for(int j=0;j

8、<10;j+)sum=sum+fj;if(sum=n&&l=0)printf("%d %04dn",i-y,i);l+;return 0;5-5 计算函数P(n,x)   (10分)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个整数n (n>=0)和一个双精度浮点数x,输出函数p(n,x)的值(保留2位小数)。1 (n=0)x (n=1)(2n-1)p(n-1,x)-(n-1)*p(n-2,x)/n (n>1)例:括号内是说明输入样例:3 (re

9、peat=3) 0 0.9 (n=0,x=0.9)1 -9.8(n=1,x=-9.8)10 1.7(n=10,x=1.7)输出样例:p(0,0.90)=1.00p(1,-9.80)=-9.80p(10,1.70)=3.05· 时间限制:400ms· 内存限制:64MB· 代码长度限制:16kB· 判题程序:系统默认· 作者:王秀· 单位:福州大学窗体顶端题目判定解题程序窗体底端#include<stdio.h>int main()double p(int n,double x);int repeat,ri,n;double

10、 x,result;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri+)scanf("%d %lf",&n,&x);result=p(n,x);printf("p(%d,%.2lf)=%.2lfn",n,x,result);return 0;double p(int n,double x)double t;if(n=0)t=1;else if(n=1)t=x;elset=(2*n-1)*p(n-1,x)-(n-1)*p(n-2,x)/n;return t;5-6

11、0;在数组中查找指定元素   (10分)输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个正整数 n (1<n<=10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,如果找到则输出相应元素的最小下标,否则输出"Not found"。要求定义并调用函数search(list, n, x),它的功能是在数组list中查找元素x,若找到则返回相应元素的最小下标,否则返回-1,函数形参 list 的类型是整型指针,形参n和x的类型是int,函数的类型是int。输出格式

12、语句:printf("index = %dn", );输入输出示例:括号内为说明,无需输入输出输入样例:2 (repeat=2) 3 (n=3)1 2 -62 (x=2)5 (n=5)1 2 2 5 40 (x=0)输出样例:index = 1Not found· 时间限制:400ms· 内存限制:64MB· 代码长度限制:16kB· 判题程序:系统默认· 作者:王秀· 单位:福州大学窗体顶端题目判定窗体底端#include<stdio.h>int main()int search(int list,

13、int n, int x);int n,i,a10,res,x,repeat,index,ri;scanf("%d",&repeat);for(ri=1;ri<=repeat;ri+)scanf("%d",&n);for(i=0;i<n;i+)scanf("%d",&ai);scanf("%d",&x);res=search(a,n,x);if(res!=-1)printf("index = %dn",res);elseprintf("Not

14、 foundn");return 0;int search(int list, int n, int x)int i,q=-1;for(i=0;i<n;i+)if(listi=x)return i;return q;5-7 使用函数的选择法排序   (10分)输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:输入一个正整数 n (1<n<=10),再输入 n 个整数存入数组 a 中,用选择法将数组 a 中的元素按升序排列,最后输出排序后的数组元素。要求定义并调用函数 sort(

15、a,n),它的功能是采用选择排序算法,将数组 a 的前 n 个元素按从小到大的顺序排序,函数形参 a 的类型是整型指针,形参n的类型是int,函数的类型是void。输出格式:数据直接以空格分隔,最后的一个数据后面没有空格。输入输出示例:括号内为说明,无需输入输出输入样例:3 (repeat=3) 4 (n=4) 5 1 7 63 (n=3) 1 2 35 (n=5) 5 4 3 2 1输出样例:After sorted: 1 5 6 7 After sorted: 1 2 3 After sorted: 1 2 3 4 5· 时间限制:400ms· 内存限制:64MB

16、83; 代码长度限制:16kB· 判题程序:系统默认· 作者:王秀· 单位:福州大学窗体顶端题目判定解题程序窗体底端#include <stdio.h>#define MAXN 10void sort( int a, int n );int main()int i,n,x,j;int aMAXN;scanf("%d",&x);for(j=0;j<x;j+)scanf("%d", &n);for( i=0; i<n; i+ )scanf("%d", &ai);

17、sort(a, n);printf("After sorted: ");for(i=0;i<n-1;i+)printf("%d ", ai);printf("%d",ai);printf("n");return 0;void sort(int a,int n)int i,x,j,temp;for(i=0;i<n-1;i+)x=i;for(j=i+1;j<n;j+)if(aj<ax)x=j;if(x!=i)temp=ax;ax=ai;ai=temp;5-8 求组合数 

18、60; (15分)本题要求编写程序,根据公式Cm_n = fracn!m!(n-m)!Cnm=m!(nm)!n!算出从nn个不同元素中取出mm个元素(mle nmn)的组合数。建议定义和调用函数fact(n)计算n!,其中n的类型是int,函数类型是double。输入格式:输入在一行中给出两个正整数mm和nn(mle nmn),以空格分隔。输出格式:按照格式“result = 组合数计算结果”输出。题目保证结果在double类型范围内。输入样例:2 7输出样例:result = 21 · 时间限制:400ms· 内存限制:64MB· 代码长度限

19、制:16kB· 判题程序:系统默认· 作者:颜晖· 单位:浙江大学城市学院窗体顶端题目判定窗体底端#include<stdio.h>int main()double fact(int n);int m,n;double sum;scanf("%d %d",&m,&n);if(n>=m)sum=fact(n)/(fact(m)*fact(n-m);printf("result = %.0lfn",sum);return 0;double fact(int n)int i; double s=1

20、;for(i=1;i<=n;i+)s=s*i;return s;5-9 判断数字字符   (10分)编写函数,判断指定的字符是否是数字字符,如果是函数返回1,否则函数返回0.要求在主调函数中输入该字符,调用函数并输出判断结果。输入格式:在一行中给出1个字符。输出格式:对于给定输入的字符,输出判断结果yes或no。输入样例: 6输出样例: yes输入样例: H输出样例: no· 时间限制:400ms· 内存限制:64MB· 代码长度限制:16kB· 判题程序:系统默认· 作者:韩玫瑰· 单位

21、:济南大学窗体顶端题目判定解题程序窗体底端#include<stdio.h>int main()void panduan(char ch);char ch;scanf("%c",&ch);panduan(ch);return 0;void panduan(char ch)if(ch>='0' && ch<='9')printf("yesn");elseprintf("non");5-10 函数编程-分段函数   (1

22、5分)编写函数,计算下面分段函数的值。输入格式:输入一个实数x的值输出格式:输出y的结果值输入样例:0输出样例:y=-1.000000输入样例:3.5输出样例:y=-8.619337· 时间限制:400ms· 内存限制:64MB· 代码长度限制:16kB· 判题程序:系统默认· 作者:韩玫瑰· 单位:济南大学窗体顶端题目判定解题程序窗体底端#include<stdio.h>#include<math.h>int main()double x,y;scanf("%lf",&x);if(

23、x<=-2)y=-exp(2*x+1)+3;else if(-2<x && x<=3)y=2*x-1;else if(x>3)y=2*log10(3*x+5)-11;printf("y=%lfn",y);return 0;5-11 有理数比较   (10分)本题要求编写程序,比较两个有理数的大小。输入格式:输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。输出格式:在一行中按照“a1/b1 关系符 a2/b2”的格式输出两个有理数的关

24、系。其中“>>”表示“大于”,“<<”表示“小于”,“=”表示“等于”。输入样例1:1/2 3/4输出样例1:1/2 < 3/4输入样例2:6/8 3/4输出样例2:6/8 = 3/4 · 时间限制:400ms· 内存限制:64MB· 代码长度限制:16kB· 判题程序:系统默认· 作者:乔林· 单位:清华大学窗体顶端题目判定窗体底端#include<stdio.h>#include<math.h>int main()double a1,a2,b1,b2;scanf(&q

25、uot;%lf/%lf %lf/%lf",&a1,&b1,&a2,&b2);if(a1/b1>a2/b2)printf("%.0lf/%.0lf > %.0lf/%.0lfn",a1,b1,a2,b2);else if(a1/b1=a2/b2)printf("%.0lf/%.0lf = %.0lf/%.0lfn",a1,b1,a2,b2);else if(a1/b1<a2/b2)printf("%.0lf/%.0lf < %.0lf/%.0lfn",a1,b1,a2,b

26、2);return 0;5-12 通讯录的录入与显示   (10分)通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入NN条记录,并且根据要求显示任意某条记录。输入格式:输入在第一行给出正整数NN(le10);随后NN行,每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日;性别用M表示“男”、F表示“女”;固话和手机均为不超过15位的连续数字,前面有可能出现+。在通讯录记录输入完成后,最后一行

27、给出正整数KK,并且随后给出KK个整数,表示要查询的记录编号(从0到N-1N1顺序编号)。数字间以空格分隔。输出格式:对每一条要查询的记录编号,在一行中按照姓名 固话 手机 性别 生日的格式输出该记录。若要查询的记录不存在,则输出Not Found。输入样例:3Chris 1984/03/10 F +86181779452aoLao 1967/11/30 F 057187951100 +8618618623333QiaoLin 1980/01/01 M 84172333 100862 1 7输出样例:LaoLao 057187951100 +8618618623333

28、 F 1967/11/30Not Found#include<stdio.h>#include<stdlib.h>struct listchar name11;char num17;char phone17;char sex2;char birthday11;struct list p100;int main()int i=0;int j=0,N,K;scanf("%d",&N);for(i=0;i<N;i+) scanf("%s %s %c %s %s",&,&pi.birthday,&pi.sex,&pi.num,&pi.phone); scanf ("%d", &K);int number;for (i=0;i<K;i+)scanf ("%d",&number);if (number < N && number>=0) printf("%s

温馨提示

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

评论

0/150

提交评论