C语言上机练习题及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1输入三个整数*,y,z,把这三个数由小到大输出。
# include <stdio.h>
void main()
{
int *,y,z,a;
scanf ("%d,%d,%d",&*,&y,&z);
if(*>y) {a=*; *=y;y=a;
}
if(*>z) { a=*; *=z; z=a;
}
if(y>z) {a=y; y=z; z=a;
}
printf("%d,%d,%d\n",*,y,z);
}
2输入圆的半径,输出圆的周长和面积。
# include<stdio.h>
# define PI 3.1415926
# define S ==PI*r*r
# define V (4.0/3)*PI*r*r*r
void main()
{
double r;
printf("please input r:");
scanf("%lf",&r);
printf("area is %.4lf\n",S);
printf("volume is %.4lf\n",V);
}
输入正方形的边长,输出正方形的周长和面积。
# include<stdio.h>
void main()
{
float c,zc,mj;
printf("输入你的正方形");
scanf("%f\n",&c);
zc=4*c;
mj=c*c;
printf("周长%f,面积%f,边长%f",zc,mj,c);
}
3用格式输入函数输入3个字符,并用输出函数反向输出3个字符和他们的ASCII 码。
# include<stdio.h>
int main()
{char-ch1,ch2,ch3;
printf("please input three characters:\n");
scanf("%C%C%c",&ch1,&ch2,&ch3);
printf("%c\n%d\n",ch3,ch3);
printf("%c\n%d\n",ch2,ch2);
printf("%c\n%d\n",ch1,ch1);
}
输入一个摄氏温度,要求输出华氏温度。
公式为f=9/5*c+32。
# include<stdio.h>
void main()
{
float C,F;
scanf("%f",&F);
C=5.0/9*(F-32);
printf("%8.2f",C);
}
4。
比拟两个数大小的题
#include<stdio.h>
void main()
{ int a,b;
scanf("%d,%d",&a,&b);
if(a>b) printf("%d\n",a);
else printf("%d\n",b);
}
第二题:此题作废〔千万不要用〕
#include<stdio.h>
voidmain()
{ char a,b,c;
scanf("%c,%c,%c",&a,&b,&c);
while((a<97||a>122)||(b<97||b>122)||(c<97||c>122));
{
printf("您输入非三个小写字母,请重新输入:\n");
scanf("%c,%c,%c",&a,&b,&c);
}
printf("%c,%c,%c\n",a-32,b-32,c-32);
}
5输入任意10个数,求他们的平均值。
# include <stdio.h>
void main()
{
Printf( "请输入10个整数:" );
int a[10], k = 0, sum = 0;
for (int i = 0; i < 10; ++i) ;
{
i>a[i];
if 10>=a[i] >0 ++k;
sum = sum+a[i];
}
float ave=sum / 10 .0
printf( "平均值为:%f\n",ave);
}
6实现从键盘输入两个整数,按从小到大次序输出这两个数。
# include<stdio.h>
void main()
{
int a, b, tem;
printf("input two numbers:\n");
scanf("%d,%d",&a,&b );
if(a>b)
{
tem=a;a=b;b=tem;
}
printf ("%d,%d",a,b);
7从键盘输入三个整数,输出最大的那个数。
#include<stdio.h>
void main()
{
int a,b,c,ma*;
printf("请输入三个整数:\n");
scanf("%d%d%d",&a,&b,&c);
ma*=a>b"a:b;
ma*=ma*>c"ma*:c;
printf("ma*=%d\n〞,ma*);
}
}
8输入任意一个三位数,将其各位数字反序输出〔例如输入123,输出321〕。
# include<stdio.h>
void main()
{
int *,y,z,n;
printf("please input an integer less than 1000\n");
scanf("%d",&n);
*=n/100; n=n-100**; y=n/10;z=n-10*y;
if (*>0)printf("%d%d%d\n",z,y,*);
else if(y>0) printf("%d%d\n",z,y);
else printf("%d\n",z);
}
9输入三角形的边长,求三角形面积。
〔面积=sqrt( s ( s-a ) (s-b) (s-c) ),s=(a+b+c)/2 〕。
# include<stdio.h>
void main()
{
float a,b,c,s,area;
int ok=0;
printf("input a,b,c:");
scanf ("%f,%f,%f",&a,&b,&c);
{
a+b>c" ok++:0;
a+c>b" ok++:0;
b+c>a" ok++:0;
ok==3
(s=1/2*(a+c+b);
area=sqrt (s*(s-a)*(s-b)*(s-c) );
printf ("s=%f\n,area=%f\n",s,area);
}
10输入2个数,比拟其大小,将较大的数输出。
#include<stdio.h>
voidmain()
{
int a,b,c,ma*,min;
printf("Input a=〞);
scanf("%d〞,&a);
printf("Input b=〞);
scanf("%d〞,&b);
If(a>b)
printf("较大的数是%d\n〞,a);
else
printf("较大的数是%d\n〞,b);
}
11输入任意三个整数,求它们的和及平均值。
#include"stdio.h"
void main()
{ int a,b,c,sum; float ave;
scanf("%d %d %d",&a,&b,&c);
sum=a+b+c; ave=(a+b+c)/3.0;
printf("三个数的和为: %d\n",sum);
printf("三个数的平均值为: %f\n",ave);
}
12求解方程a*2+b*+c=0的实数根。
a,b,c由键盘输入,a≠0且b2-4ac>0。
#include <stdio.h>
#include <math.h>
void main() {
float a, b, c, *1, *2;
printf("请输入a, b, c的值:");
scanf("%f%f%f", &a, &b, &c);
if (b*b - 4*a*c <= 0)
printf("输入的系数不对,b2-4ac不大于0!程序退出!\n");
else { *1 = (-b + sqrt(b*b - 4*a*c))/2*a;
*2 = (-b - sqrt(b*b - 4*a*c))/2*a;
printf("*1 = %.2f\n", *1);
printf("*2 = %.2f\n", *2); }
}
13写一个程序,输入一个班学生的成绩,求全班的平均成绩。
#include <iostream> using namespace std; void failnum(int score[], int num) { int n = 0; for(int i = 0; i < num; i++) { if(score[i] < 60) n++; } cout<<"不及格人数:"<<n<<endl; } void average_num(int score[], int num) { int sum = 0, number = 0; float n = 0; for(int i = 0; i < num; i++) sum = sum + score[i]; n = (sum * 1.0) / num; for(i = 0; i < num; i++) { if(score[i] >= n) number++; } cout<<"平均分为:"<<n<<endl; cout<<"成绩在全班平均分及平均分之上的学生人数:"<<number<<endl; } void stastics(int score[], int num) { int n1 = 0, n2 = 0, n3 = 0, n4 = 0, n5 = 0; for(int i = 0; i < num; i++) { if(score[i] < 60) n1++; else if(score[i] <= 69) n2++; else if(score[i] <= 79) n3++; else if(score[i] <= 89) n4++; if(score[i] >= 90) n5++; } cout<<"分数在60以下占:"<<( (n1* 1.0) / num)*100<<"%"<<endl; cout<<"分数在60-69占:"<<( (n2* 1.0) / num)*100<<"%"<<endl; cout<<"分数在70-79占:"<<( (n3* 1.0) / num)*100<<"%"<<endl; cout<<"分数在80-89占:"<<( (n4* 1.0) / num)*100<<"%"<<endl; cout<<"分数在90以上占:"<<( (n5* 1.0) / num)*100<<"%"<<endl; } int main() { int score[35], num; cout<<"输入全班总人数:"; cin>>num; cout<<"输入容〔每个数不超出 0-100〕,用空格分开:"<<endl; for(int i = 0; i < num; i++) cin>>score[i]; failnum(score, num); average_num(score, num); stastics(score, num); return 0; }
14编写程序输出如下列图形:〔没有的!!!!〕
*
* *
* * *
* * * *
从键盘输入一个整数判断是否为素数。
# include"stdio.h"
void main()
int i,n;
printf("please input a positive number:");
scanf("%d",&n);
for(i=2;i<=n-1;i++)
{
if(n%i==0)break;
}
if(i<=n-1) printf("%d不是素数\n",n);
else printf("%d不是素数\n",n);
}
15输入一个三位数,判断是否是一个"水仙花数〞,水仙花数是指3位数的各位数字的立方和等于这个三位数本身。
例如153=1*1*1+5*5*5+3*3*3。
#include<stdio.h> void main()
{ int *,a,b,c;
scanf("%d",*);
a=*/100; b=(*/10)%10; c=*%10;
if(*==a*a*a+b*b*b+c*c*c)
printf("YES"); else printf("NOT");
}
16输入年号,判断它是否为闰年。
#include<stdio.h>
void main()
{
int y;
scanf("%d",&y);
if(y%400==0||y%4==0&&y%100!=0)
printf("Yes.\n");
else
printf("No.\n");
}
17用for循环语句求n!
用递归法求n!
# include <stido .h>
int fac(int n);
void main()
{
int n;
printf("please input n(n>=0):"); scanf("%d",&n);
printf("%d!=%d\n",n,fac(n));
}
int fac(int n)
{
int t;
if (n==0||n==1)
t=1;
else
t=n*fac(n-1);
else
return (t);
}
18用函数实现求最大公约数的程序。
# include<stdio.h>
int gcd(int a,int b);
void main()
{int a,b,m;
printf("please input a,b:");
scanf("%d,%d",&a,&b);
m=gcd (a,b);
printf("gcd(%d,%d)=%d\n",a,b,m);}
int gcd(int a,int b)
{
int t
do{t=a%d;
a=b;b=t;}
while(b!=0);
return(a);
}
19用函数实现求最小公倍数的程序。
# include<stdio.h>
int gcd(int a,int b);
int lcm(int a,int b);
void main()
{int a,b,m,n;
printf("please input a,b:");
scanf("%d,%d",&a,&b);
m=gcd (a,b);
n=lcm(a,b);
printf("gcd(%d,%d)=%d\n",a,b,m);
printf("lcm(%d,%d)=%d\n",a,b,n);
}
int gcd(int a,int b)
{int t
do
{
t=a%d;
a=b;b=t;}
while(b!=0);
return(a);}
int lcm(int a,int b)
{
int t;
t=a*b/gcd(a,b);
return (t);
}20编写判断水仙花的函数,从主函数输入一个三位正整数N,在主函数中调用判断水仙花数的函数,求出三位数中所有的水仙花数。
水仙花数是指3位数的各位数字的立方和等于这个三位数本身。
例如153=1*1*1+5*5*5+3*3*3。
#include<stdio.h>
void f(m)
{ int *,y,z;
*=m/100;
y=m/10%10;
z=m%10;
if(m==*****+y*y*y+z*z*z)
printf("%d是水仙花数\n ",m);
else printf("%d不是水仙花数\n ",m);}
void main ()
{ int n;
scanf("%d", &n);
f(n〕;
}
21将一个正整数逆续输出。
# include <stdio.h>
void main()
{
int n,digit;
scanf("%d",&n);
while(n!=0)
{digit=n%10;
printf("%d\n:,digit);
n=n/10;}
}
22 从键盘输入一个正整数n,计算该数的各位数字之和并输出。
例如,输入数是5246,则计算5+2+4+6=17并输出。
# include<stdio.h>
void main()
{
int *,s=0,digit;
scanf("%d",&*);
while(*!=0)
{ digit=*%10; 循环
*=*/10;
s=s+digit;}
printf("%d\n",s);
}
23输出九九乘法表。
#include<stdio.h>
void main()
{
int a,b; for (a=1;a<=9;a++) ;
{
for(b=1;b<=a;b++) ;
{
printf("%d*%d=%-2d ",a,b,a*b);
}
printf("\n");
}
23用数组实现从键盘输入10个数,并且输出这10个数。
#include<stdio.h>
void main ()
{
int a[10],*p=a,i;
printf("Iput 10 numbers:\n"); for (i=0;i<10; i++)
scanf("%d",p+i);
printf("a[10]:");
for (i=0;i<10; i++)
printf("%3d",*(p+i));
printf("\n");
}。