1.验证“哥德巴赫猜想”
#include <stdio.h>
int issu(long long int a);
int main()
{
long long int N;
scanf("%lld", &N);
long long int i,j;
for(i=2;i<=N/2;i++)
{ j=N-i;//能大大减少复杂度,对应测试点为运行超时。我怎么就没想到呜~for (j = i; j <= N; j++){
if (issu(j)&&issu(i) && (i + j == N))
{
printf("%lld = %lld + %lld", N, i, j);
return 0;
}//}
}
int issu(long long int a)
{
long long int i;
if (a == 2)
return 1;
for (i = 2; i * i <= a; i++)
{
if (a % i == 0)
return 0;
}
return 1;
}
2.求一批整数中出现最多的个位数字
#include <stdio.h>
#define MAX 1000
int main()
{
int count[10];
for (int i = 0; i <= 9; i++)
{
count[i] = 0;
}
int num[MAX];
int N;
scanf("%d\n", &N);
for (int i = 0; i < N; i++)
{
scanf("%d", &num[i]);
if(num[i]==0)
{count[0]++;}//测试点:0出现最多次。一直没有考虑到0这个数字,可恶哇!
while (num[i]!= 0)
{
count[num[i] % 10]++;
num[i] = num[i] / 10;
}
}
int max = 0;
int i;
for ( i = 0; i <= 9; i++)
{
if (count[i] > count[max])
max = i;
}
printf("%d:", count[max]);
for (int j = 0; j <= 9; j++)
{
if (count[j] == count[max])
printf(" %d", j);
}
printf("\n");
return 0;
}
3.美好日子//没捋清楚,时间仓促,写的较为复杂
#include <stdio.h>
void wanmeiday(int y);
int main()
{
int T;
int num[8000];
scanf("%d", &T);
for (int i = 0; i < T; i++)
{
scanf("%d", &num[i]);
wanmeiday(num[i]);
}
return 0;
}
void wanmeiday(int y)
{
int n = y;
int a, b, c, d;
d = y % 10;
y = y / 10;
c = y % 10;
y = y / 10;
b = y % 10;
y = y / 10;
a = y % 10;
int mon, day;
mon = d * 10 + c;
day = b * 10 + a;
if (mon == 1 || mon == 3 || mon == 5 || mon == 7 || mon == 8 || mon == 10 || mon == 12)
{
if (day <= 31)printf("%d%d%d%d%d\n", n, d, c, b, a);
else printf("none\n");
}
else if (mon == 2)
{
if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0)//有点生疏,但还好写对了
{
if (day <= 29)printf("%d%d%d%d%d\n", n, d, c, b, a);
else printf("none\n");
}
else
{
if (day <= 28)printf("%d%d%d%d%d\n", n, d, c, b, a);
printf("none\n");
}
}
else if (mon >= 1 && mon <= 12) {
if (day <= 30)printf("%d%d%d%d%d\n", n, d, c, b, a);
else printf("none\n");
}
else printf("none\n");
}
4.质价比//时间仓促,结构体知识点薄弱,结构体整体替换有困难
#include <stdio.h>
struct good
{
int m;//zhiliang
int p;//jiage
};
int main()
{
int n;
struct good goods[100];
struct good temp;
while (scanf("%d", &n) != EOF)
{
for (int i = 0; i < n; i++)
{
scanf("%d", &goods[i].m);
}
for (int i = 0; i < n; i++)
{
scanf("%d", &goods[i].p);
}
//比大小
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n - 1 - i; j++)
{
if ((goods[j]).m > (goods[j + 1]).m)
{
temp = goods[j];
goods[j] = goods[j + 1];
goods[j + 1] = temp;
}
else if ((goods[j]).m == (goods[j + 1]).m)
{
if (goods[j].p < goods[j + 1].p)
{
temp = goods[j + 1];
goods[j + 1] = goods[j];
goods[j] = temp;
}
}
}
}
printf("result:\n");
for (int i = 0; i < n; i++)
{
printf("%d %d\n", goods[i].m, goods[i].p);
}
}
return 0;
}
//结构体知识点:
(一)定义一个结构体变量
1.先定义结构体类型,再定义变量
第6行定义了一个结构体变量,变量名为stu。struct和Student是连着使用的。
2.定义结构体类型的同时定义变量
结构体变量名为stu
(二)初始化结构体
只能在定义变量的同时进行初始化赋
(三)调用结构体数据
用 . ;->是链表
总结
知识点方面:结构体的定义,表示。
算法方面:考虑不全面,再多想想,更加灵活。
速度方面:还是很慢,但写的很急。先思考再做?有点困难,总害怕写不完。