C语言基础编程题
This model paper was revised by the Standardization Office on December 10, 2020
5-1求幂之和(15分)
本题要求编写程序,计算sum=2^1 + 2^2 + 2^3 + \cdots + 2^n sum=21+22+23++2n。可以调用pow函数求幂。
输入格式:
输入在一行中给出正整数n n(\le≤10)。
输出格式:
按照格式“result = 计算结果”输出。
输入样例:
输出样例:
#include<>
#include<>
int main()
{
int i,n,sum=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
sum=sum+pow(2,i);
}
printf("result = %d\n",sum);
return 0;
}
5-2近似求PI(15分)
本题要求编写程序,根据下式求\piπ的近似值,直到最后一项小于给定精度eps。
\frac{\pi}{2}=1+\frac{1!}{3}+\frac{2!}{3\times 5} + \frac{3!}{3\times 5\times 7}+ \cdots +\frac{i!}{3\times 5\times \cdots \times (2\times i+1)}+
\cdots2π=1+31!+3×52!+3×5×73!++3×5××(2×i+1)i!+
输入格式:
输入在一行中给出精度eps,可以使用以下语句来读输入:
输出格式:
在一行内,按照以下格式输出\piπ的近似值(保留小数点后5位):
输入样例:
输出样例:
#include<>
#include<>
int main()
{
double a=1,b=3,i=1,j=3;
double eps,m=1,sum=0;
scanf("%le", &eps);
while(m>eps)
{
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);
return 0;
}
5-3判断素数(15分)
输入一个正整数m,如果它是素数,输出"YES",否则,输出"NO"(素数就是只能被1和自身整除的正整数,1不是素数,2是素数)。
输入格式:
在一行中输入一个正整数m。
输出格式:
对每一组输入,在一行中输出结果并换行。
输入样例:
输出样例:
#include<>
#include<>
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("YES\n"); else
printf("NO\n");
return 0;
}
5-4出生年(15分)
以上是新浪微博中一奇葩贴:“我出生于1988年,直到25岁才遇到4个数字都不相同的年份。”也就是说,直到2013年才达到“4个数字都不相同”的要求。本题请你根据要
输出样例1:
输入样例2:
输出样例2:
#include<>
#include<>
int main()
{
int y,n,a,b,c,d,f[10],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)); f[a]=1;
if(f[b]!=1)
f[b]=1;
if(f[c]!=1)
f[c]=1;
if(f[d]!=1)
f[d]=1;
int sum=0;
for(int j=0;j<10;j++) {
sum=sum+f[j];
}
if(sum==n&&l==0)
{
printf("%d %04d\n",i-y,i);
l++;
}
}
return 0;
}
5-5计算函数P(n,x)(10分)
输入一个正整数repeat (0 输入一个整数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) 例:括号内是说明 输入样例: 1 (n=1,x= 10 (n=10,x=输出样例: p(0,= p(1,= p(10,= 时间限制:400ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:王秀 单位:福州大学 题目判定 解题程序 #include<> int main() { double p(int n,double x); int repeat,ri,n; double x,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); } return 0; } double p(int n,double x) { double t; if(n==0) t=1; else if(n==1) t=x; else t=((2*n-1)*p(n-1,x)-(n-1)*p(n-2,x))/n; return t; } 5-6在数组中查找指定元素(10分) 输入一个正整数repeat (0 输入一个正整数 n (1 要求定义并调用函数search(list, n, x),它的功能是在数组list中查找元素x,若找到则返回相应元素的最小下标,否则返回-1,函数形参 list 的类型是整型指针,形参n 和x的类型是int,函数的类型是int。 输出格式语句:printf("index = %d\n", ); 输入输出示例:括号内为说明,无需输入输出 输入样例: 2 (repeat=2) 3 (n=3) 1 2 -6 2 (x=2) 5 (n=5) 1 2 2 5 4 0 (x=0) 输出样例: index = 1 Not found 时间限制:400ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:王秀 单位:福州大学 #include<> int main() { int search(int list[], int n, int x); int n,i,a[10],res,x,repeat,index,ri; scanf("%d",&repeat); for(ri=1;ri<=repeat;ri++) { scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); scanf("%d",&x); res=search(a,n,x); if(res!=-1) printf("index = %d\n",res); else printf("Not found\n"); } return 0; } int search(int list[], int n, int x) { int i,q=-1; for(i=0;i { if(list[i]==x) { return i; } } return q; } 5-7使用函数的选择法排序(10分) 输入一个正整数 repeat (0 输入一个正整数 n (1 要求定义并调用函数 sort(a,n),它的功能是采用选择排序算法,将数组 a 的前 n 个元素按从小到大的顺序排序,函数形参 a 的类型是整型指针,形参n的类型是int,函数的类型是void。 输出格式:数据直接以空格分隔,最后的一个数据后面没有空格。 输入输出示例:括号内为说明,无需输入输出 输入样例: 输出样例: After sorted: 1 5 6 7 After sorted: 1 2 3 After sorted: 1 2 3 4 5 时间限制:400ms 内存限制:64MB 代码长度限制:16kB 判题程序:系统默认 作者:王秀 单位:福州大学 题目判定 解题程序 #include <> #define MAXN 10 void sort( int a[], int n ); int main()