C语言题库答案.docx

上传人:b****7 文档编号:26169629 上传时间:2023-06-17 格式:DOCX 页数:60 大小:27.75KB
下载 相关 举报
C语言题库答案.docx_第1页
第1页 / 共60页
C语言题库答案.docx_第2页
第2页 / 共60页
C语言题库答案.docx_第3页
第3页 / 共60页
C语言题库答案.docx_第4页
第4页 / 共60页
C语言题库答案.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

C语言题库答案.docx

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

C语言题库答案.docx

C语言题库答案

第三章

1:

判断是否为闰年

#include"stdio.h"

voidmain()

{

intyear;

printf("请输入一个年份:

");

scanf_s("%d",&year);

if((year%4==0)&&(year%100!

=0)||(year%400==0))

{

printf("%d是闰年!

\n",year);

}

else

{

printf("%d不是闰年!

\n",year);

}

}

2:

输入a,b,c三个数,再按照由小到大的顺序输出//打擂

#include"stdio.h"

voidmain()

{

inta,b,c,temp;

printf("请任意输入三个整数:

");

scanf_s("%d%d%d",&a,&b,&c);//注意if并列出现

if(a>b)

{

temp=a;

a=b;

b=temp;

}

if(a>c)

{

temp=a;

a=c;

c=temp;

}

if(b>c)

{

temp=b;

b=c;

c=temp;

}

printf("a、b、c三个数按照由小到大的顺序排列之为%d、%d、%d\n",a,b,c);

}

3:

输出100-999之间的水仙花数。

#include"stdio.h"

voidmain()

{

intnum,a,b,c;

for(num=100;num<=999;num++)//下面为数字各位数字的提取

{

a=num/100;

b=num/10%10;

c=num%10;

if(a*a*a+b*b*b+c*c*c==num)//判断条件

{

printf("%-5d",num);

}

}

printf("\n");

}

4输出101-1000之间的质数。

#include"stdio.h"

voidmain()

{

intnum,n,i=0;

printf("101到1000以内的质数有:

\n");

for(num=101;num<=1000;num++)//双重循环,外层为被除数,内层为除数

{

n=2;

while(num%n!

=0)

{

n++;

}

if(n==num)//内层if嵌套是为了达到题目要求的每行8个数

{

printf("%-5d",num);

i++;

if(i%8==0)

{

printf("\n");

}

}

}

printf("\n共有%d个!

",i);

}

?

5:

运输公司运费问题。

#include"stdio.h"

voidmain()

{

ints;

floatd,p,w,f;

printf("请输入每吨货物的基本运费p,货物重w和距离s:

");

scanf_s("%f%f%d",&p,&w,&s);

switch((int)(s/250))//强制转化类型,也可以不用,因为‘/’本来就是取整

{

case0:

d=0;

break;

case1:

d=0.02;

break;

case2:

case3:

case4:

case5:

case6:

case7:

d=0.08;

break;

case8:

case9:

case10:

case11:

d=0.1;

break;

default:

d=0.15;

break;

}

f=p*w*s*(1-d);

printf("总运费为:

%5.2f",f);

}

6:

分段函数

#include"stdio.h"

voidmain()

{

floatx,f;

printf("请输入x:

");

scanf_s("%f",&x);

if(x<-5)

{

f=0;

}

elseif(x>=5)

{

f=10*x-10;

}

else//(x>=-5&&x<5)

{

f=5*x*x+5;

}

printf("f=%f\n",f);

}

7:

100-1000中17的倍数

#include"stdio.h"

voidmain()

{

intnum,i=0;

for(num=100;num<=1000;num++)

{

if(num%17==0)

{

printf("%5d",num);

i++;

if(i%5==0)//每行5个

{

printf("\n");

}

}

}

printf("\n");

}

8:

2/1+3/2+5/3+……前20项的和。

#include"stdio.h"

voidmain()

{

inti;

doublesum=0.0,m=1.0,n=2.0,temp;

for(i=0;i<20;i++)

{

sum+=n/m;//看出规律然后写算法

temp=n;

n+=m;

m=temp;

}

printf("%f",sum);

}

9:

输入一串字符,然后统计各种字符的个数。

#include"stdio.h"//利用ASCLL码来进行计数

voidmain()

{

intnums=0,letters=0,others=0;

charwords;

printf("请随意输入一个字符串:

");

while((words=getchar())!

='\n')//赋值语句放到里面了

{

if((words>='a'&&words<='z')||(words>='A'&&words<='Z'))

{

letters++;

}

elseif(words>='0'&&words<='9')

{

nums++;

}

else

{

others++;

}

}

printf("您输入的字符串中有%d个字母,有%d个数字,其他字符有%d个!

\n",letters,nums,others);

}

10:

2到20之间偶数的阶乘的和。

#include"stdio.h"

voidmain()

{

inti,j,sum=0,num;

for(i=2;i<=20;i+=2)

{

num=i;

for(j=i-1;j>=1;j--)//此处还可以将其写成逆序形式for(j=1;j<=i;j++)

{

num*=j;

}

sum+=num;

}

printf("2!

+4!

+6!

+8!

+10!

+12!

+14!

+16!

+18!

+20!

=%d\n",sum);

}

第四章

1:

10个整数冒泡法排序。

#include

#definen10

voidmain()

{

inti,j,c,num[n];

printf("输入%d个整数\n",n);

for(i=0;i

{

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

}

for(i=0;i

{

for(j=0;j

{

if(num[j]>num[j+1])

{

c=num[j+1];

num[j+1]=num[j];

num[j]=c;

}

}

}

for(i=0;i

{

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

}

printf("\n");

}

?

2:

数组的倒置。

注意此题未达到题目要求

正确的请看考试题4.2(VS2012)

#include"stdio.h"

voidmain()

{

intnum[3][4],i,j;

printf("请依次输入这个三行四列的数组中的数:

");

for(i=0;i<3;i++)

{

for(j=0;j<4;j++)

{

scanf_s("%d",&num[i][j]);

}

}

printf("a=\n");

for(i=0;i<3;i++)

{

for(j=0;j<4;j++)

{

printf("%d\t",num[i][j]);

}

printf("\n");

}

printf("\nb=\n");

for(j=0;j<4;j++)

{

for(i=0;i<3;i++)

{

printf("%d\t",num[i][j]);

}

printf("\n");

}

printf("\n");

}

3:

找出输入的10个串中最大的串

#include"stdio.h"

#include"string.h"

#defineN10

#defineSIZE20

voidmain()

{

charc[N][SIZE],max[SIZE];

inti;

printf("请任意输入%d个字符串:

\n",N);

for(i=0;i

{

gets(c[i]);

}

strcpy(max,c[0]);

for(i=0;i

{

if(strcmp(max,c[i])<0)//strcmp(1,2)函数有返回值,1》2返回1;1=2返回0;1《2返回-1

{

strcpy(max,c[i]);

}

}

printf("最大的字符串为%s\n:

",max);

}

4:

判断字符串是否为回文串

#include"stdio.h"

#defineN20

voidmain()

{

charc[N];

inti,j,n,temp=1;

printf("请输入一个字符串:

");

scanf("%s",&c);

for(i=0;i

{

if(c[i]=='\0')

{

n=i;

}

}//strlen函数可实现

for(i=0,j=n-1;i

{

if(c[i]!

=c[j])

{

temp=0;

break;

}

}

if(temp==0)

{

printf("%s没有构成回文串!

\n",c);

}

else

{

printf("%s构成了回文串!

\n",c);

}

}

5:

三维数组

#include"stdio.h"

voidmain()

{

inta[2][2][3]={1,2,3,4,5,6,7,8,9,10,11,12},i,j,t;

for(t=0;t<2;t++)//控制面

{

for(i=0;i<2;i++)//控制行

{

for(j=0;j<3;j++)//控制列

{

printf("a[%d][%d][%d]=%d\t",t,i,j,a[t][i][j]);

}

printf("\n");

}

}

}

###6:

将十个数排序(插入排序)

# include  

voidmain() 

int a[10],i,j,t; 

printf("Please input 10 numbers:

 ");

for(i=0;i<10;i++)

{

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

}

for(i=1;i<10;i++) //*外循环控制趟数,n个数从第2个数开始到最后共进行n-1次插入/

{

t=a[i];//*将待插入数暂存于变量t中*/

for( j=i-1;j>=0 && t>a[j]; j--)/ /*在有序序列(下标0 ~ i-1)中寻找插入位置*/ 

{

a[j+1]=a[j];   //*若未找到插入位置,则当前元素后移一个位置*/  

a[j+1]=t;//*插入位置,完成插入*/

}

}

printf("The sorted numbers:

 ");  

for(i=0;i<10;i++)

{

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

}

printf("\n");

}

###7:

折半查找某个数

#include

#defineN10

voidmain()

{

inta[N],m,i,j,index,midindex=-1;

intlow,high,mid,temp;

printf("请输入10个数:

");

for(i=0;i<=N-1;i++)

{

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

}

printf("\n请输入要查找的数:

");

scanf("%d",&m);

for(i=0;i

{

index=i;

for(j=i;j<=N-1;j++)

{

if(a[j]

index=j;

temp=a[i];

a[i]=a[index];

a[index]=temp;

}//此处在将输入的数排序

low=0;

high=N-1;

while(low

{

mid=(low+high)/2;

if(m>a[mid])

low=mid+1;

elseif(m

high=mid-1;

else

{

midindex=mid;

break;

}

}

if(midindex!

=-1)

printf("\nfound!

");

else

printf("\nnotfound!

");

}

?

8:

依次提取字符串中的数字

#include

intdegital(char*a,intb[]);

voidmain()

{

chara[51];

intb[100],i,j;

printf("输入字符串\n");

gets(a);

i=degital(a,b);

printf("提取的数字有:

\n");

for(j=0;j

{

printf("%d",b[j]);

}

printf("\n");

}

intdegital(char*a,intb[])

{

inti;

for(i=0;*a!

='\0';a++)

{

if(*a>='0'&&*a<='9')

{

b[i++]=*a-'0';

}

}

returni;

}

9:

系统登录界面

#include

#include

voidmain()

{

charmima[13];

inttime;

printf("请输入登录密码(密码不超过12位字符串):

\n");

for(time=3;time>0;time--)

{

gets(mima);

if((strcmp(mima,"admin")==0))

{

printf("登录成功!

\n");

break;

}

else

{

if(time>1)

{

printf("密码错误!

\n");

printf("请输入登录密码(密码不超过12位字符串):

\n");

}

}

}

if(time<1)

{

printf("\nsorry!

\n");

}

}

10:

输出名字最长的

#include

#include

intmain()//可以用无返回值的(voidmain)最后就不用return了

{

charname[100]={0},temp[100]={0};

inti;

printf("请输入10个人的姓名:

\n");

for(i=0;i<10;i++)

{

gets(temp);

if(strlen(name)

strcpy(name,temp);

}

printf("%s最长\n",name);

return0;

}

第五章

###1:

最小公倍数

#include

intmain()

{

inta,b,c;

printf("请输入两个数:

\n");

scanf("%d%d",&a,&b);

c=a*b;

while(a)

{

if(a

{

intt=a;a=b;b=t;

}

a%=b;

}

printf("最小公倍数:

%d\n",c/b);

return0;

}

2:

用函数将数组转置

#include

#defineN4

voidrevert(inta[][N])//传入了一个二维数组

{

inti,j,t;

for(i=0;i

{

for(j=i;j

{

t=a[i][j];a[i][j]=a[j][i];a[j][i]=t;

}

}

}

voidmain()

{

inti,j,a[N][N];

printf("\ninput16integer:

");

for(i=0;i

{

for(j=0;j

{

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

}

}

printf("initdata:

\n");

for(i=0;i

{

for(j=0;j

{

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

}

putchar('\n');

}

revert(a);

printf("revertdata:

\n");

for(i=0;i

{

for(j=0;j

{

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

}

putchar('\n');

}

}

3:

输出大于平均值的数

#include

#defineN100

intfun(inta[],intb[],intn)

{

inti,c=0;

floataver1,sum=0;

for(i=0;i

{

sum+=a[i];

}

aver1=sum/n;

for(i=0;i

{

if(a[i]>aver1)

{

b[c++]=a[i];

}

}

returnc;

}

voidmain()

{

intx[N],y[N],num,count;

intj,n;

printf("PleaseinputtheN:

");

scanf("%d",&num);

printf("Input%dintegers:

\n",num);

for(j=0;j

{

scanf("%d",&x[j]);

}

count=fun(x,y,num);

printf("resultis:

");

for(j=0;j

{

printf("%5d",y[j]);

if((j+1)%5==0)

{

printf("\n");

}

}

}

4:

计数(有多少个三位数的各位和为5)

#include

intfun(intx)//以一个整数来接收s[i]这个整数

{

intt=0;

intx1,x2,x3;

x3=x/100;

x2=x/10%10;

x1=x%10;

if(x1+x2+x3==5)

{

t=1;

}

returnt;

}

voidmain()

{

ints[10],i,c=0;

printf("\npleaseinput10integers:

");

for(i=0;i<10;i++)

{

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

}

for(i=0;i<10;i++)

{

if(fun(s[i]))//fun(s[i])已经是一个返回值,if(0)不满足条件,不执行if条件一下的语句if(非0)满足条件

{

c++;

}

}

printf("totalnumberis:

%d",c);

}

###5:

递归法求阶乘

#include

intf(inti);

voidmain()

{

intn;

printf("请输入n的值:

");

scanf_s("%d",&n);

printf("n!

的值为:

%d\n",f(n));

}

intf(inti

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

当前位置:首页 > 人文社科 > 文学研究

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

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