C语言基础编程题
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
输入样例:
3(repeat=3) 4(n=4) 5176 3(n=3) 123 5(n=5) 54321
输出样例:
Aftersorted:1567 Aftersorted:123 Aftersorted:12345
•
时间限制:400ms
•
内存限制:64MB
•
代码长度限制:16kB
•wenku.baidu.com
判题程序:系统默认
输入格式:
在一行中输入一个正整数 m。
输出格式:
对每一组输入,在一行中输出结果并换行。
输入样例:
17
输出样例:
YES
#include<> #include<> intmain() { inti,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("YES\n"); else printf("NO\n"); return0; }
输入格式:
输入在一行中给出精度 eps,可以使用以下语句来读输入:
scanf("%le",&eps);
输出格式:
在一行内,按照以下格式输出\piπ 的近似值(保留小数点后 5 位):
PI=近似值
输入样例:
1E-5
输出样例:
PI=
#include<> #include<> intmain() {
doublea=1,b=3,i=1,j=3; doubleeps,m=1,sum=0; scanf("%le",&eps); while(m>eps) {
scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); scanf("%d",&x); res=search(a,n,x); if(res!=-1)
printf("index=%d\n",res); else
printf("Notfound\n"); } return0; } intsearch(intlist[],intn,intx) { inti,q=-1; for(i=0;i<n;i++) {
int,函数的类型是 int。
输出格式语句:printf("index=%d\n",);
输入输出示例:括号内为说明,无需输入输出
输入样例:
2(repeat=2) 3(n=3) 12-6 2(x=2) 5(n=5) 12254 0(x=0)
输出样例:
index=1 Notfound
•
时间限制:400ms
•
作者:颜晖
•
单位:浙江大学城市学院
题目判定
#include<> intmain() {
doublefact(intn); intm,n; doublesum; scanf("%d%d",&m,&n); if(n>=m) sum=fact(n)/(fact(m)*fact(n-m));
printf("result=%.0lf\n",sum); return0; } doublefact(intn) { inti; doubles=1; for(i=1;i<=n;i++) {
m=a/b; sum=sum+m; i=i+1; j=j+2; a=a*i; b=b*j; } printf("PI=%.5lf\n",2+2*sum);
return0; }
5-3 判断素数(15 分)
输入一个正整数 m,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被 1 和
自身整除的正整数,1 不是素数,2 是素数)。
19884
输出样例 1:
252013
输入样例 2:
12
输出样例 2:
00001
#include<> #include<> intmain() { inty,n,a,b,c,d,f[10],l=0; scanf("%d%d",&y,&n); for(inti=y;i<10000;i++) { a=i/1000; b=i/100%10; c=i%100/10; d=i%10; memset(f,0,sizeof(f)); f[a]=1; if(f[b]!=1) f[b]=1; if(f[c]!=1) f[c]=1; if(f[d]!=1) f[d]=1; intsum=0; for(intj=0;j<10;j++) { sum=sum+f[j]; } if(sum==n&&l==0) { printf("%d%04d\n",i-y,i); l++; } } return0; }
doublep(intn,doublex) { doublet; if(n==0) t=1; elseif(n==1) t=x; else t=((2*n-1)*p(n-1,x)-(n-1)*p(n-2,x))/n; returnt; } 5-6 在数组中查找指定元素(10 分)
输入一个正整数 repeat(0<repeat<10),做 repeat 次下列运算:
#include<> #include<> intmain() {
inti,n,sum=0; scanf("%d",&n); for(i=1;i<=n;i++) {
sum=sum+pow(2,i); } printf("result=%d\n",sum); return0; }
5-2 近似求 PI(15 分) 本题要求编写程序,根据下式求\piπ 的近似值,直到最后一项小于给定精度 eps。
输入一个正整数 n(1<n<=10),然后输入 n 个整数存入数组 a 中,再输入一个整数 x,在
数组 a 中查找 x,如果找到则输出相应元素的最小下标,否则输出"Notfound"。
要求定义并调用函数 search(list,n,x),它的功能是在数组 list 中查找元素 x,若找到则返回
相应元素的最小下标,否则返回-1,函数形参 list 的类型是整型指针,形参 n 和 x 的类型是
\frac{\pi}{2}=1+\frac{1!}{3}+\frac{2!}{3\times5}+\frac{3!}{3\times5\times7}+\ cdots+\frac{i!}{3\times5\times\cdots\times(2\timesi+1)}+\cdots2π=1+31!+3×52!+3×5 ×73!++3×5××(2×i+1)i!+
if(list[i]==x) {
returni; } } returnq; }
5-7 使用函数的选择法排序(10 分)
输入一个正整数 repeat(0<repeat<10),做 repeat 次下列运算: 输入一个正整数 n(1<n<=10),再输入 n 个整数存入数组 a 中,用选择法将数组 a 中的元 素按升序排列,最后输出排序后的数组元素。 要求定义并调用函数 sort(a,n),它的功能是采用选择排序算法,将数组 a 的前 n 个元素 按从小到大的顺序排序,函数形参 a 的类型是整型指针,形参 n 的类型是 int,函数的类型 是 void。 输出格式:数据直接以空格分隔,最后的一个数据后面没有空格。 输入输出示例:括号内为说明,无需输入输出
5-4 出生年(15 分)
以上是新浪微博中一奇葩贴:“我出生于 1988 年,直到 25 岁才遇到 4 个数字都不相同的 年份。”也就是说,直到 2013 年才达到“4 个数字都不相同”的要求。本题请你根据要求, 自动填充“我出生于 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:
5-1
求幂之和(15
分)
本题要求编写程序,计算 sum=2^1+2^2+2^3+\cdots+2^nsum=21+22+23++2n。可以调
用 pow 函数求幂。
输入格式:
输入在一行中给出正整数 nn(\le≤10)。
输出格式:
按照格式“result=计算结果”输出。
输入样例:
5
输出样例:
result=62
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
(repeat=3)
(n=0,x=
(n=1,x=
(n=10,x=
输出样例:
p(0,= p(1,= p(10,=
•
时间限制:400ms
•
内存限制:64MB
•
代码长度限制:16kB
•
判题程序:系统默认
•
作者:王秀
•
单位:福州大学
题目判定
解题程序
#include<> intmain() { doublep(intn,doublex); intrepeat,ri,n; doublex,result; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d%lf",&n,&x); result=p(n,x); printf("p(%d,%.2lf)=%.2lf\n",n,x,result); } return0; }
s=s*i; } returns; }
5-9 判断数字字符(10 分)
编写函数,判断指定的字符是否是数字字符,如果是函数返回 1,否则函数返回 0.要求在主
输入格式:
输入在一行中给出两个正整数 mm 和 nn(m\lenm≤n),以空格分隔。
输出格式:
按照格式“result=组合数计算结果”输出。题目保证结果在 double 类型范围内。
输入样例:
27
输出样例:
result=21
•
时间限制:400ms
•
内存限制:64MB
•
代码长度限制:16kB
•
判题程序:系统默认
•
内存限制:64MB
•
代码长度限制:16kB
•
判题程序:系统默认
•
作者:王秀
•
单位:福州大学
题目判定
#include<> intmain() {
intsearch(intlist[],intn,intx); intn,i,a[10],res,x,repeat,index,ri; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) {
•
作者:王秀
•
单位:福州大学
题目判定
解题程序
#include<> #defineMAXN10 voidsort(inta[],intn); intmain() { inti,n,x,j; inta[MAXN]; scanf("%d",&x); for(j=0;j<x;j++) { scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,n); printf("Aftersorted:"); for(i=0;i<n-1;i++) printf("%d",a[i]); printf("%d",a[i]); printf("\n"); } return0; } voidsort(inta[],intn) { inti,x,j,temp; for(i=0;i<n-1;i++) { x=i; for(j=i+1;j<n;j++) if(a[j]<a[x]) x=j; if(x!=i) { temp=a[x]; a[x]=a[i]; a[i]=temp; } } }
5-8 求组合数(15 分)
本题要求编写程序,根据公式 C^{m}_{n}=\frac{n!}{m!(n-m)!}Cnm=m!(nm)!n!算出从 nn 个不同元素中取出 mm 个元素(m\lenm≤n)的组合数。
建议定义和调用函数 fact(n)计算 n!,其中 n 的类型是 int,函数类型是 double。