昨晚去机房,本想着编1-2小时的程序,结果机房的破电脑超难使,一编译运行就死机,害得我白白浪费了两个多小时,心疼啊···
总得想个办法吧,宿舍不是个编程的地方,哎哎,怎么办呢···
今天的第一个程序,其实是为了测试电脑上的Visual C++好不好使:
题目四:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
#include<stdio.h>
#include<math.h>
main()
{
int x,y,i;
for(i=0;i<10000;i++){
x=(int)sqrt(i+100);
y=(int)sqrt(i+268);
if(x*x==i+100 &&y*y==i+268)
printf("%d/n",i);
}
}
题目五:输入某年某月某日,判断这一天是这一年的第几天?
#include<stdio.h>
#include<math.h>
main()
{
int year,month,day,num;
num=0;
printf("请输入你想查询的年月日:/n");
scanf("%d,%d,%d",&year,&month,&day);//在运行框中输入三个参数时,要用逗号隔开
switch(month){
case 1:num=0;break;
case 2:num=28;break;
case 3:num=59;break;
case 4:num=90;break;
case 5:num=120;break;
case 6:num=151;break;
case 7:num=181;break;
case 8:num=212;break;
case 9:num=243;break;
case 10:num=273;break;
case 11:num=304;break;
case 12:num=334;break;
default:
printf("输入的时间错误/n"); break;
}
if(year%400==0 || (year%4==0 && year%100!=0))
if(month>2)
num+=1;
num+=day;
printf("您输入的时间是该年中的第%d天/n",num);
}
题目六:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少对?
程序分析:兔子的规律为数列1,1,2,3,5,8,13,21….
#include<stdio.h>
main(){
int a,b,i,temp;
a=b=1;
printf("%d/t",a);
for(i=1;i<=20;i++){
temp=b;
b=a+b;
a=temp;
printf("%d/t",a);
}
}
虽然这是一个很简单的问题,却让我想了很长时间,当真正编出这段代码和运行正确时,我很开心,有小小的成就感,因为是靠自己的思考做出来的···
我对这道题的理解是:a,b的初始值均为1,每次运算中,把b的值赋值给a,并把上次a,b的值相加,并赋值给b,就可以得到分析中的结果。
题目七:输出9*9口诀
#include<stdio.h>
#include<math.h>
main()
{
int i,j,sum;
for(i=1;i<=9;i++){
for(j=1;j<=i;j++){
sum=i*j;
printf("%d*%d=%d/t",i,j,sum);
}
printf("/n");
}
}
题目八:判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
#include<stdio.h>
#include<math.h>
main()
{
int i,j,sqr,chu,count,leap;
count=0;
for(i=101;i<200;i++){
sqr=(int)sqrt(i);
for(j=2;j<=sqr;j++){
chu=i/j;
leap=0;
//对于/运算,如果不能整除,只能取其整数部分,将商(可能是取整后的)与除数相乘,
//若结果和被除数相同,则说明能够整除,则该数不是素数···
if(i==chu*j) {leap++; break;}
//当所有的除数都遍历完,且没有一个满足条件是,输出这个i值
}
if(leap==0)
{
printf("%d/t",i);
count++;
}
}
printf("/n101-200之间共有%d个素数/n",count);
}