北工大 c语言题库.docx
《北工大 c语言题库.docx》由会员分享,可在线阅读,更多相关《北工大 c语言题库.docx(36页珍藏版)》请在冰豆网上搜索。
北工大c语言题库
求1+1/2!
+....+1/n!
#include"stdio.h"
intmain()
{
intri,repeat;
inti,n;
doubles;
doublefact(intn);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
s=0;
for(i=1;i<=n;i++)
s=s+1/fact(i);
printf("%0.4f\n",s);
}
return0;
}
doublefact(intn)
{
inti;
doubleresult;
result=1;
for(i=1;i<=n;i++)
result=result*i;
returnresult;
}
统计一个整数中数字的个数
#include"stdio.h"
intmain()
{
intri,repeat;
intcount;
longin;
intcountdigit(longnumber,intdigit);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%ld",&in);
count=countdigit(in,2);
printf("count=%d\n",count);
}
}
intcountdigit(longnumber,intdigit)
{
inti,count=0,t;
if(number<0)
number=-number;
for(i=1;;i++){
t=number%10;
if(t==digit)count++;
number=number/10;
if(number==0)
break;
}
returncount;
}
统计素数并求和
#include"stdio.h"
#include"math.h"
intmain()
{
intri,repeat;
intcount,i,m,n,sum;
intprime(intm);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d",&m,&n);
sum=0;count=0;
for(i=m;i<=n;i++){
if(prime(i)==1){
count++;
sum=sum+i;
}
}
printf("count=%d,sum=%d\n",count,sum);
}
}
intprime(intm)
{
inti;
if(m==1)return0;
if(m>1){
for(i=2;i<=m/2;i++){
if(m%i==0){
return0;
}
}
if(i>m/2)return1;
}
}
求完数
#include"stdio.h"
intmain()
{
intri,repeat;
inti,m,n;
longfactorsum(intnumber);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++){
if(i==factorsum(i))
printf("%d",i);
}
printf("\n");
}
}
longfactorsum(intnumber)
{
inti,sum=0;
if(number==1)return1;
for(i=1;iif(number%i==0)
sum=sum+i;
}
returnsum;
}
输出Fibonacci序列
#include"stdio.h"
#include"math.h"
intmain()
{
intri,repeat;
inti,m,n;
longf;
longfib(intn);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d",&m,&n);
for(i=1;;i++){
f=fib(i);
if(f>=m&&f<=n)printf("%ld",f);
if(f>n)break;
}
printf("\n");
}
return0;
}
longfib(intn)
{
inti,a=1,b=1,t;
if(n==1)return1;
if(n==2)return1;
for(i=3;i<=n;i++){
t=a+b;
a=b;
b=t;
}
returnt;
}
求各位数字的立方和等于它本身的数
#include"stdio.h"
intmain()
{
intri,repeat;
inti,m,n;
intis(intnumber);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d%d",&m,&n);
for(i=m;i<=n;i++){
if(i==is(i))
printf("%d",i);
}
printf("\n");
}
return0;
}
intis(intnumber)
{
intt,sum=0;
do{
t=number%10;
sum=sum+t*t*t;
number=number/10;
}while(number!
=0);
returnsum;
}
将一个整数逆序输出
#include
intmain()
{
intri,repeat;
longin,res,k;
longreverse(longnumber);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%ld",&in);
if(in<0){
in=-in;
k=1;
}
elsek=0;
res=reverse(in);
if(k==1)
res=-res;
printf("%ld\n",res);
}
}
longreverse(longnumber)
{
inta,b;
b=0;
while(number!
=0){
a=number%10;
b=b*10+a;
number=number/10;
}
returnb;
}
循环移动(调试示例error08_1)
#include
voidmov(int*x,intn,intm);
intmain(void)
{
inti,m,n,*p;
inta[80];
scanf("%d%d",&n,&m);
for(i=0;iscanf("%d",&a[i]);
mov(a,n,m);
printf("Aftermove:
");
for(i=0;iprintf("%d",a[i]);
printf("\n");
}
voidmov(int*x,intn,intm)
{
inti,j,k;
for(i=0;ik=x[n-1];
for(j=n-1;j>0;j--)
x[j]=x[j-1];
x[0]=k;
}
}
在数组中查找指定元素
#include
intmain(void)
{
inti,index,n,res,x;
intrepeat,ri;
inta[10];
intsearch(intlist[],intn,intx);
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
scanf("%d",&x);
res=search(a,n,x);
if(res!
=-1)
printf("index=%d\n",res);
else
printf("Notfound\n");
}
}
intsearch(intlist[],intn,intx)
{
inti,res;
res=-1;
for(i=0;iif(list[i]==x)
res=i;
returnres;
}
使用函数的选择法排序
#include
voidsort(inta[],intn);
intmain(void)
{
inti,n;
intrepeat,ri;
inta[10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
sort(a,n);
printf("Aftersorted:
");
for(i=0;iprintf("%d",a[i]);
printf("\n");
}
}
voidsort(int*p,intn)
{
intk,i,index,t;
for(k=0;kindex=k;
for(i=k+1;iif(p[i]
index=i;
t=p[index];
p[index]=p[k];
p[k]=t;
}
}
使用函数删除字符串中的字符
#include
voidmain()
{
charc;
charstr[80];
intrepeat,ri;
voiddelchar(char*str,charc);
scanf("%d",&repeat);
getchar();
for(ri=1;ri<=repeat;ri++){
gets(str);
scanf("%c",&c);
getchar();
/*---------*/
delchar(str,c);
printf("result:
");
puts(str);
}
}
/*---------*/
voiddelchar(char*str,charc)
{
inti,j;
for(i=j=0;str[i]!
='\0';i++){
if(str[i]!
=c)
str[j++]=str[i];
}
str[j]='\0';
}
使用函数实现字符串复制
#include
#include
voidmain()
{
chars[80],t[80];
intm;
intrepeat,ri;
voidstrmcpy(char*s,char*t,intm);
scanf("%d",&repeat);
getchar();
for(ri=1;ri<=repeat;ri++){
gets(t);
scanf("%d",&m);
getchar();
if(strlen(t)printf("errorinput");
else{
/*---------*/
strmcpy(s,t,m);
puts(s);
}
}
}
voidstrmcpy(char*s,char*t,intm)
{
inti,j;
j=0;
for(i=m-1;t[i]!
='\0';i++)
s[j++]=t[i];
s[j]='\0';
}
/*---------*/
判断回文字符串
#include
voidmain()
{
chars[80];
intrepeat,ri;
intmirror(char*p);
scanf("%d",&repeat);
getchar();
for(ri=1;ri<=repeat;ri++){
gets(s);
if(mirror(s)!
=0)
printf("YES\n");
else
printf("NO\n");
}
}
/*---------*/
intmirror(char*p)
{
char*q;
q=p;
while(*q!
='\0')
q++;
p--;
while(pif(*p!
=*q)
return0;
p++;
q--;
}
return1;
}
分类统计字符个数
#include
voidmain()
{
chars[80];
char*p;
intblank,digit,lower,other,upper;
gets(s);
upper=lower=blank=digit=other=0;
/*---------*/
for(p=s;*p!
='\0';p++)
if(*p>='A'&&*p<='Z')
upper++;
elseif(*p>='a'&&*p<='z')
lower++;
elseif(*p>='0'&&*p<='9')
digit++;
elseif(*p=='')
blank++;
else
other++;
printf("upper:
%dlower:
%dblank:
%ddigit:
%dother:
%d\n",upper,lower,blank,digit,other);
}
显示水果的价格
#include
intmain(void)
{
intri,repeat;
intchoice;
floatprice;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
printf("[1]apples\n");
printf("[2]pears\n");
printf("[3]oranges\n");
printf("[4]grapes\n");
scanf("%d",&choice);
if(choice==0)
printf("price=0");
switch(choice){
case1:
price=3.00;break;
case2:
price=2.50;break;
case3:
price=4.10;break;
case4:
price=10.20;break;
}
printf("price=%.2f\n",price);
}
return0;
}
求n!
#include
intmain(void)
{
intri,repeat;
inti,n;
doublefact;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
fact=1;
for(i=1;i<=n;i++)
fact=fact*i;
printf("%.0f\n",fact);
}
return0;
}
求最大值
#include
intmain()
{
intri,repeat;
inti,max,n,x;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
max=n;
for(i=1;i<=n;i++){
scanf("%d",&x);
if(maxmax=x;
}
printf("%d\n",max);
}
return0;
}
求整数的位数以及各位数之和
#include
intmain()
{
intri,repeat;
intnumber,sum;
longin;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
number=0;
sum=0;
scanf("%ld",&in);
if(in<0)
in=-in;
do{
sum=sum+in%10;
in=in/10;
number++;
}while(in!
=0);
printf("number=%d,sum=%d\n",number,sum);
}
}
求a+aa+aaa+aa…a
#include
voidmain()
{
intri,repeat;
inti,n;
longinta,sn,tn;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%ld%d",&a,&n);
sn=a;tn=a;
for(i=1;i<=n-1;i++){
tn=10*tn+a;
sn=sn+tn;
}
printf("%ld\n",sn);
}
}
求平均值
#include
intmain(void)
{
inti,n,sum;
intrepeat,ri;
inta[10];
doubleaver;
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
sum=0;
for(i=0;iscanf("%d",&a[i]);
sum=sum+a[i];
}
aver=sum/(n*1.0);
printf("average=%.2f\n",aver);
}
}
交换最小值和最大值
#include
intmain(void)
{
inti,index,n,t;
intrepeat,ri;
inta[10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
index=0;
for(i=0;iif(a[i]index=i;
t=a[0];
a[0]=a[index];
a[index]=t;
for(i=0;iif(a[i]>a[index])
index=i;
t=a[n-1];
a[n-1]=a[index];
a[index]=t;
printf("Afterswap:
");
for(i=0;iprintf("%d",a[i]);
printf("\n");
}
}
将数组中的数逆序存放
#include
intmain(void)
{
inti,n,temp;
intrepeat,ri;
inta[10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
for(i=0;itemp=a[i];
a[i]=a[n-1-i];
a[n-1-i]=temp;
}
for(i=0;iprintf("%d",a[i]);
printf("\n");
}
}
选择法排序
#include
intmain(void)
{
inti,index,k,n,temp;
intrepeat,ri;
inta[10];
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%d",&n);
for(i=0;iscanf("%d",&a[i]);
for(k=0;kindex=k;
for(i=k+1;iif(a[i]>a[index])index=i;
temp=a[index];
a[index]=a[k];
a[k]=temp;
}
printf("Aftersorted:
");
for(i=0;iprintf("%d",a[i]);
printf("\n");
}
}
调