【程序1】
题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
1.
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
2.
程序源代码:
main()
{
int i,j,k;
printf("\n");
for(i=1;i<5;i++)
/
*
以下为三重循环
*/
for(j=1;j<5;j++)
for (k=1;k<5;k++)
{
if (i!=k&&i!=j&&j!=k)
/*
确
保
i
、
j
、
k
三
位
互
不
相
同
*/
printf("%d,%d,%d\n",i,j,k);
}
}
==============================================================
【程序
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.
程序源代码:
main()
{
long int i;
int bonus1,bonus2,bonus4,bonus6,bonus10,bonus;
scanf("%ld",&i);
bonus1=100000*0.1;bonus2=bonus1+100000*0.75;
bonus4=bonus2+200000*0.5;
bonus6=bonus4+200000*0.3;
bonus10=bonus6+400000*0.15;
if(i<=100000)
bonus=i*0.1;
else if(i<=200000)
bonus=bonus1+(i-100000)*0.075;
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
bonus=bonus10+(i-1000000)*0.01;
printf("bonus=%d",bonus);
}
==============================================================
【程序
3
】
题目:一个整数,它加上
100
后是一个完全平方数,再加上
168
又是一个完全平方数,请
问该数是多少?
1.
程序分析:
在
10
万以内判断,
先将该数加上
100
后再开方,
再将该数加上
268
后再开方,
如果开方后
的结果满足如下条件,即是结果。请看具体分析:
2.
程序源代码:
#include "math.h"
main()
{
long int i,x,y,z;
for (i=1;i<100000;i++)
{ x=sqrt(i+100); /*x
为加上
100
后开方后的结果
*/
y=sqrt(i+268); /*y
为再加上
168
后开方后的结果
*/
if(x*x==i+100&&y*y==i+268)/*
如果一个数的平方根的平方等于该数,
这说明此数是完全平
方数
*/
printf("\n%ld\n",i);
}
}
==============================================================
【程序
4
】
题目:输入某年某月某日,判断这一天是这一年的第几天?
1.
程序分析:
以
3
月
5
日为例,
应该先把前两个月的加起来,
然后再加上
5
天即本年的第几
天,特殊
情况,闰年且输入月份大于
3
时需考虑多加一天。
2.
程序源代码:
main()
{
int day,month,year,sum,leap;
printf("\nplease input year,month,day\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("data error");break;
}
sum=sum+day; /*
再加上某天的天数
*/
if(year@0==0||(year%4==0&&year 0!=0))/*
判断是不是闰年
*/
leap=1;
else
leap=0;
if(leap==1&&month>2)/*
如果是闰年且月份大于
2,
总天数应该加一天
*/
sum++;
printf("It is the %dth day.",sum);}
==============================================================
【程序
5
】
题目:输入三个整数
x,y,z
,请把这三个数由小到大输出。
1.
程序分析:我们想办法把最小的数放到
x
上,先将
x
与
y
进行比较,如果
x>y
则将
x
与
y
的值进行交换,
然后再用
x
与
z
进行比较,如果
x>z
则将
x
与
z
的值进行交换,这样能使
x
最小。
2.
程序源代码:
main()
{
int x,y,z,t;
scanf("%d%d%d",&x,&y,&z);
if (x>y)
{t=x;x=y;y=t;} /*
交换
x,y
的值
*/
if(x>z)
{t=z;z=x;x=t;}/*
交换
x,z
的值
*/
if(y>z)
{t=y;y=z;z=t;}/*
交换
z,y
的值
*/
printf("small to big: %d %d %d\n",x,y,z);
}
==============================================================
x0=x0+5;
y0=y0+5;
y1=y1-5;
}
}
==============================================================
【程序
58
】
题目:画图,学用
rectangle
画方形。
1.
程序分析:利用
for
循环控制
100-999
个数,每个数分解出个位,十位,百位。
2.
程序源代码:
#include "graphics.h"
main()
{int x0,y0,y1,x1,driver,mode,i;
driver=VGA;mode=VGAHI;
initgraph(&driver,&mode,"");
setbkcolor(YELLOW);
x0=263;y0=263;y1=275;x1=275;
for(i=0;i<=18;i++)
{
setcolor(1);
rectangle(x0,y0,x1,y1);
x0=x0-5;
y0=y0-5;
x1=x1+5;
y1=y1+5;
}
settextstyle(DEFAULT_FONT,HORIZ_DIR,2);
outtextxy(150,40,"How beautiful it is!");
line(130,60,480,60);
setcolor(2);
circle(269,269,137);
}
==============================================================
【程序
59
】
题目:画图,综合例子。
1.
程序分析:
2.
程序源代码:
# define PAI 3.1415926
# define B 0.809
# include "graphics.h"
#include "math.h"
main()
{
int i,j,k,x0,y0,x,y,driver,mode;
float a;
driver=CGA;mode=CGAC0;
initgraph(&driver,&mode,"");
setcolor(3);
setbkcolor(GREEN);
x0=150;y0=100;
circle(x0,y0,10);
circle(x0,y0,20);
circle(x0,y0,50);
for(i=0;i<16;i++)
{
a=(2*PAI/16)*i;
x=ceil(x0+48*cos(a));
y=ceil(y0+48*sin(a)*B);
setcolor(2); line(x0,y0,x,y);}
setcolor(3);circle(x0,y0,60);
/* Make 0 time normal size letters */
settextstyle(DEFAULT_FONT,HORIZ_DIR,0);
outtextxy(10,170,"press a key");
getch();
setfillstyle(HATCH_FILL,YELLOW);
floodfill(202,100,WHITE);
getch();
for(k=0;k<=500;k++)
{
setcolor(3);
for(i=0;i<=16;i++)
{
a=(2*PAI/16)*i+(2*PAI/180)*k;
x=ceil(x0+48*cos(a));
y=ceil(y0+48+sin(a)*B);
setcolor(2); line(x0,y0,x,y);
}
for(j=1;j<=50;j++)
{
a=(2*PAI/16)*i+(2*PAI/180)*k-1;
x=ceil(x0+48*cos(a));
y=ceil(y0+48*sin(a)*B);
line(x0,y0,x,y);
}
}
restorecrtmode();
}
==============================================================
else
break;
for(c=2;c<=sqrt(d);c++)
if(d%c==0) break;
if(c>sqrt(d))
printf("%d=%d+%d\n",a,b,d);
}
}
==============================================================
【程序
85
】
题目:判断一个素数能被几个
9
整除
1.
程序分析:
2.
程序源代码:
main()
{ long int m9=9,sum=9;
int zi,n1=1,c9=1;
scanf("%d",&zi);
while(n1!=0)
{ if(!(sum%zi))
n1=0;
else
{m9=m9*10;
sum=sum+m9;
c9++;
}
}
printf("%ld,can be divided by %d \"9\"",sum,c9);
}
==============================================================
【程序
86
】
题目:两个字符串连接程序
1.
程序分析:
2.
程序源代码:
#include "stdio.h"
main()
{char a[]="acegikm";
char b[]="bdfhjlnpq";
char c[80],*p;
int i=0,j=0,k=0;
while(a[i]!='\0'&&b[j]!='\0')
{if (a[i] { c[k]=a[i];i++;}
else
c[k]=b[j++];
k++;
}
c[k]='\0';
if(a[i]=='\0')
p=b+j;
else
p=a+i;
strcat(c,p);
puts(c);
}
==============================================================
【程序
87
】
题目:回答结果(结构体变量传递)
1.
程序分析:
2.
程序源代码:
#include "stdio.h"
struct student
{ int x;
char c;
} a;
main()
{a.x=3;
a.c='a';
f(a);
printf("%d,%c",a.x,a.c);
}
f(struct student b)
{
b.x=20;
b.c='y';
}
==============================================================
【程序
88
】
题目:读取
7
个数(
1
—
50
)的整数值,每读取一个值,程序打印出该值个数的*。
1.
程序分析:
2.
程序源代码:
main()
{int i,a,n=1;
while(n<=7)
{ do {
scanf("%d",&a);
}while(a<1||a>50);
for(i=1;i<=a;i++)
printf("*");
printf("\n");
n++;}
getch();
}
==============================================================
【程序
89
】
题目:
某个公司采用公用电话传递数据,
数据是四位的整数,
在传递过程中是加密的,
加密
规则如下:
每位数字都加上
5,
然后用和除以
10
的余数代替该数字,再将第一位和第四位交换,第二位
和第三位交换。
1.
程序分析:
2.
程序源代码:
main()
{int a,i,aa[4],t;
scanf("%d",&a);
aa[0]=a
aa[1]=a 0/10;
aa[2]=a 00/100;
aa[3]=a/1000;
for(i=0;i<=3;i++)
{aa[i]+=5;
aa[i]%=10;
}
for(i=0;i<=3/2;i++)
{t=aa[i];
aa[i]=aa[3-i];
aa[3-i]=t;
}
for(i=3;i>=0;i--)
printf("%d",aa[i]);
}
==============================================================
【程序
90
】
题目:专升本一题,读结果。
1.
程序分析:
2.
程序源代码:
#include "stdio.h"
#define M 5
main()
{int a
={1,2,3,4,5};
int i,j,t;
i=0;j=M-1;
while(i {t=*(a+i);
*(a+i)=*(a+j);
*(a+j)=t;
i++;j--;
}
for(i=0;i printf("%d",*(a+i));
}
【程序
91
】
题目:时间函数举例
1
1.
程序分析:
2.
程序源代码:
#include "stdio.h"
#include "time.h"
void main()
{ time_t lt; /*define a longint time varible*/
lt=time(NULL);/*system time and date*/
printf(ctime(<)); /*english format output*/
printf(asctime(localtime(<)));/*tranfer to tm*/
printf(asctime(gmtime(<))); /*tranfer to Greenwich time*/
}
==============================================================
【程序
92
】
题目:时间函数举例
2
1.
程序分析:
2.
程序源代码:
/*calculate time*/
#include "time.h"
#include "stdio.h"
main()
{ time_t start,end;
int i;
start=time(NULL);
for(i=0;i<3000;i++)
{ printf("\1\1\1\1\1\1\1\1\1\1\n");}
end=time(NULL);
printf("\1: The different is %6.3f\n",difftime(end,start));
}
==============================================================
【程序
93
】
题目:时间函数举例
4,
一个猜数游戏,判断一个人反应快慢。
(版主初学时编的)
1.
程序分析:
2.
程序源代码:
#include "time.h"
#include "stdlib.h"
#include "stdio.h"
main()
{char c;
clock_t start,end;
time_t a,b;
double var;
int i,guess;
srand(time(NULL));
printf("do you want to play it.('y' or 'n') \n");
loop:
while((c=getchar())=='y')
{
i=rand() 0;
printf("\nplease input number you guess:\n");
start=clock();
a=time(NULL);
scanf("%d",&guess);
while(guess!=i)
{if(guess>i)
{printf("please input a little smaller.\n");
scanf("%d",&guess);}
else
{printf("please input a little bigger.\n");
scanf("%d",&guess);}
}
end=clock();
b=time(NULL);
printf("\1: It took you %6.3f seconds\n",var=(double)(end-start)/18.2);
printf("\1: it took you %6.3f seconds\n\n",difftime(b,a));
if(var<15)
printf("\1\1 You are very clever! \1\1\n\n");
else if(var<25)
printf("\1\1 you are normal! \1\1\n\n");
else
printf("\1\1 you are stupid! \1\1\n\n");
printf("\1\1 Congradulations \1\1\n\n");
printf("The number you guess is %d",i);
}
printf("\ndo you want to try it again?(\"yy\".or.\"n\")\n");
if((c=getch())=='y')
goto loop;
}
============================================================== 【程序94】
题目:时间函数举例
3
1.
程序分析:
2.
程序源代码:
/*calculate time*/
#include "time.h"
#include "stdio.h"
main()
{ clock_t start,end;
int i;
double var;
start=clock();
for(i=0;i<10000;i++)
{ printf("\1\1\1\1\1\1\1\1\1\1\n");}
end=clock();
printf("\1: The different is %6.3f\n",(double)(end-start));
}
==============================================================