C语言必背的典型程序设计题目 -选择、循环- 答案
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
else if(deadline>=5 && deadline<8)
{
interest=0.00375*capital*12*deadline;
total=capital+interest;
printf("Interest : %.3f , Total: %.3f\n",interest,total);
printf("有两个虚根:x1=%.2f + %.2f*i,x2=%.2f - %.2f*i\n",x1,x2,x1,x2);
}
}
else
printf("二次项系数为0,不是一元二次方程!");
}
3、已知银行整存整取存款不同期限的月息利率分别为:
0.315%期限一年
0.330%期限二年
0.345%期限三年
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
printf("有两个不同的实根:x1=%.2f ,x2=%.2f\n",x1,x2);
}
else if(deta==0)
{
x1=x2=-b/(2*a);
printf("有两个相同的根:x1=x2=%.2f\n",x1);
}
else
{
x1=-b/(2*a);
x2=sqrt(-deta)/(2*a);
{
interest=0.00315*capital*12*deadline;
total=capital+interest;
printf("Interest : %.3f , Total: %.3f\n",interest,total);
}
else
printf("score input error!\n");
{
if((n1+n2+n3==30)&&(3*n1+5*n2+3*n3==100))
{
printf("%-4d%-4d%-10d",n1,n2,n3);
n++;
if(n%4==0) printf("\n");
}
}
printf("共有%d种可能的组合。\n",n);
}
2、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/
default:grade='E';break;
}
printf("Score : %d , Gread: %c\n",score,grade);
}
else
printf("score input error!\n");
}
循环结构必背经典程序(参考答案)
1、“百钱买百鸡问题”母鸡五钱一只,公鸡三钱一只,小鸡一钱三只,现有百钱欲买百鸡,共有多少种买法?
if(y>z)
{t=y;y=z;z=t;} /*交换z,y的值*/
printf("small to big: %d %d %d\n",x,y,z);
}
2、求解一元二次方程ax2+bx+c=0。
#include <stdio.h>
#include <math.h>
void main()
{
double a,b,c,deta,x1,x2;
else if (e!=0) printf(" there are 1,%ld\n",e);
}
5、计算器程序。用户输入运算数和四则运算符,输出计算结果。
#include <stdio.h>
void main()
{
float a,b;
char c;
printf("input expression: a+(-,*,/)b \n");
scanf("%f%c%f",&a,&c,&b);
switch(c)
{Leabharlann Baidu
case '+': printf("%f\n",a+b);break;
case '-': printf("%f\n",a-b);break;
case '*': printf("%f\n",a*b);break;
case '/': printf("%f\n",a/b);break;
scanf("%lf%d",&capital,&deadline);
if(deadline>=8)
{
interest=0.00420*capital*12*deadline;
total=capital+interest;
printf("Interest : %.3f , Total: %.3f\n",interest,total);
scanf("%d",&score);
if(score<=100 && score>=0)
{
switch(score/10)
{
case 10:
case 9:grade='A';break;
case 8:grade='B';break;
case 7:grade='C';break;
case 6:grade='D';break;
}
}
3、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21....*/
#include <stdio.h>
voidmain()
{
long f1,f2;
int i;
printf("Enter a,b,c:");
scanf("%lf%lf%lf",&a,&b,&c);
if(fabs(a)>1e-6)
{
deta=b*b-4*a*c;
if(deta>0)
{
x1=-b/(2*a)+sqrt(deta)/(2*a);
x2=-b/(2*a)-sqrt(deta)/(2*a);;
}
}
4、输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
#include "stdio.h"
voidmain()
{
char c;
int letters=0,space=0,digit=0,others=0;
printf("please input some characters\n");
f1=f2=1;
for(i=1;i<=20;i++)
{ printf("%12ld %12ld",f1,f2);
if(i%2==0) printf("\n"); /*控制输出,每行四个*/
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
b=x%10000/1000; /*分解出千位*/
c=x%1000/100; /*分解出百位*/
d=x%100/10; /*分解出十位*/
e=x%10; /*分解出个位*/
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
}
6、输入两个整数,求这两个数的最大公约数和最小公倍数。(例如,48和36,最大公约数为12,最小公倍数为144)
算法提示:最大公约数可使用辗转相除法,计算方式如下:
mn=0
gcd(m,n)=
gcd(n,m%n) n≠0
最小公倍数等于两个数之积除以最大公约数。
#include <stdio.h>
void main()
}
else if(deadline==2)
{
interest=0.00330*capital*12*deadline;
total=capital+interest;
printf("Interest : %.3f , Total: %.3f\n",interest,total);
}
else if(deadline==1)
default: printf("input error\n");
}
}
6、输入学生成绩,输出等级,规则如下:
90~100 A
80~89 B
70~79 C
60~69 D
不及格E
#include <stdio.h>
void main()
{
int score;
char grade;
printf("Enter a score:");
}
5、计算下面的公式,并输出结果。
#include <stdio.h>
void main( )
{
double sum,t;
int i,k;
sum=0.0;t=1.0;k=1;
for(i=1;i<10;i++)
{
k*=i;
sum+=t/k;
t=-t;
}
printf("1-1/2!+1/3!-...+1/9!=%.5f\n",sum);
则表明此数不是素数,反之是素数。*/
#include<stdio.h>
#include "math.h"
void main()
{
int m,i,k,h=0,leap=1;
printf("\n");
for(m=101;m<=200;m++)
#include "stdio.h"
voidmain()
{int i,j,result;
for (i=1;i<10;i++)
{ for(j=1;j<10;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
}
printf("\n");/*每一行后换行*/
#include<stdio.h>
void main()
{
int n1,n2,n3,n;
printf("所有可能的组合为:\n");
printf("公鸡 母鸡 小鸡\n");
n=0;
for(n1=1;n1<=33;n1++)
for(n2=1;n2<=20;n2++)
for(n3=1;n3<=33;n3++)
while(b!=0) /*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
printf("最大公约数:%d\n",a);
printf("最小公倍数:%d\n",num1*num2/a);
}
7、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
选择结构必背经典程序(参考答案)
1、输入3个整数,排序后输出。
#include <stdio.h>
voidmain()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;} /*交换x,z的值*/
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1<num2)
{ temp=num1; num1=num2; num2=temp; }
a=num1;b=num2;
}
4、给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数是321,应输出123。
#include <stdio.h>
void main( )
{
long a,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000; /*分解出万位*/
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
others++;
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,space,digit,others);
}
else if(deadline>=3 && deadline<5)
{
interest=0.00345*capital*12*deadline;
total=capital+interest;
printf("Interest : %.3f , Total: %.3f\n",interest,total);
0.375%期限五年
0.420%期限八年
要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
#include <stdio.h>
void main()
{
double capital,total,interest;
int deadline;
printf("Enter a capital and deadline:");
else if(deadline>=5 && deadline<8)
{
interest=0.00375*capital*12*deadline;
total=capital+interest;
printf("Interest : %.3f , Total: %.3f\n",interest,total);
printf("有两个虚根:x1=%.2f + %.2f*i,x2=%.2f - %.2f*i\n",x1,x2,x1,x2);
}
}
else
printf("二次项系数为0,不是一元二次方程!");
}
3、已知银行整存整取存款不同期限的月息利率分别为:
0.315%期限一年
0.330%期限二年
0.345%期限三年
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
printf("有两个不同的实根:x1=%.2f ,x2=%.2f\n",x1,x2);
}
else if(deta==0)
{
x1=x2=-b/(2*a);
printf("有两个相同的根:x1=x2=%.2f\n",x1);
}
else
{
x1=-b/(2*a);
x2=sqrt(-deta)/(2*a);
{
interest=0.00315*capital*12*deadline;
total=capital+interest;
printf("Interest : %.3f , Total: %.3f\n",interest,total);
}
else
printf("score input error!\n");
{
if((n1+n2+n3==30)&&(3*n1+5*n2+3*n3==100))
{
printf("%-4d%-4d%-10d",n1,n2,n3);
n++;
if(n%4==0) printf("\n");
}
}
printf("共有%d种可能的组合。\n",n);
}
2、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/
default:grade='E';break;
}
printf("Score : %d , Gread: %c\n",score,grade);
}
else
printf("score input error!\n");
}
循环结构必背经典程序(参考答案)
1、“百钱买百鸡问题”母鸡五钱一只,公鸡三钱一只,小鸡一钱三只,现有百钱欲买百鸡,共有多少种买法?
if(y>z)
{t=y;y=z;z=t;} /*交换z,y的值*/
printf("small to big: %d %d %d\n",x,y,z);
}
2、求解一元二次方程ax2+bx+c=0。
#include <stdio.h>
#include <math.h>
void main()
{
double a,b,c,deta,x1,x2;
else if (e!=0) printf(" there are 1,%ld\n",e);
}
5、计算器程序。用户输入运算数和四则运算符,输出计算结果。
#include <stdio.h>
void main()
{
float a,b;
char c;
printf("input expression: a+(-,*,/)b \n");
scanf("%f%c%f",&a,&c,&b);
switch(c)
{Leabharlann Baidu
case '+': printf("%f\n",a+b);break;
case '-': printf("%f\n",a-b);break;
case '*': printf("%f\n",a*b);break;
case '/': printf("%f\n",a/b);break;
scanf("%lf%d",&capital,&deadline);
if(deadline>=8)
{
interest=0.00420*capital*12*deadline;
total=capital+interest;
printf("Interest : %.3f , Total: %.3f\n",interest,total);
scanf("%d",&score);
if(score<=100 && score>=0)
{
switch(score/10)
{
case 10:
case 9:grade='A';break;
case 8:grade='B';break;
case 7:grade='C';break;
case 6:grade='D';break;
}
}
3、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列1,1,2,3,5,8,13,21....*/
#include <stdio.h>
voidmain()
{
long f1,f2;
int i;
printf("Enter a,b,c:");
scanf("%lf%lf%lf",&a,&b,&c);
if(fabs(a)>1e-6)
{
deta=b*b-4*a*c;
if(deta>0)
{
x1=-b/(2*a)+sqrt(deta)/(2*a);
x2=-b/(2*a)-sqrt(deta)/(2*a);;
}
}
4、输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数。
#include "stdio.h"
voidmain()
{
char c;
int letters=0,space=0,digit=0,others=0;
printf("please input some characters\n");
f1=f2=1;
for(i=1;i<=20;i++)
{ printf("%12ld %12ld",f1,f2);
if(i%2==0) printf("\n"); /*控制输出,每行四个*/
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
b=x%10000/1000; /*分解出千位*/
c=x%1000/100; /*分解出百位*/
d=x%100/10; /*分解出十位*/
e=x%10; /*分解出个位*/
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
}
6、输入两个整数,求这两个数的最大公约数和最小公倍数。(例如,48和36,最大公约数为12,最小公倍数为144)
算法提示:最大公约数可使用辗转相除法,计算方式如下:
mn=0
gcd(m,n)=
gcd(n,m%n) n≠0
最小公倍数等于两个数之积除以最大公约数。
#include <stdio.h>
void main()
}
else if(deadline==2)
{
interest=0.00330*capital*12*deadline;
total=capital+interest;
printf("Interest : %.3f , Total: %.3f\n",interest,total);
}
else if(deadline==1)
default: printf("input error\n");
}
}
6、输入学生成绩,输出等级,规则如下:
90~100 A
80~89 B
70~79 C
60~69 D
不及格E
#include <stdio.h>
void main()
{
int score;
char grade;
printf("Enter a score:");
}
5、计算下面的公式,并输出结果。
#include <stdio.h>
void main( )
{
double sum,t;
int i,k;
sum=0.0;t=1.0;k=1;
for(i=1;i<10;i++)
{
k*=i;
sum+=t/k;
t=-t;
}
printf("1-1/2!+1/3!-...+1/9!=%.5f\n",sum);
则表明此数不是素数,反之是素数。*/
#include<stdio.h>
#include "math.h"
void main()
{
int m,i,k,h=0,leap=1;
printf("\n");
for(m=101;m<=200;m++)
#include "stdio.h"
voidmain()
{int i,j,result;
for (i=1;i<10;i++)
{ for(j=1;j<10;j++)
{
result=i*j;
printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/
}
printf("\n");/*每一行后换行*/
#include<stdio.h>
void main()
{
int n1,n2,n3,n;
printf("所有可能的组合为:\n");
printf("公鸡 母鸡 小鸡\n");
n=0;
for(n1=1;n1<=33;n1++)
for(n2=1;n2<=20;n2++)
for(n3=1;n3<=33;n3++)
while(b!=0) /*利用辗除法,直到b为0为止*/
{
temp=a%b;
a=b;
b=temp;
}
printf("最大公约数:%d\n",a);
printf("最小公倍数:%d\n",num1*num2/a);
}
7、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,
选择结构必背经典程序(参考答案)
1、输入3个整数,排序后输出。
#include <stdio.h>
voidmain()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*交换x,y的值*/
if(x>z)
{t=z;z=x;x=t;} /*交换x,z的值*/
{
int a,b,num1,num2,temp;
printf("please input two numbers:\n");
scanf("%d,%d",&num1,&num2);
if(num1<num2)
{ temp=num1; num1=num2; num2=temp; }
a=num1;b=num2;
}
4、给一个不多于5位的正整数,要求:①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字,例如原数是321,应输出123。
#include <stdio.h>
void main( )
{
long a,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000; /*分解出万位*/
while((c=getchar())!='\n')
{
if(c>='a'&&c<='z'||c>='A'&&c<='Z')
letters++;
else if(c==' ')
space++;
else if(c>='0'&&c<='9')
digit++;
else
others++;
}
printf("all in all:char=%d space=%d digit=%d others=%d\n",letters,space,digit,others);
}
else if(deadline>=3 && deadline<5)
{
interest=0.00345*capital*12*deadline;
total=capital+interest;
printf("Interest : %.3f , Total: %.3f\n",interest,total);
0.375%期限五年
0.420%期限八年
要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。
#include <stdio.h>
void main()
{
double capital,total,interest;
int deadline;
printf("Enter a capital and deadline:");