时间:2024.12.3
一、实验
7-1 求符合给定条件的整数集
#include<stdio.h>
int main(){
int a,b,s,g;
scanf("%d",&a);
int h=0;
for(int i=a;i<=a+3;i++){
for(int j=a;j<=a+3;j++){
for(int k=a;k<=a+3;k++){
if((i!=j)&&(i!=k)&&(j!=k)){
h++;
printf("%d",i*100+j*10+k);
if(h%6==0){
printf("\n");
h=0;
}else{printf(" ");}
}
}
}
}
return 0;
}
TIPS:
注意循环的嵌套,认真考虑格式的安排(换行和空格)
7-2 求特殊方程的正整数解
#include<stdio.h>
int main(){
int n;
int count=0;
scanf("%d",&n);
for(int y=n;y>=1;y--){
for(int x=1;x<=y;x++){
if(x*x+y*y==n){
printf("%d %d\n",x,y);
count++;
}}
}
if(count==0){printf("No Solution");}
return 0;
}
TIPS:
观察示例,按照x递增,y递减的方法,再将两者的平方和与n比较,就可以实现题目要求。
7-3 求n以内最大的k个素数以及它们的和
#include <stdio.h>
#include <math.h>
int prime_numble(int x)//定义函数判断是否为素数
{
int i, j, y = 1;
if (x == 0 || x == 1) y = 0;
for(i=2;i<=sqrt(x); i++)
{
if (x % i == 0)
{
y = 0;
break;
} }
return y;
}
int main()
{
int maxprime[100];
int n, i, j, k, sum = 0;
scanf("%d %d",&n,&k);
i = n;
j = 0;
while (i>0)
{
if (j < k)
{
if (prime_numble(i)==1)
{
maxprime[j] = i;
sum += i;
j++;
} }
else{ break; }
i--;
}
for (i = 0; i < j - 1; i++)
{
printf("%d+", maxprime[i]);//只打印前九个(最后一个打印后不需要+)
}
printf("%d=%d", maxprime[j-1], sum);//打印第十个和素数和
return 0;
}
TIPS:
记忆判断是否为素数的方法,函数调用可以使思路更清晰。
int prime_numble(int x)//定义函数判断是否为素数
{
int i, j, y = 1;
if (x == 0 || x == 1) y = 0;
for(i=2;i<=sqrt(x); i++)
{
if (x % i == 0)
{
y = 0;
break;
} }