C语言题库答案.docx
- 文档编号:26169629
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:60
- 大小:27.75KB
C语言题库答案.docx
《C语言题库答案.docx》由会员分享,可在线阅读,更多相关《C语言题库答案.docx(60页珍藏版)》请在冰豆网上搜索。
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;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 题库 答案