在这里插入代码片
# 素数输出程序
设计一个程序,输出所有小于等于n的素数(n为一个大于2的正整数)。
要求:
- 函数
prime(n)
的功能是判断正整数n是否为素数; - 主函数
main
调用该函数输出素数; - (参考)判断n是否为素数采用的方法:若n是素数,则n不能被2~√n的任何整数整除。
#include<stdio.h>
#include<math.h>
int prime(int n){
int i;
for(i=2;i<=sqrt(n);i++)//若n是素数,则n不能被2~根号n的任何整数整除。
if(n%i==0)
return 0;
return 1;
}
int main(){
int num,i,j = 0;
printf("请输入n:");
scanf("%d",&num);
printf("小于等于%d的素数\n",num);
if(num>2){
printf("%d\t",2);
j++;
}
// 循环遍历小于等于 num 的所有数
for(i=3;i<=num;i+=2)
if(prime(i)==1){
printf("%d\t",i);
}
printf("\n");
return 0;
}
输入100,运行结果如图
求和程序
- 编写一个程序,对于给定的正整数 n,求 1 + 2 + 3 + … + n,采用逐个累加(累加法)与 n(n+1)/2(高斯法)两种解法。对于相同的 n,给出这两种解法的求和结果和求解时间。
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int leijia(int n){
long sum=0;
for(int i=1;i<=n;i++){
sum+=i;
}
printf("累加和:%d\n",sum);
return sum;
}
int gaosi(int n){
long sum=(n*(n+1))/2;
printf("\n高斯和:%d\n",sum);
return sum;
}
int main(){
int n;
clock_t s1,s2, e1,e2; //typedef time_t long
printf("请输入一个整数n:");
scanf("%d",&n);
s1 = clock(); //获取系统当前时间
leijia(n); //间隔
e1 = clock(); //获取系统当前时间
printf("时间差为:%lf秒\n",((double) (e1 - s1)) / CLOCKS_PER_SEC);//CLOCKS_PER_SEC是一个常量
s2 = clock(); //获取系统当前时间
gaosi(n); //间隔
e2 = clock(); //获取系统当前时间
printf("时间差为:%lf秒\n",((double) (e2 - s2)) / CLOCKS_PER_SEC);
return 0;
}
输入100000,结果如图
输入900000,结果如图
可以看到时间差明显变大。
函数InitList
初始化结构体指针变量L,即为L分配内存;
- 函数
InsertList
实现将数组a赋值给结构体成员elem
,length
值为长度; - 函数
DestroyList
主要实现释放指针L所指向的内存; - 函数
DispList
将elem
成员输出打印出来。
要求:
- 以你自己的学号学号做为数组a的元素,如学号为“19052045”,则a={1,9,0,5,2,0,4,5};
- 请补充完整
DispList
; - 写出测试程序,实现初始化、赋值、显示、销毁等操作(即写出
main
主函数)。
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
struct date {
int day, month, year;
};
typedef struct {
char name[20];
long num;
struct date birthday;
} stu;
int main() {
stu *student1 = (stu*)malloc(sizeof(stu)); // 使用malloc分配内存空间
printf("使用结构体指针变量进行数据存取:\n");
printf("请输入学生1姓名:");
char name[20];
scanf("%s", name);
printf("请输入学生1学号:");
long num;
scanf("%ld", &num);
printf("请输入学生2生日(格式:yyyy-mm-dd):");
int day, month, year;
scanf("%d-%d-%d", &year, &month, &day);
strcpy(student1->name, name);
student1->num = num;
student1->birthday.day = day;
student1->birthday.month = month;
student1->birthday.year = year;
printf("姓名:%s\n", student1->name);
printf("学号:%ld\n", student1->num);
printf("生日:%d-%d-%d\n", student1->birthday.year, student1->birthday.month, student1->birthday.day);
stu student2;
printf("\n\n使用结构体变量进行数据存取:\n");
printf("请输入学生2姓名:");
char name1[20];
scanf("%s", name1);
printf("请输入学生2学号:");
long num1;
scanf("%ld", &num1);
printf("请输入学生2生日(格式:yyyy-mm-dd):");
int day1, month1, year1;
scanf("%d-%d-%d", &year1, &month1, &day1);
strcpy(student2.name, name1);
student2.num = num1;
student2.birthday.day = day1;
student2.birthday.month = month1;
student2.birthday.year = year1;
printf("姓名:%s\n", student2.name);
printf("学号:%ld\n", student2.num);
printf("生日:%d-%d-%d\n", student2.birthday.year, student2.birthday.month, student2.birthday.day);
free(student1->name);
free(student1);
free(student2.name);
return 0;
}