由于自己的編程水平不高,所以從現(xiàn)在開始每天編一個小程序來提高編程能力。
編程1
題目:有1、2、3、4個數(shù)字,能組成多少個互不相同且無重復數(shù)字的三位數(shù)?都是多少?
//printf("\1\1\n"); /*輸出兩個笑臉*/ 為什么‘\1’輸出的就是一個笑臉呢?
//因為\1表示ASCII碼為1的字符(即笑臉符)
#include <stdio.h>
int a[4] = {1, 2, 3, 4};
int main()
{
int i=0, j=0, k=0, m=0;
for(i=0;i<4;i++)
{
for(j=0;j<4;j++)
{
for(k=0; k<4;k++)
{
if(a[i] != a[j] && a[i] != a[k] && a[j] != a[k])
{
printf("%d", a[i]);
printf("%d", a[j]);
printf("%d",a[k]);
printf(" ");
m++;
if(m%5 == 0)
printf("\n");
}
}
}
}
printf("%d\n",m);
return 0;
}
//總結其實根本可以不用數(shù)組的,直接用數(shù),加三個循環(huán)就行了
編程練習2
題目:題目:企業(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ù)?
#include <stdio.h>
void main()
{
for(;;)
{
float I=0;
double cash=0;
printf("請輸入當月利潤!單位:萬元\n");
scanf("%f",&I);
if(I<10 || I==10)
{
cash = I * 0.1;
printf("%f\n",cash);
}
else if(I>10 || I<20)
{
I = I - 10;
cash = 10*0.1 + I*0.075;
printf("%f\n",cash);
}
else if(I>20 || I<40)
{
I = I - 20;
cash = 10*0.1 + 10*0.075 + I*0.05;
printf("%f\n",cash);
}
else if(I>40 || I<60)
{
I = I - 40;
cash = 10*0.1 + 10*0.075 + 20*0.05 + I*0.03;
printf("%f\n",cash);
}
else if(I>60 || I<100)
{
I = I - 60;
cash = 10*0.1 + 10*0.075 + 20*0.05 + 20*0.03 + I*0.015;
printf("%f\n",cash);
}
else if(I>100)
{
I = I - 100;
cash = 10*0.1 + 10*0.075 + 20*0.05 + 20*0.03 + 40*0.015 + I*0.01;
printf("%f\n",cash);
}
}
}
//總結:答案解析說:請利用數(shù)軸來分界,定位。注意定義時需把獎金定義成長整型。
//獎金定義成長整型,大概和四舍五入一個意思,由于單位是萬元,所以就算是小數(shù)點后幾位也是一筆不小
//的數(shù)目
編程練習3
題目:一個整數(shù),它加上100后是一個完全平方數(shù),再加上168又是一個完全平方數(shù),請問該數(shù)是多少?
#include <stdio.h>
#include <math.h>
void main()
{
//int x=0, y=0;
long int i,x=0, y=0;
for(i=1;i<100000;i++)
{
x=sqrt(i+100);
y=sqrt(i+168);
if(x*x == i+100 && y*y == i+168)
printf("%d\n",i);
}
}
//總結:可以直接使用編譯器自身提供的函數(shù)來開方,但是要包含《math.h》這個頭文件
//在定義變量的時候,注意int只能存放4個字節(jié)的數(shù)據(jù)
編程練習4
題目:輸入某年某月某日,判斷這一天是這一年的第幾天?
#include <stdio.h>
void main()
{
long int year;
int month, day;
printf("請輸入年月日:\n");
scanf("%d %d %d",&year, &month, &day);
if((year/4==0 && year/100!=0)||(year/400==0))
{
switch(month)
{
case 1:
printf("%d\n",day);
break;
case 2:
printf("%d\n",day+31);
break;
case 3:
printf("%d\n",day+31+28);
break;
case 4:
printf("%d\n",day+31+28+31);
break;
case 5:
printf("%d\n",day+31+28+31+30);
break;
case 6:
printf("%d\n",day+31+28+31+30+31);
break;
case 7:
printf("%d\n",day+31+28+31+30+31+30);
break;
case 8:
printf("%d\n",day+31+28+31+30+31+30+31);
break;
case 9:
printf("%d\n",day+31+28+31+30+31+30+31+31);
break;
case 10:
printf("%d\n",day+31+28+31+30+31+30+31+31+30);
break;
case 11:
printf("%d\n",day+31+28+31+30+31+30+31+31+30+31);
break;
case 12:
printf("%d\n",day+31+28+31+30+31+30+31+31+30+31+30);
break;
}
}
else
{
switch(month)
{
case 1:
printf("%d\n",day);
break;
case 2:
printf("%d\n",day+31);
break;
case 3:
printf("%d\n",day+31+27);
break;
case 4:
printf("%d\n",day+31+27+31);
break;
case 5:
printf("%d\n",day+31+27+31+30);
break;
case 6:
printf("%d\n",day+31+27+31+30+31);
break;
case 7:
printf("%d\n",day+31+27+31+30+31+30);
break;
case 8:
printf("%d\n",day+31+27+31+30+31+30+31);
break;
case 9:
printf("%d\n",day+31+27+31+30+31+30+31+31);
break;
case 10:
printf("%d\n",day+31+27+31+30+31+30+31+31+30);
break;
case 11:
printf("%d\n",day+31+27+31+30+31+30+31+31+30+31);
break;
case 12:
printf("%d\n",day+31+27+31+30+31+30+31+31+30+31+30);
break;
}
}
}
//總結:代碼寫得太復雜,起始switch語句可以只使用一次的
編程練習5
題目:輸入三個整數(shù)x,y,z,請把這三個數(shù)由小到大輸出。
#include <stdio.h>
void main()
{
int m, n, p, q;
int a[3];
printf("請輸入三個整數(shù)\n");
scanf("%d %d %d",a, &a[1], &a[2]);
for(m=0;m<3;m++)
{
for(n=m+1;n<3;n++)
{
if(a[n]<a[m])
{
p=a[n];
a[n]=a[m];
a[m]=p;
}
}
}
for(q=0;q<3;q++)
{
printf("%d\n", a[q]);
}
}
//總結:本次排序使用的是冒泡排序的方法
編程練習6
題目:輸出特殊圖案,請在c環(huán)境中運行,看一看,Very Beautiful!
#include <stdio.h>
main()
{
char a=176,b=219;
printf("%c%c%c%c%c\n",b,a,a,a,b);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",a,a,b,a,a);
printf("%c%c%c%c%c\n",a,b,a,b,a);
printf("%c%c%c%c%c\n",b,a,a,a,b);
}
//總結:輸出的ascii碼被cmd以GBK編碼輸出了,在cmd里面輸入
//mode con cp select=437選擇英文編碼再運行就可以正常顯示了
//用完了使用mode con cp select=936改回簡體中文
//即在cmd中修改,然后在cmd命令行模式下運行該程序
編程練習7
題目:輸出9*9口訣。
#include <stdio.h>
void main()
{
int i, j;
for(i=1;i<10;i++)
{
for(j=1;j<i+1;j++)
printf("%d*%d=%-3d",j,i,i*j); /*-3d表示左對齊,占3位*/
printf("\n");
}
}
//總結:在輸出的時候%-3d表示的是左對齊,占3位
//注意第二個循環(huán)的循環(huán)范圍,在他循環(huán)結束后才輸出一個換行符