C語言練習(xí)題3
1.輸入三個數(shù),顯示其中的最大值。(兩種方法,if語句和條件表達(dá)式)
#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.輸入三個數(shù),按照從大到小的順序排序。
#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.輸入一個字符,判斷為字母、數(shù)字或其他。
#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("是數(shù)字");
????? else? printf("其他字符");
????? ?????????
}
4.利用switch輸入一個成績,90分以上輸出優(yōu)秀,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("優(yōu)秀");break;
????? default:printf("不合格");
????? }
}
5.輸入三個數(shù),求其最大值,最小值,并按從大到小的順序進(jìn)行排序。
#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位數(shù),判斷其是否為回文數(shù)。(回文數(shù)個位和萬位,十位和千位相等如12321,45654等)
#include <stdio.h>
main()
{
????? int a;
????? printf("請輸入一個5位數(shù)");
????? scanf("%d",&a);
????? if (a>=10000 && a<=99999)
?????????? if(a/10000 == a%10 &&
?????????? a%10000/1000 == a%100/10)
?????????? printf("是回文數(shù)") ;
?????????? else
?????????? printf("不是回文數(shù)") ;
????? else
?????????? printf("不是五位數(shù)") ;
}
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.輸入一個加減乘除和兩個數(shù),利用switch求其結(jié)果是什么。
#include <stdio.h>
main()
{
????? float a,b;
????? char f;
//??? printf("請輸入算術(shù)符(+-*/)");
//??? 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以內(nèi)),輸出應(yīng)交的個人所得稅,個稅起征點為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.在所有三位數(shù)中,顯示百位和個位相等的所有數(shù)。
#include <stdio.h>
main()
{
????? int a;
????? for(a=100;a<=999;a++)
????? {
?????????? if(a/100 == a%10)
???????????????? printf("%4d",a);
????? }
}
14.統(tǒng)計1-100所有能被7整除的數(shù)有多少個。
#include <stdio.h>
main()
{
????? int a,count=0;
????? for(a=1;a<=100;a++)
????? {
?????????? if(a%7==0)
?????????? count++;
????? }
????? printf("%d",count);
}
15.輸入一串字符以*結(jié)尾,只顯示其中所有的字母。
#include <stdio.h>
main()
{
????? int a;
????? do
????? {
?????????? a=getchar();
?????????? if(a>='a' && a<='z' || a>= 'A' && a<='Z')
???????????????? printf("%c",a);
????? }while(a!='*');
}
16.輸入一串字符以*結(jié)尾,統(tǒng)計其中字母和數(shù)字各有多少個。
#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("數(shù)字%d個,字母%d個",s,n);
}
17.輸入一個數(shù)求其階乘。(如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所有的素數(shù)(素數(shù)也叫質(zhì)數(shù),是指在大于1的自然數(shù)中,除了1和它本身以外不再有其他因數(shù)的自然數(shù)。)
方法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.任意輸入兩個數(shù)求最大公約數(shù)。
#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.任意輸入兩個數(shù)求最小公倍數(shù)。
#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進(jìn)行組合,輸出所有的三位數(shù)。
#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.數(shù)組排序問題
#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個數(shù)求和
#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個數(shù)求最大值
#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個數(shù),從大到小排列
#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.二維數(shù)組的輸入和輸出
#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]);?
?????????? }
??????????
????? }
}
常見數(shù)據(jù)類型
int :整型數(shù)據(jù),通常為默認(rèn)類型;
float :單精度浮點型;
double :雙精度浮點型;
char :字符型數(shù)據(jù),屬于整型數(shù)據(jù)一種;
常見進(jìn)制
八進(jìn)制:0開頭
十進(jìn)制:直接寫
十六進(jìn)制:0x或0X開頭
printf函數(shù)
概念:標(biāo)準(zhǔn)的輸出函數(shù)
格式:printf("格式說明",變量列表)
常見的格式說明符:
%d 整型
%c 字符型
%f 浮點型?
scanf函數(shù)
概念:C語言中標(biāo)準(zhǔn)的輸入函數(shù) 接收用戶從鍵盤上輸入的內(nèi)容
格式:scanf("格式控制",地址列表)?
跳轉(zhuǎn)結(jié)構(gòu)
continue :結(jié)束當(dāng)前循環(huán),開始下一輪循環(huán)
break :跳出當(dāng)前循環(huán)或switch結(jié)構(gòu)
goto :無條件跳轉(zhuǎn)語句
分支結(jié)構(gòu)
if :條件語句,后面不需要放分號
else :條件語句否定分支(與if連用)
switch :開關(guān)語句(多重分支語句)
case :開關(guān)語句中的分支標(biāo)記
default :開關(guān)語句中的“其他”分支,可選。
循環(huán)結(jié)構(gòu)
for:循環(huán)結(jié)構(gòu),for(1;2;3)4;
執(zhí)行順序為1->2->4->3->2...循環(huán),
其中2為循環(huán)條件;
do :do循環(huán)結(jié)構(gòu),do 1 while(2);
執(zhí)行順序是1->2->1...循環(huán),
2為循環(huán)條件;
while :while循環(huán)結(jié)構(gòu),
while(1) 2; 的執(zhí)行順序是1->2->1...循環(huán),
1為循環(huán)條件;
?
?