第七次实验

/* 
02.* 文件名称:素数和回文 
03.* 作    者:龚晓天 
04.* 完成日期:  2016  年  6  月  5 日 
05.* 版 本 号:v1.0 
06.* 对任务及求解方法的描述部分:略 
07.* 输入描述: 略
08.* 问题描述: 求素数和回文
09.* 程序输出: 输出300以内所有素数、回文数、回文素数、可逆素数 
10.* 问题分析: 略 
11.* 算法设计: 略 
12.*/  
#include<iostream>  
using namespace std;  
int isPrimer(int n)//判断是否为素数  
 {  int i;  
 {for(i=2;i<n;i++)  
    if(n%i==0)break;}  
 if(i==n) return 1;  
 else return 0;  
 }  
  
 int isPalindrome(int n)//判断是否是回文数  
 {  
     if(n<10)return 1;  
     else if(n>=10&&n<100&&n/10==n%10)return 1;  
     else if(n>100&&n/100==n%10)return 1;  
  
  
  
 }  
  
int main()  
{  
 int o,p,k=0,j,w,g,l,s,h;  
 cout<<"300以内所有的素数是:";  
for(o=2;o<300;o++)  
{  
  
        p=isPrimer(o);  
   if(p==1)  
   {  
       cout<<o<<" ";  
   }  
}  
cout<<endl<<"300以内所有的回文数是:";  
for(o=2;o<300;o++)  
{  
    j=isPalindrome(o);  
    if(j==1)  
    {  
        cout<<o<<" ";  
    }  
  
}  
  
cout<<endl<<"300以内所有的回文素数是:";  
for(o=2;o<300;o++)  
{  
    if(isPalindrome(o)==isPrimer(o))  
        cout<<o<<" ";  
}  
cout<<endl<<"300以内的所有可逆素数是:";  
for(o=2;o<10;o++)  
 { w=isPrimer(o);  
     if(w==1) cout<<o<<" ";}  
for(o=10;o<100;o++)  
    {l=o/10;g=o%10;  
    h=g*10+l;  
    if(isPrimer(o)==isPrimer(h)&&isPrimer(o)==1) cout<<o<<" ";  
    }  
  
for(o=100;o<300;o++)  
{  
    s=o/100;  
    l=o/10-s*10;  
    g=o%10;  
    h=g*100+l*10+s;  
    if(isPrimer(o)==isPrimer(h)&&isPrimer(o)==1) cout<<o<<" ";  
}  
  
  
  
}  

学习心得:自己做得有点懵,经过帮助还是做出来了

下面是一个 C 语言的示例代码,可以实现你所描述的功能: ```c #include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_STUDENT_NUM 50 // 最大学生数 struct student { int num; // 学号 char name[20]; // 姓名 int age; // 年龄 }; // 按学号从小到大排序 int cmp_by_num(const void* a, const void* b) { return ((struct student*)a)->num - ((struct student*)b)->num; } // 按姓名从小到大排序 int cmp_by_name(const void* a, const void* b) { return strcmp(((struct student*)a)->name, ((struct student*)b)->name); } // 按年龄从小到大排序 int cmp_by_age(const void* a, const void* b) { if (((struct student*)a)->age != ((struct student*)b)->age) { return ((struct student*)a)->age - ((struct student*)b)->age; } else { return strcmp(((struct student*)a)->name, ((struct student*)b)->name); } } int main() { int n; scanf("%d", &n); struct student stu[MAX_STUDENT_NUM]; // 输入学生信息 for (int i = 0; i < n; i++) { scanf("%d%s%d", &stu[i].num, stu[i].name, &stu[i].age); } // 按学号从小到大排序 qsort(stu, n, sizeof(struct student), cmp_by_num); // 按姓名从小到大排序输出 qsort(stu, n, sizeof(struct student), cmp_by_name); for (int i = 0; i < n; i++) { printf("%3d %-6s %3d\n", stu[i].num, stu[i].name, stu[i].age); } printf("\n"); // 按年龄从小到大排序输出 qsort(stu, n, sizeof(struct student), cmp_by_age); for (int i = 0; i < n; i++) { printf("%3d %-6s %3d\n", stu[i].num, stu[i].name, stu[i].age); } printf("\n"); return 0; } ``` 该代码定义了一个 `struct student` 结构体,包括学号、姓名和年龄。在主函数,首先输入学生数 `n`,然后定义一个长度为 `MAX_STUDENT_NUM` 的学生数组,并通过循环输入每个学生的信息。接着,分别定义了三个比较函数 `cmp_by_num`、`cmp_by_name` 和 `cmp_by_age`,用于排序。最后,分别按姓名和年龄从小到大排序输出学生信息。其,姓名和年龄相同时,按姓名从小到大排序输出。两种排序方式输出结果之间用一行空行相隔。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值