1、C语言基础编程题 标准化管理处编码BBX968T-XBB8968-NNJ668-MM9NC语言基础编程题5-1求幂之和(15分)本题要求编写程序,计算sum=21 + 22 + 23 + cdots + 2nsum=21+22+23+2n。可以调用pow函数求幂。输入格式:输入在一行中给出正整数nn(le10)。输出格式:按照格式“result = 计算结果”输出。输入样例:5输出样例:result = 62#include#includeint main() int i,n,sum=0; scanf(%d,&n); for(i=1;i=n;i+) sum=sum+pow(2,i); prin
2、tf(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!+352!+3573!+35(2i+1)i!+输入格式:输入在一行中给出精度eps,可以使用以下语句来读输入:scanf(%le, &eps);输出格式:在一行内,按照以下格式输出pi的近似值
3、(保留小数点后5位):PI = 近似值输入样例:1E-5输出样例:PI = #include#includeint main() double a=1,b=3,i=1,j=3; double eps,m=1,sum=0; scanf(%le, &eps); while(meps) 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是素数)。输入格
4、式:在一行中输入一个正整数m。输出格式:对每一组输入,在一行中输出结果并换行。输入样例:17输出样例:YES#include#includeint main()int i,j,n;scanf(%d,&n);j=sqrt(n);for(i=2;i=j & n!=1)printf(YESn);elseprintf(NOn);return 0;5-4出生年(15分)以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要求,自动填充“我出生于y年,直到x岁才遇到n个数字都不相同的年份”这句话。输
5、入格式:输入在一行中给出出生年份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 2013输入样例2:1 2输出样例2:0 0001#include#includeint main(
6、)int y,n,a,b,c,d,f10,l=0;scanf(%d %d,&y,&n);for(int i=y;i10000;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;j10;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 (0repeat
7、=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 (n1)例:括号内是说明输入样例:3 (repeat=3) 0 (n=0,x=1 (n=1,x=10 (n=10,x=输出样例:p(0,=p(1,=p(10,= 时间限制:400ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:王秀 单位:福州大学题目判定解题程序#includeint main()double p(int n,double x);int repeat,ri,n;double x,result
8、;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在数组中查找指定元素(10分)输入一个正整数repeat (0repeat10),做repeat次下列运算:输入一个正整数 n (
9、1n=10),然后输入n个整数存入数组a中,再输入一个整数x,在数组a中查找x,如果找到则输出相应元素的最小下标,否则输出Not found。要求定义并调用函数search(list, n, x),它的功能是在数组list中查找元素x,若找到则返回相应元素的最小下标,否则返回-1,函数形参 list 的类型是整型指针,形参n和x的类型是int,函数的类型是int。输出格式语句:printf(index = %dn, );输入输出示例:括号内为说明,无需输入输出输入样例:2 (repeat=2) 3 (n=3)1 2 -6 2 (x=2)5 (n=5)1 2 2 5 40 (x=0)输出样例:i
10、ndex = 1Not found 时间限制:400ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:王秀 单位:福州大学题目判定#includeint main() int search(int list, 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;in;i+) scanf(%d,&ai); scanf(%d,&x); res=search(a,n,x); if(res!=-1)
11、printf(index = %dn,res); else printf(Not foundn); return 0;int search(int list, int n, int x) int i,q=-1; for(i=0;in;i+) if(listi=x) return i; return q;5-7使用函数的选择法排序(10分)输入一个正整数 repeat (0repeat10),做 repeat 次下列运算:输入一个正整数 n (1n=10),再输入 n 个整数存入数组 a 中,用选择法将数组 a 中的元素按升序排列,最后输出排序后的数组元素。要求定义并调用函数 sort(a,n)
12、,它的功能是采用选择排序算法,将数组 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 代码长度限制:16kB 判题程序:系
13、统默认 作者:王秀 单位:福州大学题目判定解题程序#include #define MAXN 10void sort( int a, int n );int main()int i,n,x,j;int aMAXN;scanf(%d,&x);for(j=0;jx;j+)scanf(%d, &n);for( i=0; in; i+ )scanf(%d, &ai);sort(a, n);printf(After sorted: );for(i=0;in-1;i+)printf(%d , ai);printf(%d,ai);printf(n);return 0;void sort(int a,int
14、n)int i,x,j,temp;for(i=0;in-1;i+)x=i;for(j=i+1;jn;j+)if(ajax)x=j;if(x!=i)temp=ax;ax=ai;ai=temp;5-8求组合数(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 = 组合数计算结果”输出。题
15、目保证结果在double类型范围内。输入样例:2 7输出样例:result = 21 时间限制:400ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:颜晖 单位:浙江大学城市学院题目判定#includeint 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=
16、1; 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 判题程序:系统默认 作者:韩玫瑰 单位:济南大学题目判定解题程序#includeint main() void panduan(char ch); char
17、ch; scanf(%c,&ch); panduan(ch); return 0;void panduan(char ch) if(ch=0 & ch=9) printf(yesn); else printf(non);5-10函数编程-分段函数(15分)编写函数,计算下面分段函数的值。输入格式:输入一个实数x的值输出格式:输出y的结果值输入样例:0输出样例:y=输入样例:输出样例:y= 时间限制:400ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:韩玫瑰 单位:济南大学题目判定解题程序#include#includeint main() double x,y;
18、scanf(%lf,&x); if(x=-2) y=-exp(2*x+1)+3; else if(-2x & x3) y=2*log10(3*x+5)-11; printf(y=%lfn,y); return 0;5-11有理数比较(10分)本题要求编写程序,比较两个有理数的大小。输入格式:输入在一行中按照“a1/b1 a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。输出格式:在一行中按照“a1/b1 关系符 a2/b2”的格式输出两个有理数的关系。其中“”表示“大于”,“”表示“小于”,“=”表示“等于”。输入样例1:1/2 3/4输出样例1:1/2 3/4
19、输入样例2:6/8 3/4输出样例2:6/8 = 3/4 时间限制:400ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:乔林 单位:清华大学题目判定#include#includeint main() double a1,a2,b1,b2; scanf(%lf/%lf %lf/%lf,&a1,&b1,&a2,&b2); if(a1/b1a2/b2) printf(%.0lf/%.0lf %.0lf/%.0lfn,a1,b1,a2,b2); else if(a1/b1=a2/b2) printf(%.0lf/%.0lf = %.0lf/%.0lfn,a1,b1,a2
20、,b2); else if(a1/b1a2/b2) printf(%.0lf/%.0lf %.0lf/%.0lfn,a1,b1,a2,b2); return 0;5-12通讯录的录入与显示(10分)通讯录中的一条记录包含下述基本信息:朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。 本题要求编写程序,录入NN条记录,并且根据要求显示任意某条记录。输入格式:输入在第一行给出正整数NN(le10);随后NN行,每行按照格式姓名 生日 性别 固话 手机给出一条记录。其中姓名是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日;性别用M表示“男”、F表示“女”
21、;固话和手机均为不超过15位的连续数字,前面有可能出现+。在通讯录记录输入完成后,最后一行给出正整数KK,并且随后给出KK个整数,表示要查询的记录编号(从0到N-1N1顺序编号)。数字间以空格分隔。输出格式:对每一条要查询的记录编号,在一行中按照姓名 固话 手机 性别 生日的格式输出该记录。若要查询的记录不存在,则输出Not Found。输入样例:3Chris 1984/03/10 F +452 LaoLao 1967/11/30 F 0100 +86QiaoLin 1980/01/01 M 100862 1 7输出样例:LaoLao 0100 +86 F 1967/11/30Not Foun
22、d#include#includestruct 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;iN;i+) scanf(%s %s %c %s %s,&pi.name,&pi.birthday,&pi.sex,&pi.num,&pi.phone); scanf (%d, &K);int number;for (i=0;iK;i+)scanf (%d,&number);if (
23、number =0) printf(%s %s %s %s %sn,pnumber.name,pnumber.num,pnumber.phone,pnumber.sex,pnumber.birthday); else printf (Not Foundn); return 0;5-13查找单价最高和最低的书籍(10分)编写程序,从键盘输入 n (n10)本书的名称和定价并存入结构数组中,查找并输出其中定价最高和最低的书的名称和定价。输出格式语句:printf(highest price: %.1f, %sn, );printf(lowest price: %.1f, %sn,);输入输出示例:
24、括号内为说明,无需输入输出输入样例:3 (n=3)Programming in CProgramming in VBProgramming in Delphi25输出样例:highest price: , Programming in Delphi lowest price: , Programming in VB#includestruct bookchar a100;double b;int main()int i,j,n;char k;struct book s100,temp;scanf(%d, &n);for(i=0;in;i+)scanf(%c,&k);gets(si.a);scanf(%lf,&si.b);for(i=0;in-1;i+)for(j=i+1;jsi.b) temp = si;si = sj;sj = temp;printf(highest price: %, %sn,s0.b,s0.a);printf(lowest price: %, %sn,sn-1.b,sn-1.a);return 0;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1