C語言練習題
讀懂每個練習題才是學好一門代碼的重要經(jīng)歷
目錄(先不要看答案,首先自己做才能更好的領悟,做不來沒關系)
題目一:有 1、2、3、4 四個數(shù)字,能組成多少個互不相同且無重復數(shù)字的三位數(shù)?都是多少?
程序分析:可填在百位、十位、個位的數(shù)字都是 1、2、3、4,組成所有的排列后再去掉不滿足條件的排列。
int main(void)
{
int i,j,k;
for( i=1;i<5;i++){
for( j=1;j<5;j++){
for( k=1;k<5;k++){
///關鍵:只要證明i j k 互不等于即可
if(i!=j && i != k && j != k && k !=j){
printf("%d,%d,%d,\n",i,j,k);
}
}
}
}
return 0;
}
題目二://題目:企業(yè)發(fā)放的獎金根據(jù)利潤提成。
//利潤(I)低于或等于10萬元時,獎金可提10%;
//利潤高于10萬元,低于20萬元時,低于10萬元的部分按10%提成,高于10萬元的部分,可提成7.5%;
//20萬到40萬之間時,高于20萬元的部分,可提成5%;
//40萬到60萬之間時高于40萬元的部分,可提成3%;
//60萬到100萬之間時,高于60萬元的部分,可提成1.5%;
//高于100萬元時,超過100萬元的部分按1%提成。
//從鍵盤輸入當月利潤I,求應發(fā)放獎金總數(shù)?
//程序分析:請利用數(shù)軸來分界,定位。注意定義時需把獎金定義成雙精度浮點(double)型。
///輸入的金額
double i;
double bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
printf("你的凈利潤是:\n");
///這個主要的分界
bonus1 = 100000 * 0.10;
bonus2 = bonus1 + (i-100000)*0.075;
bonus4 = bonus2 + (i-200000)*0.05;
bonus6 = bonus4 + (i-200000)*0.03;
bonus10 = bonus6 + (i-400000)*0.01;
printf("輸入您的獎金\n");
scanf("%lf",&i);
if(i <= 100000){
bonus = i * 0.1;
}else if(i <= 200000){
bonus = bonus1 + (i-100000) * 0.75;
}else if(i<=400000){
bonus = bonus2 + (i - 200000)* 0.05;
}else if(i<=600000){
bonus = bonus4 + (i-400000) * 0.03;
}else if (i<=1000000){
bonus = bonus6 + (i - 600000) * 0.015;
}else if(i>1000000){
bonus =bonus10 + (i-1000000) * 0.01;
}
printf("你的提成是%lf\n",bonus);
題目三:輸入某年某月某日,判斷這一天是這一年的第幾天?
程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。
難點:主要是如何判斷閏年的方式、可以百度查詢一下文章來源:http://www.zghlxwxcb.cn/news/detail-629911.html
int main(void)
{
int year,month,day,leap,sum;
printf("請輸入年月日,格式(2015,12,10)\n");
scanf("%d,%d,%d",&year,&month,&day);
switch(month){
case 1:
sum = 0;
break;
case 2:
sum = 31;
break;
case 3:
sum = 59;
break;
case 4:
sum=90;
break;
case 5:
sum=120;
break;
case 6:
sum=151;
break;
case 7:
sum =181;
break;
case 8:
sum = 212;
break;
case 9:
sum = 243;
break;
case 10:
sum = 273;
break;
case 11:
sum = 304;
break;
case 12:
sum = 334;
break;
default:
printf("數(shù)據(jù)錯誤");
break;
}
//主要功能、判斷是否閏年
if(year % 400 == 0 ||(year % 4==0&&year % 100 !=0)){
leap=1;
}else{
leap=0;
}
if(leap == 1 && month > 2){
sum++;
}
printf("這是一年中的%d天\n",sum);
return 0;
}
題目5: 輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出
技巧:將輸入的整數(shù)整合到一個數(shù)組,進行冒泡排序即可。既簡單又實用文章來源地址http://www.zghlxwxcb.cn/news/detail-629911.html
void bubbleSort(int nums[],int size){
for(int i=0;i<size-1;i++){
for(int j=0;j<size-1;j++){
if(nums[j] > nums[j+1]){
int temp = nums[j];
nums[j] = nums[j+1];
nums[j+1]= temp;
}
}
}
}
int main(void)
{
int one,two,three;
printf("請隨機輸入三整數(shù),以逗號隔開\n");
scanf("%d,%d,%d",&one,&two,&three);
int nums[] = {one,two,three};
int size = sizeof(nums) / sizeof(nums[0]);
bubbleSort(nums, size);
printf("排序結(jié)果:\n");
for (int i = 0; i < size; i++) {
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
題目6: 輸出99乘法表
int main(void)
{
int i,p,result;
for(i=1;i<10;i++){
for(p=1;p<10;p++){
result = i * p;
printf("%d * %d 得 %d\n",p,i,result);
}
}
return 0;
}
到了這里,關于C 語言練習題更新的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!