C语⾔100道编程题(⼀),经典哦
【程序1】
题⽬:有1、2、3、4个数字,能组成多少个互不相同且⽆重复数字的三位数?都是多少?
1.程序分析:可填在百位、⼗位、个位的数字都是1、2、3、4。组成所有的排列后再去
掉不满⾜条件的排列。
2.程序源代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j,k;
for(i=1;i<5;i++)
for(j=1;j<5;j++)
for(k=1;k<5;k++)
if(i!=j&&i!=k&&j!=k)
printf("%d%d%d ",i,j,k);
system("pau");
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,求应发放奖⾦总数?
1.程序分析:请利⽤数轴来分界,定位。注意定义时需把奖⾦定义成长整型。
2.程序源代码:
#include<stdio.h>
#include<stdlib.h>
int main()
{
long profit;
double rate1=0.1,rate2=0.075,rate3=0.05,rate4=0.03,rate5=0.015,rate6=0.01;
body and soul
long reward=0;刚果枪击事件
printf("输⼊⽉利润:");
scanf("%d",&profit);
if(profit>=0&&profit<=100000)
reward=profit*rate1;
el if(profit<=200000)
reward=100000*rate1+(profit-100000)*rate2;
el if(profit<=400000)
reward=100000*rate1+100000*rate2+(profit-200000)*rate3;
el if(profit<=600000)
reward=10000*rate1+100000*rate2+200000*rate3+(profit-400000)*rate4;
el if(profit<=1000000)
reward=10000*rate1+100000*rate2+200000*rate3+200000*rate4+(profit-6000000)*rate5;
el reward=10000*rate1+100000*rate2+200000*rate3+200000*rate4+400000*rate5+(profit-1000000)*rate6;
printf("%d\n",reward);
system("pau");
return 0;
}
/*【程序3】
题⽬:⼀个整数,它加上100后是⼀个完全平⽅数,再加上168⼜是⼀个完全平⽅数,请问该数是多少?
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,x,y;
double r;
for(i=0;i<100000;i++)
{
x=(int)sqrt(i+100);
lively
y=(int)sqrt(i+268);
if(x*x==(i+100)&&y*y==i+268)
{
printf("%d\n",i);
break;
}
}
system("pau");
return 0;
}
/*
【程序4】
题⽬:输⼊某年某⽉某⽇,判断这⼀天是这⼀年的第⼏天?"能被4整除却不能被100整除或能被400整除的年份是闰年" */
#include<stdio.h>
#include<stdlib.h>
typedef struct{
int year;
int month;
int day;
}Date;
int main()
{
int months[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int days=0,i;
Date date;
scanf("%d%d%d",&(ar),&(h),&(date.day));//输⼊⽇期如2012 3 10
for(i=0;i&h-1;i++)
days+=months[i];
days+=date.day;
if((ar%4==0&&ar%100!=0)||(ar%400==0))
days+=1;
printf("这⼀天是这⼀年的第%d天\n",days);
system("pau");
return 0;
}
/责任意识
*
【程序5】
题⽬:输⼊三个整数x,y,z,请把这三个数由⼩到⼤输出。
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("%d%d%d",(x<y?x:y)<z?(x<y?x:y):z,(x>y?x:y)<z?(x>y?x:y):z,(x>y?x:y)>z?(x>y?x:y):z);
x=y<z?y:z;
system("pau");
return 0;
}
/*
【程序6】
题⽬:⽤*号输出字母C的图案。
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf(" * * \n");
全国职称英语考试
printf(" * \n");
printf("* \n");
printf("* \n");
printf("* \n");
printf(" * \n");
printf(" * * \n");
system("pau");
system("pau");
return 0;
}
/*
【程序7】
题⽬:输出特殊图案,请在c环境中运⾏,看⼀看,Very Beautiful!
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
for(i=0;i<128;i++)
printf("%c ",i);
system("pau");
return 0;
}
/*
【程序8】
题⽬:输出9*9⼝诀。
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
for(j=1;j<10;j++)
{
for(i=1;i<=j;i++)
{
printf("%dx%d=%-3d ",i,j,i*j);
}
printf("\n");
}
system("pau");
return 0;
}
/*
【程序9】
题⽬:要求输出国际象棋棋盘。
1.程序分析:⽤i控制⾏,j来控制列,根据i+j的和的变化来控制输出⿊⽅格,还是⽩⽅格。*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<8;j++)
if((j+i)%2==0)printf("%c",219);
el printf(" ");
printf("\n");
}
system("pau");
return 0;
}
/*
【程序10】
题⽬:打印楼梯,同时在楼梯上⽅打印两个笑脸。
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j,k;如何克服说话紧张症
printf(" %c %c\n",2,2);
printf(" %c %c\n",2,2);
for(i=1;i<10;i++)
{
for(j=1;j<i;j++)
printf("%c%c",219,219);
printf("\n");
}
system("pau");
return 0;
}
/*
【程序11】
题⽬:古典问题:有⼀对兔⼦,从出⽣后第3个⽉起每个⽉都⽣⼀对兔⼦,⼩兔⼦长到第三个⽉
后每个⽉⼜⽣⼀对兔⼦,假如兔⼦都不死,问每个⽉的兔⼦总数为多少?
*/
#include<stdio.h>
#include<stdlib.h>
long getnum(int n);
int main()
{
int n;
scanf("%d",&n);
printf("第%d个⽉有%d只兔⼦\n",n,getnum(n));
system("pau");
return 0;
}
long getnum(int n)
{
if(n==1||n==2)
return 1;
el return (getnum(n-1)+getnum(n-2));
}
/*
【程序12】
题⽬:判断101-200之间有多少个素数,并输出所有素数。
*/
#include<stdio.h>
#include<stdlib.h>
int IsPrimer(int n);
int main()
{
int i;
for(i=101;i<201;i++)
if(IsPrimer(i)) printf("%d ",i);
system("pau");
return 0;
}
int IsPrimer(int n)
{
int i;
int s=sqrt(n)+1;
for(i=2;i<s;i++)
if(n%i==0)return 0;
return 1;
}
/*
【程序13】
题⽬:打印出100-999的“⽔仙花数”,所谓“⽔仙花数”是指⼀个三位数,其各位数字⽴⽅和等于该数 本⾝。例如:153是⼀个“⽔仙花数”,因为153=1的三次⽅+5的三次⽅+3的三次⽅。
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i,j,k;
for(i=1;i<10;i++)i do 歌词
for(j=0;j<10;j++)
for(k=0;k<10;k++)
if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
复杂的printf("%d%d%d ",i,j,k);
system("pau");
return 0;
}
/*
【程序14】
题⽬:将⼀个正整数分解质因数。例如:输⼊90,打印出90=2*3*3*5。
*/冲刺
#include<stdio.h>
#include<stdlib.h>
int IsPrimer(int n);
int Explode(int n);
int main()
bratislava
{
int n;
scanf("%d",&n);
printf("%d=",n);
while(!IsPrimer(n))
{
n=Explode(n);
}
printf("%d",n);
system("pau");
return 0;
}
int IsPrimer(int n)
{
int i;
int s=sqrt(n)+1;
for(i=2;i<s;i++)
if(n%i==0)return 0;
return 1;
}
int Explode(int n)
{
int i;
for(i=2;;i++)
if(n%i==0)
{
printf("%d*",i);
return n/i;
}
}
/*
【程序15】
题⽬:利⽤条件运算符的嵌套来完成此题:学习成绩>=90分的同学⽤A表⽰,60-89分之间的⽤B表⽰, 60分以下的⽤C表⽰。
*/
#include<stdio.h>
#include<stdlib.h>
int main()
{
int grade;
char rank;
scanf("%d",&grade);
rank=grade>=90?'A':(grade>=60?'B':'C');
printf("%c\n",rank);
system("pau");
return 0;
}
/*
【程序16】
题⽬:输⼊两个正整数m和n,求其最⼤公约数和最⼩公倍数。
初级代码:
*/
#include<stdio.h>
#include<stdlib.h>
int GCD(int m,int n);
int LCM(int m,int n);
int main()