大多是水题,四套卷子共12题,这里列出11道,有道是重复的。1.一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问在100000内有哪些满足要求?#include
#include
int iswanquan(int num);
int main(int argc,char* argv[])
{
int i;
for(i=1;i<=100000;i++)
{
if(iswanquan(i+100)&&iswanquan(i+268))
{
printf("%d
",i);
}
}
return 0;
}
int iswanquan(int num)
{
double ind=sqrt((double)num);
if(ind-(double)(int)ind)
return 0;
else
return 1;
}
2.输入某年某月某日,判断这一天是这一年的第几天?#include
int isrun(int year);
int main(int argc,char* argv[])
{
int year,month,day;
printf("年>> ");
scanf("%d",&year);
printf("月>> ");
scanf("%d",&month);
printf("日>> ");
scanf("%d",&day);
int monthx[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(isrun(year))
monthx[2]=29;
if(month<1||month>12)
printf("ERROR MONTH
");
else if(day<1||day>monthx[month])
printf("ERROR DAY
");
else
{
int sum=day,i;
for(i=1;i3.输出国际象棋棋盘??!这什么鬼,应该是一白一黑,奇偶行交错吧。用O表示白,X表示黑。#include
int main(int argc,char* argv[])
{
int i,j;
for(i=1;i<=8;i++)
for(j=1;j<=8;j++)
{
if(i%2&&j%2||i%2==0&&j%2==0)
putchar('O');
else
putchar('X');
if(j==8)
putchar('
');
}
printf("
O---White,X---Black
");
return 0;
}
4.判断101-200之间有几个素数,并输出所有素数。#include
#include
int isprime(int num);
int main(int argc,char* argv[])
{
int i,num;
for(i=101,num=0;i<=200;i++)
{
if(isprime(i))
{
printf("%d ",i);
num++;
}
}
printf("
TOTAL: %d
",num);
return 0;
}
int isprime(int num)
{
int ind;
for(ind=2;ind<=(int)sqrt((double)num);ind++)
{
if(!(num%ind))
return 0;
}
return 1;
}
5.将一个正整数分解质因数,如:输入90,输出90=2*3*3*5。#include
#include
int isprime(int num);
int main(int argc,char* argv[])
{
int num;
scanf("%d",&num);
if(num<1)
{
printf("ERROR
");
return 0;
}
if(isprime(num))
{
printf("%d = %d
",num,num);
return 0;
}
int i;
printf("%d = ",num);
for(i=2;i<=num;i++)
{
if(isprime(i))
{
while(num%i==0)
{
printf("%d",i);
num/=i;
if(num!=1)
putchar('*');
else
putchar('
');
}
}
}
return 0;
}
int isprime(int num)
{
int ind;
for(ind=2;ind<=(int)sqrt((double)num);ind++)
{
if(!(num%ind))
return 0;
}
return 1;
}
6.求s=a+aa+aaa+aaaa+aa…a的值,其中a是一个数字,例如输入a=2,n=5时,s=2+22+222+2222+22222。#include
int main(int argc,char* argv[])
{
int a,n,sum;
printf("a? >>");
scanf("%d",&a);
printf("count? >>");
scanf("%d",&n);
printf("s = ");
int i,t=a;
for(i=1,sum=0;i<=n;i++)
{
printf("%d%c",a,i==n?'
':'+');
sum+=a;
a=a*10+t;
}
printf("s = %d
",sum);
return 0;
}
7.输入两个正整数m和n,求最大公因数和最小公倍数。#include
int gcd(int m,int n);
int main(int argc,char* argv[])
{
int m,n;
scanf("%d%d",&m,&n);
printf("GCD = %d
LCM = %d
",gcd(m,n),m*n/gcd(m,n));
return 0;
}
int gcd(int m,int n)
{
return n?gcd(n,m%n):m;
}
8.求1000以内的所有完全数。#include
int main(int argc,char* argv[])
{
int i,j,s;
for(i=1;i<=1000;i++)
{
for(j=1,s=0;j9.输入3个数a、b、c,按大小顺序输出(这道题重复一次……)#include
void swab(int* a,int* b);
int main(int argc,char* argv[])
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
if(x>y)
swab(&x,&y);
if(x>z)
swab(&x,&z);
if(y>z)
swab(&y,&z);
printf("Large-Small>>%d %d %d
",z,y,x);
printf("Small-Large>>%d %d %d
",x,y,z);
return 0;
}
void swab(int* a,int* b)
{
int x=*a;
*a=*b;
*b=x;
}
10.有n个正整数,使其前面各数向后移动m个位置,最后m个数变成最前面的m个数。题意说的不是很清楚,意思应该是输入n个数后,把它们向后移动m个位置,后面移出去的从前面移进来。也就是需要来实现循环右移。需要注意的一点是,m可能大于n,所以需要处理m在0-n之间后再输出。#include
int array[1000];
int main(void)
{
int n,m;
printf("Count? >>");
scanf("%d",&n);
printf("Please input %d number
>> ",n);
int i;
for(i=1;i<=n;i++)
scanf("%d",&array[i]);
printf("m? >>");
scanf("%d",&m);
for(;m>n;m-=n);
m=n-m+1;
for(i=1;i<=n;i++)
{
printf("%d ",array[m]);
if(++m>n)
m=1;
}
return 0;
}
11.有n个人围成一圈,顺序排号。从第一个人开始报数(1-3报数),凡是报到3的人退出圈子,问最后留下的是原来的第几号位。分析一下,用数组先表示这n个人是否还在圈子之中,全部初始化为1。从头开始不断扫数组,每移过两个还在圈子里的人,就把第三个在圈子里的人移出圈子,不断遍历直至有n个人被移出了圈子,最后那个被移出去的就是最后留下的。输出他的数组标号就是了。#include
int array[1000];
int main(void)
{
int i,n,m;
printf("n? >>");
scanf("%d",&n);
for(i=1;i<=n;i++)
array[i]=1;
i=0,m=0;
while(1)
{
int count=3;
while(count--)
{
for(i++;!array[i];i++)
{
if(i>n)
i=0;
}
if(i>n)
i=1;
}
array[i]=0;
m++;
if(m==n)
{
printf("%d
",i);
break;
}
}
return 0;
}
嘿嘿,谁知道这比赛明年还有没有呢,希望对网上意外发现的你有帮助。