C语言练习题3
1.输入三个数,显示其中的最大值。(两种方法,if语句和条件表达式)
#include <stdio.h>
main()
{
int a,b,c,d;
scanf ("%d%d%d",&a,&b,&c);
// d=a;
// if (a<b) d=b;
// if (d<c) d=c;
d=a<b?b:a;
d=d<c?c:d;
printf ("%d",d);
}
2.输入三个数,按照从大到小的顺序排序。
#include <stdio.h>
main()
{
int a,b,c,d;
scanf ("%d%d%d",&a,&b,&c);
if (a<b) d=a,a=b,b=d;
if (b<c) d=b,b=c,c=d;
if (a<b) d=a,a=b,b=d;
printf ("%d,%d,%d",a,b,c);
}
3.输入一个字符,判断为字母、数字或其他。
#include <stdio.h>
main()
{
int a;
scanf ("%c",&a);
if(a>='a'&&a<='z'||a>='A'&&a<='Z') printf("是字母");
else if(a>='0'&&a<='9') printf("是数字");
else printf("其他字符");
}
4.利用switch输入一个成绩,90分以上输出优秀,80-89分输出良好,60-70输出一般,60分以下输出不及格。
#include <stdio.h>
main()
{
int a;
printf("请输入考试成绩:");
scanf("%d",&a);
switch(a/10)
{
case 6:
case 7:printf("一般");break;
case 8:printf("良好");break;
case 9:
case 10:printf("优秀");break;
default:printf("不合格");
}
}
5.输入三个数,求其最大值,最小值,并按从大到小的顺序进行排序。
#include <stdio.h>
main ()
{
int a,b,c,min,max;
scanf("%d%d%d",&a,&b,&c);
max=a;
if(max<b) max=b;
if(max<c) max=c;
min=a;
if(min>b) min=b;
if(min>c) min=c;
b=a+b+c-min-max;
printf("最小值%d\n",min);
printf("最大值%d\n",max);
printf("排序%d,%d,%d",max,b,min);
}
6.输入一个5位数,判断其是否为回文数。(回文数个位和万位,十位和千位相等如12321,45654等)
#include <stdio.h>
main()
{
int a;
printf("请输入一个5位数");
scanf("%d",&a);
if (a>=10000 && a<=99999)
if(a/10000 == a%10 &&
a%10000/1000 == a%100/10)
printf("是回文数") ;
else
printf("不是回文数") ;
else
printf("不是五位数") ;
}
7.输入一个年份,判断其是否为闰年(能被四整除但是不能被100整除或者能被400整除)
#include <stdio.h>
main()
{
int a;
scanf ("%d",&a);
// if(a%4!=0 ||a%400!=0 && a%100==0 )
// printf("平年");
// else
// printf("闰年");
if(a%4==0&&a%100!=0||a%400==0)
printf("是闰年");
else
printf("是平年");
}
8.输入一个加减乘除和两个数,利用switch求其结果是什么。
#include <stdio.h>
main()
{
float a,b;
char f;
// printf("请输入算术符(+-*/)");
// f=getchar();
// printf("请输入a和b的值");
scanf("%f%c%f",&a,&f,&b);
switch(f)
{ case '+' : printf("%f%c%f=%f",a,f,b,a+b);break;
case '-' : printf("%f%c%f=%f",a,f,b,a-b);break;
case '*' : printf("%f%c%f=%f",a,f,b,a*b);break;
case '/' :
if (b==0) printf("无意义");
else
printf("%f%c%f=%f",a,f,b,a/b);break;
}
}
9.从键盘输入一个人的月收入(38500以内),输出应交的个人所得税,个税起征点为3500元。
所得税=月收入-3500元
税率%
m<=1500
3
M>1500&&m≤4500
10
m>4500&&m≤9000
20
m>9000&&m≤35000
25
#include <stdio.h>
main()
{
float m,n;
scanf ("%f",&m);
m=m-3500;
if (m<=4500)
if(m<=1500) n=0.03;
else n=0.1;
else if (m<=9000) n=0.2;
else n=0.25;
printf ("个人所得税为%f",m*n);
}
10.计算1+2+3+4……+100的值。
#include <stdio.h>
main()
{
int a,sum=0;
for(a=1;a<=100;a++)
{
sum = sum +a;
}
printf("%d",sum);
}
11.计算1*2*3*4*……*9*10的值。
#include <stdio.h>
main()
{
int a=1,sum=1;
while(a<=10)
{
sum=sum*a;
a++;
}
printf("%d",sum);
}
12.显示26个小写字母。
#include <stdio.h>
main()
{
int a=97;
do
{
printf("%-2c",a);
a++;
}while(a<='z');
}
13.在所有三位数中,显示百位和个位相等的所有数。
#include <stdio.h>
main()
{
int a;
for(a=100;a<=999;a++)
{
if(a/100 == a%10)
printf("%4d",a);
}
}
14.统计1-100所有能被7整除的数有多少个。
#include <stdio.h>
main()
{
int a,count=0;
for(a=1;a<=100;a++)
{
if(a%7==0)
count++;
}
printf("%d",count);
}
15.输入一串字符以*结尾,只显示其中所有的字母。
#include <stdio.h>
main()
{
int a;
do
{
a=getchar();
if(a>='a' && a<='z' || a>= 'A' && a<='Z')
printf("%c",a);
}while(a!='*');
}
16.输入一串字符以*结尾,统计其中字母和数字各有多少个。
#include <stdio.h>
main()
{
int a,s=0,n=0;
do
{
scanf("%c",&a);
if(a>='a' && a<='z' || a>= 'A' && a<='Z')
n++;
if(a>='0' && a<='9')
s++;
}while(a!='*');
printf("数字%d个,字母%d个",s,n);
}
17.输入一个数求其阶乘。(如5!=5*4*3*2*4)
#include <stdio.h>
main()
{
int a,sum=1;
scanf("%d",&a);
for(;a>=1;a--)
{
sum = sum * a;
}
printf("%d",sum);
}
18. 输出99乘法口诀表
#include <stdio.h>
main()
{
int a,b;
for(a=1;a<=9;a++)
{
for(b=1;b<=a;b++)
printf("%2d*%d=%-3d",a,b,a*b);
printf("\n");
}
}
19.百钱买百鸡问题
#include <stdio.h>
main()
{
int g,m;
for(g=0;g<=20;g++)
for(m=0;m<=33;m++)
if((100-g-m)%3==0 && g*5+m*3+(100-g-m)/3==100)
printf("g=%d,m=%d,x=%d\n",g,m,100-g-m);
}
20.鸡兔同笼问题
#include <stdio.h>
main()
{
int j,t;
for(j=1;j<=35;j++)
// for(t=1;t<=35;t++)
// if(j*2+t*4==94 && j+t ==35)
// printf("j=%d,t=%d",j,t);
if(j*2+(35-j)*4==94)
printf("j=%d,t=%d",j,35-j);
}
21.矩阵星号输出问题
#include <stdio.h>
main()
{
int a,b;
for(a=1;a<=9;a=a+2)
{
for(b=1;b<=a;b++)
printf("*");
printf("\n");
}
}
21.矩阵星号输出问题2
#include <stdio.h>
main()
{
int a,b;
for(a=9;a>=1;a=a-2)
{
for(b=1;b<=(9-a)/2;b++)
printf(" ");
for(b=a;b>=1;b--)
printf("*");
printf("\n");
}
}
23.输出从1-100所有的素数(素数也叫质数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。)
方法1:
#include <stdio.h>
main()
{
int i,j,count=0;
for(i=1;i<=100;i++)
{
for(j=2;j<i;j++)
if(i%j==0) count++;
if(count==0)
printf("%3d",i);
count=0;
}
}
方法2:
#include <stdio.h>
#include <math.h>
main()
{
int a,b=0,i,j;
for (j=101;j<200;j=j+2)
{for(i=2;i<j;i++)
{b=0;
if (j%i==0) {b++;break;}
}
if (b==0) printf("%5d",j);
}
}
24.任意输入两个数求最大公约数。
#include <stdio.h>
main()
{
int a,b,i,t;
scanf("%d%d",&a,&b);
for(i=a;i>=1;i--)
if(a%i==0&&b%i==0) break;
printf ("%3d",i);
}
25.任意输入两个数求最小公倍数。
#include <stdio.h>
main()
{
int a,b,i;
scanf("%d%d",&a,&b);
for(i=a;;i++)
if(i%a==0 && i%b==0) break;
printf("%d",i) ;
}
26.用1-4进行组合,输出所有的三位数。
#include <stdio.h>
#include <math.h>
main()
{
int i,k,j,a=0;
for (i=1;i<5;i++)
for(j=1;j<=4;j++)
for(k=1;k<=4;k++)
if (i!=j&&j!=k&&i!=k)
printf("%d%d%d ",i,j,k);
}
27.数组排序问题
#include <stdio.h>
#include <math.h>
main()
{
int i,k,j,a[7]={8,9,7,6,3,4};
for (i=0;i<7;i++)
for(k=0;k<6;k++)
if(a[k]<a[k+1])
j=a[k],a[k]=a[k+1],a[k+1]=j;
for (i=0;i<7;i++)
printf("%3d",a[i]);
}
2222222222222222
#include <stdio.h>
main()
{
int i,a[5];
for(i=0;i<=4;i++)
scanf("%1d",&a[i]);
for(i=4;i>=0;i--)
printf("%d",a[i]);
}
28. 输入10个数求和
#include <stdio.h>
main()
{
int i,j,a[10],sum=0;
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
sum = sum + a[i];
}
printf("%d",sum);
}
29. 输入5个数求最大值
#include <stdio.h>
main()
{
int i,max,a[5],sum=0;
for(i=0;i<=4;i++)
scanf("%d",&a[i]);
max=a[0];
for(i=0;i<=4;i++)
if(max<a[i]) max = a[i];
printf("%d",max);
}
30. 输入5个数,从大到小排列
#include <stdio.h>
main()
{
int t,i,j,a[5];
for(i=0;i<=4;i++)
scanf("%d",&a[i]);
for(i=0;i<=4;i++)
for(j=i;j<=4;j++)
if(a[i]<a[j+1])
t = a[i],a[i] = a[j+1], a[j+1]= t;
for(i=0;i<=4;i++)
printf("%d",a[i]);
}
31.二维数组的输入和输出
#include <stdio.h>
main()
{
int i,j,a[4][5];
for(i=0;i<=3;i++)
for(j=0;j<=4;j++)
scanf("%1d",&a[i][j]);
for(i=0;i<=3;i++)
{ for(j=0;j<=4;j++)
{
printf("%3d",a[i][j]);
}
}
}
常见数据类型
int :整型数据,通常为默认类型;
float :单精度浮点型;
double :双精度浮点型;
char :字符型数据,属于整型数据一种;
常见进制
八进制:0开头
十进制:直接写
十六进制:0x或0X开头
printf函数
概念:标准的输出函数
格式:printf("格式说明",变量列表)
常见的格式说明符:
%d 整型
%c 字符型
%f 浮点型
scanf函数
概念:C语言中标准的输入函数 接收用户从键盘上输入的内容
格式:scanf("格式控制",地址列表)
跳转结构
continue :结束当前循环,开始下一轮循环
break :跳出当前循环或switch结构
goto :无条件跳转语句
分支结构
if :条件语句,后面不需要放分号
else :条件语句否定分支(与if连用)
switch :开关语句(多重分支语句)
case :开关语句中的分支标记
default :开关语句中的“其他”分支,可选。
循环结构
for:循环结构,for(1;2;3)4;
执行顺序为1->2->4->3->2...循环,
其中2为循环条件;
do :do循环结构,do 1 while(2);
执行顺序是1->2->1...循环,
2为循环条件;
while :while循环结构,
while(1) 2; 的执行顺序是1->2->1...循环,
1为循环条件;