c语言大一基础程序试验手册答案.docx
《c语言大一基础程序试验手册答案.docx》由会员分享,可在线阅读,更多相关《c语言大一基础程序试验手册答案.docx(15页珍藏版)》请在冰豆网上搜索。
c语言大一基础程序试验手册答案
1.当n为152时,分别求出n的个位数(digit1),十位数(digit2),百位数(digit3)的值。
#include
intmain(void)
{
intn;
intdigit1,digit2,digit3;
n=152;
digit1=n%10;
digit2=(n/10)%10;
digit3=n/100;
printf("整数152的个位数字是%d,十位数字是%d,百位数字是%d\n",digit1,digit2,digit3);
return0;
}
2.开始时间为time1,结束时间是time2,计算中间的时间,时间为0000~2359
#include
intmain(){
inttime1,time2;
inthour,minute;
printf("Entertime1:
");
scanf("%d",&time1);
printf("Entertime2:
");
scanf("%d",&time2);
hour=time2/100-time1/100;
minute=time2%100-time1%100;
if(minute<0){
hour--;
minute+=60;
}
printf("Thetrainjourneytimeis%dhours%dminutes\n",hour,minute);
return0;
}
3.147101316的规律是(n-1)*3+1
4.乘方表
for(i=0;i<=n;++i){
power=pow(3,i);
printf("pow(3,%d)=%.0f\n",i,power);
}
5.阶乘表
for(i=1;i<=n;++i){
result=f(i);
printf("%d!
=%d\n",i,result);
}
6.三角形判断和面积
if((a+b>c)&&(a+c>b)&&(b+c>a)){
s=(a+b+c)/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
7.求位数
#include
intmain(void)
{
intcount,number;
count=0;
printf("Enterainteger:
");
scanf("%d",&number);
if(number<0)
number=-number;
do{
number=number/10;
count++;
}while(number!
=0);
printf("count=%d\n",count);
return0;
}
8.求位数和各位数字之和
#include
intmain(void){
intcount=0,n,sum=0;
printf("Inputaninteger:
");
scanf("%d",&n);
if(n<0)
n=-n;
while(n>0){
sum+=n%10;
count++;
n/=10;
}
printf("count=%d,sum=%d\n",count,sum);
return0;
}
9.求m,n之间的所有素数,每行输出六个
#include
#include
intmain(){
intcount,i,j,k,m,n;
printf("Inputm:
");
scanf("%d",&m);
printf("Inputn:
");
scanf("%d",&n);
if(m==1)
m++;
count=0;
for(i=m;i<=n;i++){
k=sqrt(i);
for(j=2;j<=k;j++)
if(i%j==0)
break;
if(j>k){/*如果m是素数*/
printf("%4d",i);/*输出m*/
count++;/*累加已经输出的素数个数*/
if(count%6==0)/*如果count是6的倍数,换行*/
printf("\n");
}
}
printf("\n");
return0;
}
10.分钱1,2,5分
#include
intmain(void){
inti,j,k,m;
intcount=0;/*换法*/
printf("Inputmoney:
");
scanf("%d",&m);
for(i=1;i<=m;++i){/*1分*/
for(j=1;j<=m/2;++j){/*2分*/
for(k=1;k<=m/5;++k){/*5分*/
if(i+2*j+k*5==m){/*各分币加起来是否等于m分*/
printf("fan5:
%dfan2:
%dfan1:
%d\n",k,j,i);
count++;
}
}
}
}
printf("count=%d\n",count);
return0;
}
11.求m,n之间的水仙花数(各位数字的立方和等于其自身的数)
#include
intmain(){
inti,x,sum;
intm,n;
printf("Inputm:
");
scanf("%d",&m);
printf("Inputn:
");
scanf("%d",&n);
for(i=m;i<=n;i++){
x=i;
sum=0;
while(x!
=0){
sum=sum+(x%10)*(x%10)*(x%10);
x=x/10;
}
if(i==sum)
printf("%d\n",sum);
}
}
12.找出200以内的所有完数,并输出因子(一个数等于他各应子之和,6=1+2+3)
#include"stdio.h"/**/
intmain(void)
{
inti,j,s=1;/*s*/
for(i=1;i<=200;i++){
/*s=1;*/
for(j=2;j<=i/2;j++)
if(i/j==0)/*i%j==0*/
s=s+j;
if(s==i){
printf("%d=1",i);
for(j=2;j<=i/2;j++)
if(i/j==0)/*i%j==0*/
printf("+%d",j);
printf("\n");
}
}
return0;
}
13.验证哥德巴赫猜想(任何一个大于6的偶数可表示为2个素数之和)
#include
#include
intprime(intm);
intmain(void){
intx,a,b,count=0;
for(x=6;x<=100;x=x+2){
for(a=2;a<=x-1;a++){
if(!
prime(a))
continue;
b=x-a;
if(!
prime(b))
continue;
printf("%d=%d+%d",x,a,b);
count++;
if(count%5==0)
printf("\n");
break;
}
}
printf("\n");
}
intprime(intm){
inti,n;
if(m==1)
return0;
n=sqrt(m);
for(i=2;i<=n;i++)
if(m%i==0)
return0;
return1;
}
14.分离各位数并输出
#include
#include
intmain(void){
longintx,y,d;
inti,j,n=0;
printf("Inputaninteger:
");
scanf("%ld",&x);
if(x<0)
x=-x;
y=x;
while(y!
=0){/*确定长整数有几位*/
n++;
y=y/10;
}
if(n==0)
n=1;
y=x;
for(i=n;i>=1;i--){
d=1;
for(j=1;j
d=d*10;
printf("%ld",y/d);
y=y%d;
}
printf("\n");
return0;
}
15.求句子单词数
#include
intmain(){
intcount,word;
charch;
count=word=0;
printf("Inputwords:
");
while((ch=getchar())!
='\n'){
if(ch=='')
word=0;
elseif(word==0){
word=1;
count++;
}
}
printf("count=%d\n",count);
return0;
}
16.排序
#include
/*对n个数排序*/
voidselectionSort(inta[],intn)
{
inti,k,index,temp;
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;
}
}
intmain(void)
{
inti,n,temp;
inta[10];
intmin,max,minIndex,maxIndex;
printf("Inputn:
");
scanf("%d",&n);
printf("Input%dintegers:
",n);
for(i=0;iscanf("%d",&a[i]);
selectionSort(a,n);
printf("Aftersorted:
");
for(i=0;iprintf("%d",a[i]);
return0;
}
17.乘法表
#include
intmain(void)
{
inti,j,n;
inta[10][10];
printf("Inputn:
");
scanf("%d",&n);
for(i=1;i<=n;i++){
a[i][0]=i;
a[0][i]=i;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=i*j;
for(i=0;i<=n;i++){
for(j=0;j<=n;j++){
if((i==0)&&(j==0))
printf("*");
elseif((i==0)||(i>=j))/*下三角i>=j*/
printf("%d",a[i][j]);
}
printf("\n");
}
return0;
}
18.第几天
#include
intday_of_year(intyear,intmonth,intday);
intmain(void)
{
intyear,month,day;
printf("Inputyear,month,day:
");
scanf("%d%d%d",&year,&month,&day);
printf("Daysofyear:
%d\n",day_of_year(year,month,day));
return0;
}
/*计算某个日期对应该年的第几天*/
intday_of_year(intyear,intmonth,intday)
{
intk,leap;
inttab[2][13]={/*数组初始化,将每月的天数赋给数组*/
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
/*判断year是否为闰年,当year是闰年时,leap=1;当year是非闰年时,leap=0*/
leap=((year%4==0)&&(year%100!
=0))||(year%400==0);
/*计算天数*/
for(k=1;kday=day+tab[leap][k];
returnday;
}
19.鞍点
#include
intmain(void)
{
inti,j,k,n,flag;
introw,col;/*存放鞍点坐标*/
inta[6][6];
printf("Inputn:
");
scanf("%d",&n);
printf("Inputarray:
\n");
for(i=0;ifor(j=0;jscanf("%d",&a[i][j]);
for(i=0;icol=0;
for(j=0;jif(a[i][j]>a[i][col])
col=j;/*第i行最大值所在的列号*/
}
flag=1;
for(k=0;kif(a[k][col]{
flag=0;/*a[i][col]不是鞍点*/
break;
}
}
if(flag)
{
row=i;/*a[row][col]是鞍点*/
break;
}
}
if(flag)
printf("a[%d][%d]=%d\n",row,col,a[row][col]);
else
printf("NO");
return0;
}