对于正负号交错问题,我们可以引入temp变量初始化为1,每当执行一次运算,令temp=-temp即可实现正负交替。
需注意前n项和为实型需要定义为double类型,输出时使用%f。
#include<stdio.h>
#define N 1000
int main()
{
double s=0;
int temp=1;
for(int i=1;i<=N;i++)
{
s+=1.0*temp/i;
temp=-temp;
}
printf("前N项和为%f",s);
return 0;
}
一个简单的判断质数函数,计数函数可巧妙利用质数函数里面的返回值。
#include<stdio.h>
#include<math.h>
#define N 20
void input(int *pa,int n)
{
int i;
printf("请输入元素:");
for(i=0;i<n;i++)
{
scanf("%d",pa+i);
}
}
int prime(int n)
{
int k,i;
k=sqrt(n);
if(n==1||n==2)
{
return 0;
}
for(i=2;i<=k;i++)
{
if(n%i==0)
return 0;
}
if(i>k)
return 1;
}
int count(int *pa,int n)
{
int count=0;
for(int i=0;i<n;i++)
{
count+=prime(*(pa+i));
}
return count;
}
int main()
{
int arr[N];
int n;
do{
printf("请输入元素个数\n");
scanf("%d",&n);
}while(n<=0||n>20);
input(arr,n);
printf("其中质数个数为%d",count(arr,n));
return 0;
}
注意题目用指针变量来实现一维数组,首先对于指针变量一定要初始化,避免出现野指针的情况。随机数的使用需要用到
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
srand(time(NULL));//使用系统时钟作为随机数种子
int ret=rand()%100+1;//生成【1,100】随机数
使用指针变量时需要分配内存空间,需要使用malloc函数分配内存
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 生成元素为1-100的随机数组
void create(int a[],int n)
{
srand((unsigned)time(NULL));
for (int i = 0; i < n; i++)
{
int aa = rand() % 100 + 1;
a[i] = aa;
}
}
void print(int a[],int n)
{
int count=0;
for (int i = 0; i < n; i++)
{
printf("%-5d", a[i]);
count++;
if(count%5==0)
printf("\n");
}
}
int main()
{
int *array=NULL;
int n;
printf("请输入数组长度:\n");
scanf("%d",&n);
array=(int *)malloc(n*sizeof(int));
create(array,n);
print(array,n);
system("pause");
return 0;
}