1.编写程序实现输入学生成绩,输出其评定等级(100~90为A,89~80为B,79~60为C,60以下为D)。
#include<stdio.h>
int main()
{
float score;
char grade;
printf("请输入学生成绩:");
scanf("%f",&score);
while(score>100||score<0)
{
printf("\n输入有误,请重输。");
scanf("%f",&score);
}
switch(int(score/10))
{
case 10:
case 9:grade='A';break;
case 8:grade='B';break;
case 7:
case 6:grade='C';break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:grade='D';break;
}
printf("成绩是%5.1f,相应的等级是%c。\n",score,grade);
return 0;
}
2. 从键盘输入一个正整数,输出其是否为素数的信息。
3. 从键盘输入一个整数,输出它是几位数。
#include <stdio.h>
int main()
{
int n,i=0;
printf("请输入一个数n:");
scanf("%d",&n);
while(n>0)
{
n=n/10;
i++;
}
printf("这个数是%d位数",i);
return 0;
}
4. 用c程序设计程序判断一个数是否为三位数。
#include<stdio.h>
int main()
{
int i,n;
printf("请输入一个正整数:");
scanf("%d",&n);
while(n>0)
{
n=n/10;
i++;
}
if(i==3)
printf("该数是三位数");
else
printf("该数不是三位数");
return 0;
}
5. 从键盘输入一个正整数,输出其是否为素数的信息。
#include<stdio.h>
int main()
{
int i,n;
printf("请输入一个正整数:");
scanf("%d",&n);
for (i=2;i<n;i++)
if (n%i==0) break;
if(i>=n)
printf("是素数");
else
printf("不是素数");
eturn 0;
}
6. 从键盘输入3个正整数,然后按照从大到小的顺序将其依次输出。
#include<stdio.h>
int main(void)
{
int a,b,c,t;
printf("请输入三个数");
scanf("%d%d%d",&a,&b,&c);
if(a<b)
{t=a;a=b;b=t;}
if(b<c)
{t=b;b=c;c=t;}
printf("从大到小:%d %d %d",a,b,c);
return 0;
}
//从键盘输入3个正整数,然后按照从大到小的顺序将其依次输出
7. 设变量a=5,b=6,交换两变量的值然后输出。
#include<stdio.h>
int main()
{
int a=5,b=6,t;
t=a;a=b;b=t;
printf("a=%d,b=%d",a,b);
return 0;
}
//设变量a=5,b=6,交换两变量的值然后输出
8. 编写一个程序判断从键盘输入的年份是否为闰年。
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(i%4==0&&i%100!=0||i%400==0)
printf("是闰年");
else
printf("不是闰年")
return 0;
}
9. 从键盘输入两个正整数,输出这两个正整数的最大公约数与最小公倍数。
#include<stdio.h>
int main()
{
int a,b,m,n,t;
printf("请输入两个正整数:\n");
scanf("%d%d",&m,&n);
if(m<n)
{
t = m;
m = n;
n = t;
}
a = m;
b = n;
while(b!=0)/*利用辗除法,直到b为0为止*/
{
t = a%b;
a=b;
b=t;
}
printf("最大公约数:%d\n",a);
printf("最小公倍数:%d\n",m*n/a);
return 0;
}
10. 用辗转相除法输出两个正整数的最大公因数。
#include <stdio.h>
void main()
{
int m,n,k;
scanf("%d%d",&m,&n);
if(m<n)
{k=m;m=n;n=k;}
while(n!=0)
{k=m%n;m=n;n=k;}
printf("%d",m);
}
//辗转相除法求最大公约数
11. 找出区间[2,100]内所有素数并输出,每行输出5个,每个素数占6个列宽。
#include<stdio.h>
int main()
{
int i,j,n=0;
for(i=2;i<=100;i++)
{
for(j=2;j<=i;j++)
{
if(i%j==0)
break;
}
if(j>=i)
{
printf("%6d",i);
n++;
if(n%5==0)
printf("\n");
}
}
return 0;
}
12. 编程输出[100,999]中的所有水仙花数。水仙花数是指3位数的各位数字的立方和等于这个3位数本身。例如,153=111+555+333。
#include<stdio.h>
void main()
{
int a,b,c;
int i;
for(i=100;i<1000;i++)
{
a=i%10;
b=i/10%10;
c=i/100;
if(i==a*a*a+b*b*b+c*c*c)
printf("%d\n",i);
}
}
13. 设s(n)=1+1/2+1/3+…+1/n,编写函数输出s(1)到s(20)的值,要求5个为一行。
#include<stdio.h>
int main()
{
int i,sign=1;
float sum,s[20];
sum=0.0;
for(i=1;i<=20;i++)
{
sum=sum+1.0*sign/i;
printf("s[%d]=%f\t",i,sum);
if(i%5==0)
printf("\n");
}
return 0;
}
14. 编写一个程序输出1801年到2021年之间的所有闰年,要求5个为一行。
#include<stdio.h>
int main()
{
int i,n=0;
for(i=1801;i<=2021;i++)
{
if(i%4==0&&i%100!=0||i%400==0)
{
n++;printf("%d ",i);
if(n%5==0)printf("\n");
}
}
return 0;
}
15. 从键盘输入班级学生的成绩,直到输入负数为止,输出最大值、最小值和平均值。
#include<stdio.h>
void main()
{
int a[100],i=0,max,min;
float average,sum=0;
do{
scanf("%d",&a[i]);
sum=sum+a[i++];
}while(a[i-1]>0);
average=(sum-a[i-1])/(i-1);
max=min=a[0];
while (a[i]>0)
{
if(max<a[i]) max=a[i];
if(min>a[i]) min=a[i];
}
printf("average:%.2f highest:%d lowest:%d ",average,max,min);
}
//从键盘输入班级学生的成绩,直到输入负数为止,输出最大值、最小值和平均值
16. 从键盘输入一个整数,通过自定义函数输出其逆序数,比如:1560的逆序数为651。
#include<stdio.h>
int reverse(int n);
int main()
{
int n;
scanf("%d",&n);
reverse(n);
return 0;
}
int reverse(int n)
{
int m;
while(n!=0)
{
m=n%10;
n=n/10;
printf("%d",m);
}
}
//从键盘输入一个整数,通过自定义函数输出其逆序数
17. 有100匹马,刚好驮100担货,大马驮三担,中马驮二担,两匹小马驮一担,求大马、中马、小马各有几匹。
#include <stdio.h>
int main ()
{
int x,y,z;
for(x=0;x<=33;x++)
{
for(y=0;y<=50;y++)
{
for(z=0;z<=200;z=z+2)
{
if(3*x+2*y+z/2==100 && x+y+z==100)
{
printf("大马%d只, 中马%d只, 小马%d只\n",x,y,z);
}
}
}
}
return 0;
}
//有100匹马,刚好驮100担货,大马驮三担,中马驮二担,两匹小马驮一担,求大马、中马、小马各有几匹。
18. 调用自定义函数验证从键盘输入的偶数满足哥德巴赫猜想,即:不小于6的偶数都可以表示为两个素数之和。
#include <stdio.h>
#include <math.h>
void main()
{
int a,b,c,d; /*初始化*/
scanf("%d",&a); /*输入一个数,应不小于6的偶数*/
for(b=3;b<=a/2;b+=2) /*从3开始,到该数1/2的,循环,步长为2,因为2这个素数与其他素数相加都不是偶数*/
{
for(c=2;c<=sqrt(b);c++) /*以下三行是为了求第一个加数,sqrt是开根号函数*/
if(b%c==0) break;
if(c>sqrt(b)) /*这两行判定这个数是不是素数*/
d=a-b;
else
continue; /*确定是素数以后,用减法求出另一个加数*/
for(c=2;c<=sqrt(d);c++) /*这三行同上面部分*/
if(d%c==0) break;
if(c>sqrt(d))
printf("%d=%d+%d\n",a,b,d); /*两者皆为素数时,给予输出*/
}
}
//调用自定义函数验证从键盘输入的偶数满足哥德巴赫猜想,即:不小于6的偶数都可以表示为两个素数之和
19. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?
#include<stdio.h>
int main()
{
float h = 100;//高度
int n = 0;//跳了几次
int i = 0;//循环变量
float ret = 0;//反弹高度
float sum = 0;//跳n次共经过sum米
scanf("%d", &n);
//跳了n次
for (i = 0; i < n; i++)
{
sum += h;
ret = h / 2;
h = ret;
}
printf("共经过%f米\n", sum);
printf("反弹高度%f米\n", ret);
return 0;
}
//一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?
20. 输出一元二次方程ax*x+bx+c=0的所有根,其中a,b,c的值由键盘输入。
#include <stdio.h>
#include<math.h>
int main()
{
float a,b,c;
float x1=0,x2=0;
float t=0;
scanf("%f %f %f",&a,&b,&c);
if(a==0)
{
printf("这不是一元二次方程\n");
}
else
{
t=sqrt(b*b-4*a*c);
if(t>0)
{
x1=(-b+t)/(2*a);
x2=(-b-t)/(2*a);
printf("方程有两个根: x1=%.2f,x2=%.2f\n",x1,x2);
}
else if(t==0)
{
x1=(-b)/(2*a);
printf("方程有一个根:x1=x2=%.2f\n",(-b)/(2*a));
}
else
{
printf("方程没有根\n");
}
}
return 0;
}
//求解任意的一元二次方程ax的平方+bx+c=0的根,其中a,b,c的值由键盘输入。要求考虑到解的各情况
21.已知e≈1+1/1!+1/2!+...+1/n!,输出第一次满足1/n!<1e-10时e的近似值(保留15位小数)。
22. 从键盘输入10数,按由大到小的顺序排序,并输出排序好数字输出。
#include<stdio.h>
void main()
{
int i,j,a[10],t;
printf("请输入十个数:");
for (i = 0; i < 10; i++)
scanf("%d",&a[i]);
for (i = 0; i < 10; i++)
for (j = i + 1; j < 10;j++)
if (a[i] < a[j])
{
t = a[i];
a[i] = a[j];
a[j] = t;
}
printf("从大到小排序后:");
for (i = 0; i < 10; i++)
printf(" %2d ", a[i]);
}
// 从键盘输入10数,按由大到小的顺序排序,并输出排序好数字输出。