c语言上机.docx
《c语言上机.docx》由会员分享,可在线阅读,更多相关《c语言上机.docx(84页珍藏版)》请在冰豆网上搜索。
c语言上机
2400HelloWorld!
——C语言初学者百题大战之一
输出"HelloWorld!
"(不含引号),并换行。
#include
intmain()
{
printf("HelloWorld!
\n");
return0;
}
2401VeryGood!
——C语言初学者百题大战之二
第一行输出15个*,第二行一个空行,知道空行怎么输出吗?
第三行先输出2个空格,然后是VeryGood!
第四行又是一个空行第五行输出15个*,然后换行。
#include
intmain()
{
printf("***************\n");
printf("\n");
printf("VeryGood!
\n");
printf("\n");
printf("***************\n");
return0;
}
2402鹦鹉学舌1——C语言初学者百题大战之三
输入一个整数。
输出刚才输入的那个整数,并换行。
#include
intmain()
{
intn1;
scanf("%d",&n1);
printf("%d\n",n1);
return0;
}
2403a+b——C语言初学者百题大战之四
输入2个整数a和b,中间用一个空格隔开。
输出为三行,第1行输出a=a,其中红色的a代替a的值,第2行输出b=b,其中红色的b代替b的值,第3行输出s=s,其中红色的s代替a+b的和,然后再换行。
#include
intmain()
{
inta,b,s;
scanf("%d%d",&a,&b);
s=a+b;
printf("a=%d\n",a);
printf("b=%d\n",b);
printf("s=%d\n",s);
return0;
}
2404a-b——C语言初学者百题大战之五
输入2个整数a和b,中间用逗号隔开。
输出a-b的值,然后换行。
#include
intmain()
{
inta,b,s;
scanf("%d,%d",&a,&b);
s=a-b;
printf("%d\n",s);
return0;
}
2405Howmanyminutes?
——C语言初学者百题大战之六
Theinputconsistsoftwolines.Thefirstlinecontainstwointegerh1andm1,separatedfromthesymbol:
andh1:
m1isthetimeyoubegintodotheproblem.Thesecondlinecontainstwointegerh2andm2,separatedfromthesymbol:
andh2:
m2isthetimeyoufinishedtheproblem.Youshouldoutputhowmanyminutesyouhavespendedontheproblemononeline.
#include
#include
intmain()
{
inth1,m1,h2,m2,n;
scanf("%d:
%d",&h1,&m1);
scanf("%d:
%d",&h2,&m2);
n=(h2-h1)*60+m2-m1;
printf("%d",n);
return0;
}
2406求较大的数——C语言初学者百题大战之七
输入2个整数a和b,用一个或几个空格隔开。
输出其中较大的数,并换行
#include
intmain()
{
inta,b,x;
scanf("%d%d",&a,&b);
if(a>b)x=a;
elsex=b;
printf("%d",x);
return0;
}
2407再求较大数——C语言初学者百题大战之八
输入三个数,用空格隔开。
输出三个数中最大数
#include
intmain()
{
inta,b,c,x;
scanf("%d%d%d",&a,&b,&c);
if(a>=b)
x=a;
else
x=b;
if(x>=c)
printf("%d",x);
else
printf("%d",c);
return0;
}
2408华氏摄氏温度转换——C语言初学者百题大战之九
输入一个华氏温度,根据公式C=(5/9)(F-32)计算对应的摄氏温度。
注意:
类型只能是float,且表达式必须为5.0/9*(f-32)输出输入的华氏温度和转换后的摄氏温度值。
输出为一行,具体详见示例fahr=100.000000,celsius=37.777779
#include
intmain()
{
floatfahr,celsius;
scanf("%f",&fahr);
celsius=5.0*(fahr-32)/9;
printf("fahr=%f,celsius=%f",fahr,celsius);
return0;
}
2409AA制——C语言初学者百题大战之十
输入分2行,第一行输入1个整数n(n>0),表示共有n个人平摊费用第二行输入3个数,分别是这次去玩的3个项目的开支(单位是元)输出一行,计算出每个人应该承担的费用,精确到分(保留2位小数)
#include
intmain()
{
intn;
scanf("%d",&n);
floata,b,c,x;
scanf("%f%f%f",&a,&b,&c);
x=(a+b+c)/n;
printf("%.2f",x);
return0;
}
2413求三角形面积——C语言初学者百题大战之十四
输入三角形的三边长,求三角形面积。
为简单起见,设输入的三边长a,b,c能构成三角形。
输入为一行,输入三角形的三条边长。
输出为一行,计算出该三角形的面积,精确到小数点后2位
#include
#include
intmain()
{
floata,b,c,p,s;
scanf("%f%f%f",&a,&b,&c);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("%.2f",s);
return0;
}
2414求方程的解——C语言初学者百题大战之十五
求ax2+bx+c=0方程的实根。
解方程要考虑系数a等于零的情况,且解x1、x2必须是float型。
a等于零有两种情况(b==0,b!
=0),a不等于零有三种情况(delta>0、==0、<0),先计算得到x1、x2,再printf输出。
输入三个数a,b,c。
输出方程的实根,如果方程有实根,则输出根;如果方程有2个不等实根,则分2行输出,第一行输出较大根,第二行输出较小根。
其余情况(如无实根等)则输出No
#include
#include
intmain()
{
floata,b,c,d,x1,x2;
scanf("%f%f%f",&a,&b,&c);
d=b*b-4*a*c;
if(a==0){
if(b==0){
printf("No\n");
}
else
printf("%f\n",-c/b);
}
else
{if(d>0){
x1=(-b+sqrt(d))/(2*a);
x2=(-b-sqrt(d))/(2*a);
printf("%f\n%f\n",x1,x2);
}
elseif(d==0)
printf("%f\n",-b/(2*a));
else
printf("No");
}
return0;
}
2415整除——C语言初学者百题大战之十六
输入三个整数,分别为a,b,c(其中b,c均不为0)如果a既是b的整数倍又是c的整数倍,则输出Yes,否则输出No
#include
#include
intmain()
{
inta,b,c;
scanf("%d%d%d",&a,&b,&c);
if(a%b==0&&a%c==0)
printf("Yes");
else
printf("No");
return0;
}
2416闰年——C语言初学者百题大战之十七
输入一个整数年份,要求判断是否是闰年。
符合以下两种情况都是闰年:
1.能被4整除但是不能被100整除2.能被400整除。
如果是闰年输出Yes,否则输出No
#include
intmain()
{
intyear;
scanf("%d",&year);
if((year%4==0&&year%100!
=0)||(year%400==0))
printf("Yes");
else
printf("No");
return0;
}
2419逆序输出——C语言初学者百题大战之二十
输入一个不多于5位的正整数。
输出分2行,第一行是一个整数,输出是几位数,第2行逆序输出
#include
#include
intmain()
{
intinput,bit,output;
scanf("%d",&input);
bit=1+(int)log10(input);
printf("%d\n",bit);
intx,y;
for(y=input,x=bit-1;x>=0;x--)
{
output=y%10;
printf("%d",output);
y=y/10;
}
printf("\n");
return0;
}
2420回文数——C语言初学者百题大战之二十一
一个5位数,判断它是不是回文数。
即12321是回文数,个位与万位相同,十位与千位相同。
输入一个5位整数。
如果是回文数,则输出Yes,否则输出No
#include
intmain()
{
intn,a,b,d,e;
scanf("%d",&n);
a=n%10;
b=n/10%10;
d=n/1000%10;
e=n/10000%10;
if(a==e&&b==d)
printf("Yes\n");
else
printf("No\n");
return0;
}
2425判断是否是素数
素数是除了1和它本身之外没有其它因子的自然数。
多组测试数据。
每组数据一行输入一个正整数。
对于每组测试数据判断输入的数是否是素数。
如果是则在一行里输出Yes,否则输出No
#include
intmain()
{
intn,i;
while(scanf("%d",&n)!
=EOF)
{
for(i=2;i<=n/2;i++)
if(n%i==0)
break;
if(i>n/2&&n!
=1)
printf("Yes\n");
else
printf("No\n");
}
return0;
}
2429绝配队伍
水仙花数是指一个 3位数,它的每个位上的数字的3次幂之和等于它本身。
(例如:
1^3+5^3+3^3=153)多组测试数据,每组输入一个3位整数。
每组输出一行,如果是水仙花数则输出"Yes“,否则输出"No"
#include
intmain()
{
intn,i,a,b,c;
while(scanf("%d",&n)!
=EOF)
{
a=n%10;
b=((n-a)%100)/10;
c=(n-a-b*10)/100;
if(n==a*a*a+b*b*b+c*c*c)
printf("Yes\n");
else
printf("No\n");
}
return0;
}
2432猴子吃桃
Firstday,heateahalfofthepeaches,thenateanotheroneoftheleftpeaches.Thenextday,heateahalfoftheleftpeaches,thenanotherone.Untilthen-thday,beforeheatehefoundonlyonepeach.PleasehelpSunWukongtocalculatehowmanypeacheshetookfromthekingdomofheaven.Theinputfilecontainsoneormoretestcases,eachlineisthedaysN(1#include
intmain()
{
inti,n,s;
while(scanf("%d",&n)!
=EOF)
{
s=1;
for(i=1;i<=n-1;i++)
s=(s+1)*2;
printf("%d\n",s);
}
return0;
}
2436百鸡问题
用100元买100只鸡,大公鸡5元1只,母鸡3元1只,小鸡1元3只。
问各能买多少只?
输出所有的可能,要求一种可能一行,分别输出三个整数,代表公鸡,母鸡及小鸡的个数,中间用一个空格隔开输出的时候要求,先输出公鸡数最少的可能,公鸡数如果相同的几种情况,先输出母鸡数最少的情况
#include
intmain()
{
intx,y,z;
for(x=0;x<=12;x++)
for(y=0;y<=25;y++)
{
z=100-x-y;
if(5*x+3*y+z/3==100&&z%3==0)
printf("%d%d%d\n",x,y,z);
}
return0;
}
2473杨辉三角
输入数据包含多个测试实例,每个测试实例的输入只包含一个正整数n(1<=n<=30),表示将要输出的杨辉三角的层数。
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。
#include
intmain()
{
intb[32],i,j,n;
while(scanf("%d",&n)!
=EOF)
{
b[0]=1;
printf("%d\n",b[0]);
for(i=1;ifor(j=i-1;j>0;j--)
{
b[j]=b[j]+b[j-1];
}
for(j=0;j<=i;j++)
{
printf("%d",b[j]);
if(j!
=i)
printf("");
}
printf("\n");
}
printf("\n");
}
}
2482年龄问题
有n个人坐在一起,问第n个人多少岁?
他说比第n-1个人大m岁。
问第n-1个人岁数,他说比第n-2个人大m岁。
问第n-2个人,又说比第n-3人大m岁。
......最后问第一个人,他说是K岁。
请问第n个人多大?
(可递归函数实现)多组测试数据每组一行分别输入3个整数n,m和k。
输出第n个人的岁数
#include
intfn(intm,intn,intk);
intmain()
{
intm,n,k,s;
while(scanf("%d%d%d",&n,&m,&k)!
=EOF)
{
s=fn(m,n,k);
printf("%d\n",s);
}
return0;
}
intfn(intm,intn,intk)
{
intresult;
if(n==1)
result=k;
else
result=fn(m,n-1,k)+m;
returnresult;
}
3500判断某整数是正整数、负整数还是零
输入一个整数,判断该数是正整数、负整数还是零。
如果是正整数,输出'+';如果是负整数,输出'-';如果是零,输出'0'。
#include
intmain()
{
intn;
scanf("%d",&n);
if(n>0)
printf("+");
if(n<0)
printf("-");
if(n==0)
printf("0");
return0;
}
3501判断某整数是否既是5又是7的整数倍
输入一个正整数,判断该数是否既是5又是7的整数倍。
若是,则输出Yes,否则输出No.
#include
intmain()
{
intn;
scanf("%d",&n);
if(n%5==0&&n%7==0)
printf("Yes");
else
printf("No");
return0;
}
3502输入数字1-7,打印出对应的英文(Monday-Sunday).
输入数字1-7,打印出对应的英文(Monday-Sunday).输出该数字对应的英文单词
#include
intmain()
{
intn;
scanf("%d",&n);
switch(n)
{
case1:
printf("Monday\n");break;
case2:
printf("Tuesday\n");break;
case3:
printf("Wednesday\n");break;
case4:
printf("Thursday\n");break;
case5:
printf("Friday\n");break;
case6:
printf("Saturday\n");break;
case7:
printf("Sunday\n");break;
default:
printf("Error\n");break;
}
return0;
}
3503百分制转换五级记分制
输入一个score(0<=score<=100)。
按照以下规则进行转换并输出转换后的成绩。
score:
90-100---->goodscore:
80-89---->nicerscore:
70-79---->mediumscore:
60-69---->passscore:
0-59---->fail
#include
intmain()
{
intx;
scanf("%d",&x);
switch(x/10)
{
case10:
printf("good\n");break;
case9:
printf("good\n");break;
case8:
printf("nicer\n");break;
case7:
printf("medium\n");break;
case6:
printf("pass\n");break;
case5:
printf("fail\n");break;
case4:
printf("fail\n");break;
case3:
printf("fail\n");break;
case2:
printf("fail\n");break;
case1:
printf("fail\n");break;
case0:
printf("fail\n");break;
default:
printf("Error\n");break;
}
return0;
}
3504对输入的任意整数x,计算出相应的y值
要求根据以下函数关系,对输入的任意整数x,计算出相应的y(float类型)值。
x的值y的值x<0y=00<=x<10y=x10<=x<20y=10x>=20y=30计算出相应的y值
#include
intmain()
{
intx;
floaty;
scanf("%d",&x);
if(x<0)
y=0;
elseif(x>=0&&x<10)
y=x;
elseif(x>=10&&x<20)
y=10;
else
y=30;
printf("y=%f",y);
return0;
}
3505分段式函数计算
输入一个实数x(float),计算并输出下列分段函数的值。
请调用数学函数计算。
y=x^5+2x+1(x≤0)y=e^x-lg(x)(x>0)根据计算公式计算y值并输出(保留3位小数)。
#include
#include
intmain()
{
floatx,y;
scanf("%f",&x);
if(x>0)
y=exp(x)-log10(x);
if(x<=0)
y=pow(x,5)+2*x+1;
printf("y=%.3f",y);
return0;
}
3506求1+2+……+N的和
输入一个正整数N(N≥1)。
输出1+2+……+N的和。
#include
intmain()
{
intN,i,sum;
scanf("%d",&N);
i=1;
sum=0;
while(i<=N)
{
sum=sum+i;
i++;
}
printf("sum=%d\n",sum);
retur