C语言试题集.docx
《C语言试题集.docx》由会员分享,可在线阅读,更多相关《C语言试题集.docx(52页珍藏版)》请在冰豆网上搜索。
C语言试题集
1输入x求y
2abc从大到小排序
3输出四个数中的最大最小值
4输出成绩等级
5输入x输出xy
6输出300-400间的全部素数
7求Fibonacci数列的前二十个数
8求和n!
+3
9求分数数列前20项的和
10水仙花数
11小于六位,逆序输出
12求5+...+55555的和
1.有一个函数,写一段程序,输入x的值,输出y的值。
#include
voidmain()
{intx,y;
printf("输入x:
");
scanf("%d",&x);
if(x<0||x>100)
{y=-1;
printf("x=%3d,y=%d\n",x,y);
}
elseif(x=0)
{y=0;
printf("x=%d,y=%d\n",x,y);
}
else
{y=1;
printf("x=%d,y=%d\n",x,y);
}
}
2.输入3个数a,b,c,按大由到小的顺序输出。
#include
voidmain()
{
floata,b,c,t;
printf("pleaseentera,b,c:
");
scanf("%f,%f,%f",&a,&b,&c);
if(a
{t=a;a=b;b=t;}
if(a{t=a;a=c;c=t;}
if(b{t=b;b=c;c=t;}
printf("%7.2f%7.2f%7.2f\n",a,b,c);
}
3.输入4个数,输出4个数中的最大值、最小值。
#include
voidmain()
{
floatt,a,b,c,d,max,min;
printf("请输入四个数:
");
scanf("%f,%f,%f,%f",&a,&b,&c,&d);
if(a
{t=a;a=b;b=t;}
if(a{t=a;a=c;c=t;}
if(a{t=a;a=d;d=t;}
if(b{t=b;b=c;c=t;}
if(b{t=b;b=d;d=t;}
if(c{t=c;c=d;d=t;}
printf("最大值和最小值分别为:
\n");
printf("max=%5.2fmin=%5.2f",a,d);
}
4.输入成绩,要求输出成绩等级A、B、C、D、E或error。
90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,0~60分为‘E’。
若输入成绩低于0分和高于100分则输出error。
#include
voidmain()
{floatscore;
chargrade;
printf("请输入学生成绩:
");
scanf("%f",&score);
if(score>100||score<0)
printf("error\n");
else
{
switch((int)(score/10))
{
case10:
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
case5:
case4:
case3:
case2:
case1:
case0:
grade='E';
}
printf("成绩是%5.1f,成绩等级是%c.\n",score,grade);
}
}
5.有一个函数:
写一段程序,输入x的值,输出x,y的值。
#include
voidmain()
{intx,y;
printf("输入x:
");
scanf("%d",&x);
if(x<1)
{y=x;
printf("x=%3d,y=x=%d\n",x,y);
}
elseif(x<10||x>10)
{y=2*x-1;
printf("x=%d,y=2*x-1=%d\n",x,y);
}
else
{y=3*x-11;
printf("x=%d,y=3*x-11=%d\n",x,y);
}
}
6.输出300~400之间的全部素数,并按每行5个数输出。
#include
#include
voidmain()
{intprime(int);
inti,k,m;
printf("300-400之间的素数为:
\n");
for(i=300;i<=400;i++)
{m=prime(i);
if(m==1)
{k++;
printf("%5d",i);
if(k%5==0)
printf("\n");
}
}
}
intprime(inti)
{intj,flag=1;
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
flag=0;
return(flag);
}
7.求Fibonacci数列的前20个数,并将其分5行输出
#include
#include
voidmain()
{intm,k,i,n=0;
for(m=300;m<=400;m=m+1)
{k=sqrt(m);
for(i=2;i<=k;i++)
if(m%i==0)break;
if(i>=k+1)
{printf("%d",m);
n=n+1;
}
if(n%5==0)printf("\n");
}
printf("\n");
}
8.求和1-10(n!
+3)。
#include
voidmain()
{doubles=0,t=1,sum=0;
intn;
for(n=1;n<=10;n++)
{
t=t*n;
s=s+t;
sum=s+3;
}
printf("1!
+3+2!
+3...+10!
+3=%f\n",s);
}
9.有一分数序列,求其前20项的和。
#include
voidmain()
{
inti,n=20;
doublea=2,b=1,s=0,t;
for(i=1;i<=n;i++)
{
s=s+b/a;
t=a,
a=a+b,
b=t;
}
printf("sum=%16.10f\n",s);
}
10.输出小于500的所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一个水仙花数,因为。
#include
voidmain()
{
inti,j,k,n;
printf("水仙花数是:
");
for(n=100;n<500;n++)
{
i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%d",n);
}
printf("\n");
}
11.给一个不多于6位的正整数,要求:
①求出它是几位数;②分别输出每一位数字;③按逆序输出各位数字,例如原数为158,应输出851
#include
voidmain()
{
intn,m;
printf("输入一个不多于六位的数字:
");
scanf("%d",&n);
if(n<1000000&&n>99999)
printf("它是六位数\n");
if(n<100000&&n>9999)
printf("它是五位数\n");
if(n<10000&&n>999)
printf("它是四位数\n");
if(n<1000&&n>99)
printf("它是三位数\n");
if(n<100&&n>9)
printf("它是二位数\n");
if(n<10&&n>=0)
printf("它是一位数\n");
printf("各位数字按逆序输出为:
\n");
while(n!
=0)
{m=n%10;
n=n/10;
printf("%3d",m);
}
}
12.求5+55+555+5555+55555的值。
#include
voidmain()
{
inta=5,n=5,i=1,sn=0,tn=0;
for(i=1;i<=5;i++)
{
tn=tn+a;
sn=sn+tn;
a=a*10;
}
printf("5+55+..+55555=%d\n",sn);
}
13对10个数用起泡法排序
14二维数组a,b行列互换
153列4行的数组求最大元素及其行列数
16求一行字符的单词数
17求3个字符串的最大者
18输入两个数,求最大者
19求两整数的最大公约数和最小公倍数
20求4个数最大者,嵌套调用
21用递归法求5!
22求数组一5个元素和数组二10个元素各元素的平均值
23数组逆序重新存放
24递归法将整数n转换成字符串
13.输入10个整型整数,用起泡法对这10个数排序,并该由小到大顺序在屏幕上输出。
#include"stdio.h"
voidmain()
{
inta[10];
inti,j,t;
printf("input10number:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
for(j=i;j<9;j++)
if(a[i]>a[j+1])
{t=a[i];a[i]=a[j+1];a[j+1]=t;};
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
14.将一个二维数组a的行和列的元素互换(即行列互换),存到另一个二维数组b中。
#include"stdio.h"
voidmain()
{
inta[4][5],b[5][4];
inti,j;
for(i=0;i<4;i++)
for(j=0;j<5;j++)
scanf("%d",&a[i][j]);
for(i=0;i<5;i++)
for(j=0;j<4;j++)
b[i][j]=a[j][i];
printf("该数组的新序列为:
\n");
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
printf("%5d",b[i][j]);
printf("\n");
}
}
15.在一个3*4的二维数组a中,要求编程求出其中值最大的那个元素的值,并输出其所在的行号和列号。
#include"stdio.h"
voidmain()
{
inta[3][4],i,j,max;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);
max=a[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(maxmax=a[i][j];
printf("max=%d\n",max);
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(a[i][j]==max)
printf("行=%2d,列=%2d\n",i+1,j+1);
}
16.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
#include
voidmain()
{
inti,j=0;
charstr[80];
gets(str);
for(i=0;str[i]!
='\0';i++)
if(str[i+1]==''||str[i+1]=='\0')
j++;
printf("单词个数为%d\n",j);
}
17.有3个字符串,要求找出其中最大者。
#include
#include
voidmain()
{
charstr1[80],str2[80],str3[80],longest[80];
gets(str1);
printf("\n");
gets(str2);
printf("\n");
gets(str3);
strcpy(longest,str1);
if(strcmp(str1,str2)<0)
strcpy(longest,str1);
if(strcmp(str2,str3)<0)
strcpy(longest,str1);
printf("thelongestis%s",longest);
}
18.输入两个整数,要求用一个函数求出其中的大者,并在主函数中输出此值。
#include
voidmain()
{
intf(inta,intb);
intm,n,max;
printf("请输入两个数:
");
scanf("%d,%d",&m,&n);
max=f(m,n);
printf("max=%d",max);
}
intf(inta,intb)
{
intc;
c=a>b?
a:
b;
return(c);
}
19.输入两个整数,要求用一个函数求出其最大公约数和最小公倍数,并在主函数中调用该子函数。
#include
voidmain()
{inthcf(int,int);
intlcd(int,int,int);
intu,v,h,l;
scanf("%d,%d",&u,&v);
h=hcf(u,v);
printf("最大公约数=%d\n",h);
l=lcd(u,v,h);
printf("最小公倍数=%d\n",l);
}
inthcf(intu,intv)
{intt,r;
if(v>u)
{t=u;u=v;v=t;}
while((r=u%v)!
=0)
{u=v;
v=r;}
return(v);
}
intlcd(intu,intv,inth)
{
return(u*v/h);
}
20.输入4个整数,找出其中最大的数。
用函数的嵌套调用来处理。
#include
voidmain()
{intmax_4(inta,intb,intc,intd);
inta,b,c,d,max;
printf("Pleaseenter4intergernumbers:
");
scanf("%d%d%d%d",&a,&b,&c,&d);
max=max_4(a,b,c,d);
printf("max=%d\n",max);
}
intmax_4(inta,intb,intc,intd)
{intmax_2(inta,intb);
intm;
m=max_2(a,b);
m=max_2(m,c);
m=max_2(m,d);
return(m);
}
intmax_2(inta,intb)
{return(a>b?
a:
b);
}
21.用递归方法求5!
。
#include
voidmain()
{longfac(intn);
longy;
y=fac(5);
printf("5!
=%ld\n",y);
}
longfac(intn)
{
longf;
if(n<0)
printf("n<0,dataerror!
");
elseif(n==0,n==1)
f=1;
elsef=fac(n-1)*n;
return(f);
}
22、编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。
#include
voidmain()
{
floatf(floatscore[],intn);
floatscore_1[5],score_2[10],aver_1,aver_2;
inti;
for(i=0;i<5;i++)
scanf("%f",&score_1[i]);
for(i=0;i<10;i++)
scanf("%f",&score_2[i]);
aver_1=f(score_1,5);
aver_2=f(score_2,10);
printf("aver_1=%f,aver_2=%f\n",aver_1,aver_2);
}
floatf(floatscore[],intn)
{
inti;
floataver,sum=0;
for(i=0;isum=sum+score[i];
aver=sum/n;
return(aver);
}
!
!
!
!
!
!
!
!
23将一个数组中的值按逆序重新存放。
例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。
#include
voidmain()
{
inta[6],b[6],i;
printf("请输入一个数组:
");
for(i=0;i<6;i++)
scanf("%d",&a[i]);
printf("逆序排列后的数组是:
");
for(i=0;i<6;i++)
{
b[i]=a[5-i];
printf("%4d",b[i]);
}
}
24用递归法将一个整数n转换成字符串。
例如,输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数。
#include
voidmain()
{voidconvert(intn);
intnumber;
printf("inputaninteger:
");
scanf("%d",&number);
printf("output:
");
if(number<0)
{putchar('-');putchar('');
number=-number;
}
convert(number);
printf("\n");
}
voidconvert(intn)
{inti;
if((i=n/10)!
=0)
convert(i);
putchar(n%10+'0');
putchar(32);
}
25指针输出3个整数从小到大排列
26指针输出3个整数从大到小排列
27指针实现数组b10个元素逆序存放
28冒泡法将10整数从大到小排序
29选择法将10整数从小到大排序
30定义结构体变量计算当天是本年的第几天
31设计候选人得票统计程序
32输出学生信息
33输出教师信息
34输出职员信息
35建立动态数组输入5个成绩并检查输出不合格的成绩
36求一个字符串的长度
25.用指针实现输入3个整数并按从小到大的顺序输出。
#include
voidmain()
{
voidexchange(int*p1,int*p2,int*p3);
intn1,n2,n3;
int*p1,*p2,*p3;
printf("inputthreeintegern1,n2,n3:
");
scanf("%d,%d,%d",&n1,&n2,&n3);
p1=&n1;p2=&n2;p3=&n3;
exchange(p1,p2,p3);
printf("Now,theorderis:
%d,%d,%d",n1,n2,n3);
}
voidexchange(int*p1,int*p2,int*p3)
{
voidswap(int*p1,int*p2);
if(*p1>*p2)
swap(p1,p2);
if(*p1>*p3)
swap(p1,p3);
if(*p2>*p3)
swap(p2,p3);
}
voidswap(int*p1,int*p2)
{
intp;
p=*p1;*p1=*p2;*p2=p;
}
26、用指针实现输入3个整数并按从大到小的顺序输出。
#include
voidmain()
{
voidpaixu(int*p1,int*p2);
inta,b,c,*p1,*p2,*p3;
printf("pleaseentera,b,c:
");
scanf("%d,%d,%d",&a,&b,&c);
p1=&a;p2=&b;p3=&c;
if(a
paixu(p1,p2);
if(apaixu(p1,p3);
if(bpaixu(p2,p3);
printf("%5d%5d%5d\n",a,b,c);
}
voidpaixu(int*p1,int*p2)
{
intt;
t=*p1;*p1=*p2;*p2=t;
}
!
!
!
!
!
!
!
!
!
27、用指针实现将数组b[10]中的元素按逆序存放。
#include
voidmain()
{voidsort(char*p,intm);
inti;
char*p,b[10];
printf("pleaseinputthesenumbers:
\n");
for(i=0;i