c语言刷题第一天
题目:
第一题
题目描述
编写一个程序判断一个数是否为素数
输入
整数
输出
1或 0(其中1表示此数为素数,0为表示为不是素数)
#include<stdio.h>
int main()
{
int target = 0;
int i = 0;
int flag = 1;
scanf("%d",&target);
for(i=2;i<target;i++)
{
if(target%i==0)
flag=0;
}
printf("%d\n",flag);
return 0;
}
题目描述
用筛法求之N内的素数。
输入
N
输出
0~N的素数
#include<stdio.h>
int main()
{
int N = 0;
int i = 0;
int j = 2;
int flag = 0;
scanf("%d",&N);
for(i=2;i<=N;i++)
{
flag = 0;
j = 2;
while(j<i)
{
if(i%j==0)
flag = 1;
j++;
}
if(flag == 0)
printf("%d",i);
}
return 0;
}
做题总结
这道选择素数的问题令我印象十分深刻,因为菜鸡的我一直编译通过,但是结果始终不对,这是最蛋疼的(因为是逻辑性的错误,十分难找)。最后费尽千辛万苦,总算肝出了错误,就是在每次循环的开始,变量一定要记得初始化!初始化!初始化!重要的事情说三遍T T。
第二题
题目描述
有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13… 求出这个数列的前N项之和,保留两位小数。
输入
N
输出
数列前N项和
#include<stdio.h>
int main()
{
double a = 2;
double b = 1;
int N = 0;
int i = 0;
int temp = 0;
double sum = 0;
scanf("%d",&N);
for(i=1;i<=N;i++)
{
temp = a;
sum = sum + a/b;
a = a + b;
b = temp;
}
printf("%.2f",sum);
return 0;
}
做题总结
[外链图片转存中...(img-cVieMtnn-1623479328131)]
***
#### 做题总结
==本题主要考察的知识点我个人认为有两个:1.数据类型的转换:题目中让结果保留两位小数,其实是“%.2f"这个浮点表达的知识点,另外不同类型的数据进行运算的时候,一定要注意数据类型之间的转换。2.还是上一题的变量初始化问题,题目中引入了一个temp作为中间变量==