由于自己的编程水平不高,所以从现在开始每天编一个小程序来提高编程能力。
编程1
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
//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;
}
//总结其实根本可以不用数组的,直接用数,加三个循环就行了
编程练习2
题目:题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
#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);
}
}
}
//总结:答案解析说:请利用数轴来分界,定位。注意定义时需把奖金定义成长整型。
//奖金定义成长整型,大概和四舍五入一个意思,由于单位是万元,所以就算是小数点后几位也是一笔不小
//的数目
编程练习3
题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#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);
}
}
//总结:可以直接使用编译器自身提供的函数来开方,但是要包含《math.h》这个头文件
//在定义变量的时候,注意int只能存放4个字节的数据
编程练习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
题目:输入三个整数x,y,z,请把这三个数由小到大输出。
#include <stdio.h>
void main()
{
int m, n, p, q;
int a[3];
printf("请输入三个整数\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环境中运行,看一看,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位
//注意第二个循环的循环范围,在他循环结束后才输出一个换行符