C语言基础编程题.docx

上传人:b****8 文档编号:30057570 上传时间:2023-08-04 格式:DOCX 页数:24 大小:94.73KB
下载 相关 举报
C语言基础编程题.docx_第1页
第1页 / 共24页
C语言基础编程题.docx_第2页
第2页 / 共24页
C语言基础编程题.docx_第3页
第3页 / 共24页
C语言基础编程题.docx_第4页
第4页 / 共24页
C语言基础编程题.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

C语言基础编程题.docx

《C语言基础编程题.docx》由会员分享,可在线阅读,更多相关《C语言基础编程题.docx(24页珍藏版)》请在冰豆网上搜索。

C语言基础编程题.docx

C语言基础编程题

 

C语言基础编程题(总16页)

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

#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。

\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!

​+⋯

输入格式:

输入在一行中给出精度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)

{

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是素数)。

输入格式:

在一行中输入一个正整数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;

}

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:

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;

}

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)

例:

括号内是说明

输入样例:

3(repeat=3)

0(n=0,x=

1(n=1,x=

10(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;

}

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

输入一个正整数n(1

要求定义并调用函数search(list,n,x),它的功能是在数组list中查找元素x,若找到则返回相应元素的最小下标,否则返回-1,函数形参list的类型是整型指针,形参n和x的类型是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

内存限制:

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++)

{

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("Notfound\n");

}

return0;

}

intsearch(intlist[],intn,intx)

{

inti,q=-1;

for(i=0;i

{

if(list[i]==x)

{

returni;

}

}

returnq;

}

5-7 使用函数的选择法排序   (10分)

输入一个正整数repeat(0

输入一个正整数n(1

要求定义并调用函数sort(a,n),它的功能是采用选择排序算法,将数组a的前n个元素按从小到大的顺序排序,函数形参a的类型是整型指针,形参n的类型是int,函数的类型是void。

输出格式:

数据直接以空格分隔,最后的一个数据后面没有空格。

输入输出示例:

括号内为说明,无需输入输出

输入样例:

3(repeat=3)

4(n=4)

5176

3(n=3)

123

5(n=5)

54321

输出样例:

Aftersorted:

1567

Aftersorted:

123

Aftersorted:

12345

时间限制:

400ms

内存限制:

64MB

代码长度限制:

16kB

判题程序:

系统默认

作者:

王秀

单位:

福州大学

窗体顶端

题目判定

解题程序

窗体底端

#include<>

#defineMAXN10

voidsort(inta[],intn);

intmain()

{

inti,n,x,j;

inta[MAXN];

scanf("%d",&x);

for(j=0;j

{

scanf("%d",&n);

for(i=0;i

scanf("%d",&a[i]);

sort(a,n);

printf("Aftersorted:

");

for(i=0;i

printf("%d",a[i]);

printf("%d",a[i]);

printf("\n");

}

return0;

}

voidsort(inta[],intn)

{

inti,x,j,temp;

for(i=0;i

{

x=i;

for(j=i+1;j

if(a[j]

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!

(n−m)!

n!

​算出从nn个不同元素中取出mm个元素(m\lenm≤n)的组合数。

建议定义和调用函数fact(n)计算n!

,其中n的类型是int,函数类型是double。

输入格式:

输入在一行中给出两个正整数mm和nn(m\lenm≤n),以空格分隔。

输出格式:

按照格式“result=组合数计算结果”输出。

题目保证结果在double类型范围内。

输入样例:

27

输出样例:

result=21

 

时间限制:

400ms

内存限制:

64MB

代码长度限制:

16kB

判题程序:

系统默认

作者:

颜晖

单位:

浙江大学城市学院

窗体顶端

题目判定

窗体底端

#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++)

{

s=s*i;

}

returns;

}

5-9 判断数字字符   (10分)

编写函数,判断指定的字符是否是数字字符,如果是函数返回1,否则函数返回0.要求在主调函数中输入该字符,调用函数并输出判断结果。

输入格式:

在一行中给出1个字符。

输出格式:

对于给定输入的字符,输出判断结果yes或no。

输入样例:

6

输出样例:

yes

输入样例:

H

输出样例:

no

时间限制:

400ms

内存限制:

64MB

代码长度限制:

16kB

判题程序:

系统默认

作者:

韩玫瑰

单位:

济南大学

窗体顶端

题目判定

解题程序

窗体底端

#include<>

intmain()

{

voidpanduan(charch);

charch;

scanf("%c",&ch);

panduan(ch);

return0;

}

voidpanduan(charch)

{

if(ch>='0'&&ch<='9')

printf("yes\n");

else

printf("no\n");

}

5-10 函数编程-分段函数   (15分)

编写函数,计算下面分段函数的值。

输入格式:

输入一个实数x的值

输出格式:

输出y的结果值

输入样例:

0

输出样例:

y=

输入样例:

输出样例:

y=

时间限制:

400ms

内存限制:

64MB

代码长度限制:

16kB

判题程序:

系统默认

作者:

韩玫瑰

单位:

济南大学

窗体顶端

题目判定

解题程序

窗体底端

#include<>

#include<>

intmain()

{

doublex,y;

scanf("%lf",&x);

if(x<=-2)

y=-exp(2*x+1)+3;

elseif(-2

y=2*x-1;

elseif(x>3)

y=2*log10(3*x+5)-11;

printf("y=%lf\n",y);

return0;

}

5-11 有理数比较   (10分)

本题要求编写程序,比较两个有理数的大小。

输入格式:

输入在一行中按照“a1/b1a2/b2”的格式给出两个分数形式的有理数,其中分子和分母全是整形范围内的正整数。

输出格式:

在一行中按照“a1/b1关系符a2/b2”的格式输出两个有理数的关系。

其中“>>”表示“大于”,“<<”表示“小于”,“==”表示“等于”。

输入样例1:

1/23/4

输出样例1:

1/2<3/4

输入样例2:

6/83/4

输出样例2:

6/8=3/4

 

时间限制:

400ms

内存限制:

64MB

代码长度限制:

16kB

判题程序:

系统默认

作者:

乔林

单位:

清华大学

窗体顶端

题目判定

窗体底端

#include<>

#include<>

intmain()

{

doublea1,a2,b1,b2;

scanf("%lf/%lf%lf/%lf",&a1,&b1,&a2,&b2);

if(a1/b1>a2/b2)

printf("%.0lf/%.0lf>%.0lf/%.0lf\n",a1,b1,a2,b2);

elseif(a1/b1==a2/b2)

printf("%.0lf/%.0lf=%.0lf/%.0lf\n",a1,b1,a2,b2);

elseif(a1/b1

printf("%.0lf/%.0lf<%.0lf/%.0lf\n",a1,b1,a2,b2);

return0;

}

5-12 通讯录的录入与显示   (10分)

通讯录中的一条记录包含下述基本信息:

朋友的姓名、出生日期、性别、固定电话号码、移动电话号码。

本题要求编写程序,录入NN条记录,并且根据要求显示任意某条记录。

输入格式:

输入在第一行给出正整数NN(\le≤10);随后NN行,每行按照格式姓名生日性别固话手机给出一条记录。

其中姓名是不超过10个字符、不包含空格的非空字符串;生日按yyyy/mm/dd的格式给出年月日;性别用M表示“男”、F表示“女”;固话和手机均为不超过15位的连续数字,前面有可能出现+。

在通讯录记录输入完成后,最后一行给出正整数KK,并且随后给出KK个整数,表示要查询的记录编号(从0到N-1N−1顺序编号)。

数字间以空格分隔。

输出格式:

对每一条要查询的记录编号,在一行中按照姓名固话手机性别生日的格式输出该记录。

若要查询的记录不存在,则输出NotFound。

输入样例:

3

Chris1984/03/10F+452

LaoLao1967/11/30F0100+86

QiaoLin1980/01/01M10086

217

输出样例:

LaoLao0100+86F1967/11/30

NotFound

#include<>

#include<>

structlist

{

charname[11];

charnum[17];

charphone[17];

charsex[2];

charbirthday[11];

};

structlistp[100];

intmain()

{

inti=0;intj=0,N,K;

scanf("%d",&N);

for(i=0;i

scanf("%s%s%c%s%s",&p[i].name,&p[i].birthday,&p[i].sex,&p[i].num,&p[i].phone);}

scanf("%d",&K);

intnumber;

for(i=0;i

scanf("%d",&number);

if(number=0){

printf("%s%s%s%s%s\n",p[number].name,p[number].num,p[number].phone,p[number].sex,p[number].birthday);}

else{printf("NotFound\n");}}

return0;

}

5-13 查找单价最高和最低的书籍   (10分)

编写程序,从键盘输入n(n<10)本书的名称和定价并存入结构数组中,查找并输出其中定价最高和最低的书的名称和定价。

输出格式语句:

printf("highestprice:

%.1f,%s\n",);

printf("lowestprice:

%.1f,%s\n",);

输入输出示例:

括号内为说明,无需输入输出

输入样例:

3(n=3)

ProgramminginC

ProgramminginVB

ProgramminginDelphi

25

输出样例:

highestprice:

ProgramminginDelphi

lowestprice:

ProgramminginVB

#include<>

structbook

{

chara[100];

doubleb;

};

intmain()

{

inti,j,n;

chark;

structbooks[100],temp;

scanf("%d",&n);

for(i=0;i

{

scanf("%c",&k);

gets(s[i].a);

scanf("%lf",&s[i].b);

}

for(i=0;i

for(j=i+1;j

if(s[j].b>s[i].b){temp=s[i];s[i]=s[j];s[j]=temp;}

printf("highestprice:

%,%s\n",s[0].b,s[0].a);

printf("lowestprice:

%,%s\n",s[n-1].b,s[n-1].a);

return0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 城乡园林规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1