代码展示
/**********************
author:HMH
NO.:201810050127
Date:20231031
Version:0.9
target:
**********************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#include <math.h>
#include <time.h>
int login(){
printf("\n\n\n");
printf("\t※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("\t\t\t欢迎使用C语言程序小系统\n");
printf("\t--------------------------------------------------------\n");
printf("\t\t\t【1】试用\n");
printf("\t\t\t【2】登录\n");
printf("\t\t\t【3】退出\n");
printf("\t--------------------------------------------------------\n");
}
int mima()
{
int i=0;
char user[10]="admin";
char Code[10]="123456";
char getuser[10];
char Getskey[10];
while(1)
{
printf("\t\t\t请输入账号:");
scanf("%s",getuser);
printf("\t\t\t请输入密码:");
while(1)
{
Getskey[i]=getch();
if(Getskey[i]=='\r')
break;
else if(Getskey[i]=='\b')
{
if(i==0)
continue;
printf("\b");
printf(" ");
printf("\b");
i--;
}
else
{
printf("*");
i++;
}
}
Getskey[6]='\0';
if(strcmp(user, getuser)==0&&strcmp(Code, Getskey)==0)
return 1;
else
{
printf("\n\n\t\t\t账号不存在或密码输入错误,请重新输入\n");
i = 0;
}
}
}
/*显示试用菜单菜单*/
void premenu()
{
system("cls");
printf("\n\n\n\n\n");
printf("\t==========================================================\n");
printf("\t 欢迎来到C语言程序小系统 \n");
printf("\t==========================================================\n");
printf("\t 主菜单 \n");
printf("\t \n");
printf("\t 1.素数类问题1 \n");
printf("\t \n");
printf("\t 2.素数类问题2 \n");
printf("\t \n");
printf("\t 3.解方程问题1 \n");
printf("\t \n");
printf("\t 4.解方程问题2 \n");
printf("\t \n");
printf("\t********************剩余功能登录使用**********************\n");
printf("\t \n");
printf("\t 6.************ \n");
printf("\t \n");
printf("\t 7.************ \n");
printf("\t \n");
printf("\t ... ... \n");
printf("\t \n");
printf("\t =========================================================\n");
printf("\t 按【5】可以返回上一级 \n");
printf("\t==========================================================\n");
}
/*显示登录菜单*/
void showmenu1()
{
system("cls");
printf("\n\n\n\n\n");
printf("\t==========================================================\n");
printf("\t 管理员,您好!欢迎来到C语言程序小系统,输入【13】进入设置\n");
printf("\t==========================================================\n");
printf("\t 主菜单 \n");
printf("\t \n");
printf("\t 1.素数类问题1 \n");
printf("\t \n");
printf("\t 2.素数类问题2 \n");
printf("\t \n");
printf("\t 3.解方程问题1 \n");
printf("\t \n");
printf("\t 4.解方程问题2 \n");
printf("\t \n");
printf("\t 5.数列类问题1 \n");
printf("\t \n");
printf("\t 6.数列类问题2 \n");
printf("\t \n");
printf("\t 7.排序类问题1 \n");
printf("\t \n");
printf("\t 8.排序类问题2 \n");
printf("\t \n");
printf("\t 9.组合类问题1 \n");
printf("\t \n");
printf("\t 10.组合类问题2 \n");
printf("\t \n");
printf("\t 11.趣味类问题1 \n");
printf("\t \n");
printf("\t 12.趣味类问题2 \n");
printf("\t==========================================================\n");
}
/*显示试用模式菜单*/
void showmenu2()
{
system("cls");
printf("\n\n\n\n\n");
printf("\t =========================================================\n");
printf("\t 欢迎来到C语言程序小系统 \n");
printf("\t =========================================================\n");
printf("\t \n");
printf("\t 主菜单 \n");
printf("\t \n");
printf("\t 1.素数类问题1 2.素数类问题2 \n");
printf("\t \n");
printf("\t 3.解方程类问题1 4.解方程类问题2 \n");
printf("\t \n");
printf("\t 5.数列类问题1 6.数列类问题2 \n");
printf("\t \n");
printf("\t 7.排序类问题1 8.排序类问题2 \n");
printf("\t \n");
printf("\t 9.数字组合类问题1 10.数字组合类问题2 \n");
printf("\t \n");
printf("\t 11.趣味问题1 12.趣味问题2 \n");
printf("\t \n");
printf("\t==========================================================\n");
printf("\t \n");
printf("\t*附加功能:13.管理员设置 \n");
printf("\t \n");
printf("\t==========================================================\n");
}
/*显示试用模式菜单*/
void showmenu3()
{
system("cls");
printf("\n\n\n\n\n");
printf("\t =========================================================\n");
printf("\t 欢迎来到C语言程序小系统 \n");
printf("\t =========================================================\n");
printf("\t \n");
printf("\t 主菜单 \n");
printf("\t \n");
printf("\t 一、素数类问题 【01】 【02】 \n");
printf("\t \n");
printf("\t 二、解方程类问题 【03】 【04】 \n");
printf("\t \n");
printf("\t 三、数列类问题 【05】 【06】 \n");
printf("\t \n");
printf("\t 四、排序类问题 【07】 【08】 \n");
printf("\t \n");
printf("\t 五、数字组合类问题 【09】 【10】 \n");
printf("\t \n");
printf("\t 六、趣味问题 【11】 【12】 \n");
printf("\t \n");
printf("\t ※※、后台设置 【13】 \n");
printf("\t \n");
printf("\t==========================================================\n");
}
/*管理员模式*/
void settingmenu()
{
system("cls");
printf("\n\n\n\n\n");
printf("\t =========================================================\n");
printf("\t ADMIN Setting \n");
printf("\t =========================================================\n");
printf("\t \n");
printf("\t 后台设置主菜单 \n");
printf("\t \n");
printf("\t 1.主题外观 【1|经典】 【2|简洁】 【3|体验】 \n");
printf("\t \n");
printf("\t 2.待 开 发 【*|on】 【*|Off】 \n");
printf("\t \n");
printf("\t 3.待 开 发 【*|on】 【*|Off】 \n");
printf("\t \n");
printf("\t \n");
printf("\t==========================================================\n");
printf("\t Tips:1.更改设置输入对应编号即可。 \n");
printf("\t==========================================================\n");
}
/*判断素数*/
int isPrime(int num) {
int i;
if (num <= 1) {
return 0;
}
for (i = 2; i * i <= num; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
int countPrimes() {
int i, j, k, count = 0;
for (i = 1000; i < 10000; i++) {
j = i % 10; // 个位数字
k = i / 10 % 10; // 十位数字
if ((j + k) % 6 == i / 100 % 10 && isPrime(i)) {
count++;
}
}
return count;
}
int printPrimes() {
int i, j, k, count = 0;
for (i = 1000; i < 10000; i++) {
j = i % 10; // 个位数字
k = i / 10 % 10; // 十位数字
if ((j + k) % 6 == i / 100 % 10 && isPrime(i)) {
printf("%d ", i);
}
}
}
int twinsnum() {
int count = 0; // 双胞胎数计数器
int i;
for(i=500; i<=800; i++) { // 遍历[500,800]之间的数
if(isPrime(i) && isPrime(i+2)) { // 如果当前数是素数且下一个数是素数加2,则是一对双胞胎数
count++; // 计数器加1
}
}
return count;
}
int printtwinsnum() {
int count = 0; // 双胞胎数计数器
int i;
for(i=500; i<=800; i++) { // 遍历[500,800]之间的数
if(isPrime(i) && isPrime(i+2)) { // 如果当前数是素数且下一个数是素数加2,则是一对双胞胎数
printf("%d %d\n", i, i+2); // 输出双胞胎数
}
}
}
int jiex01() {
int count = 0;
int big, medium, small;
for (big = 0; big <= 100; big++) {
for (medium = 0; medium <= 100 - big; medium++) {
small = 100 - big - medium;
if (big * 3 + medium * 2 + small / 2 == 100 && small % 2 == 0) {
count++;
printf("方案 %d:大马 %d 匹,中马 %d 匹,小马 %d 匹\n", count, big, medium, small);
}
}
}
if (count == 0) {
printf("没有找到合适的解。\n");
}
return 0;
}
/*方程问题2*/
int jiex02() {
int count = 0;
int x, y;
for (x = -50; x <= 50; x++) {
for (y = -50; y <= 50; y++) {
if (7 * x - y == 3) {
count++;
}
}
}
printf("\n方程有%d组整数解。\n", count);
return 0;
}
/*数列问题01*/
int shulie01() {
double numerator = 2; // 分子
double denominator = 1; // 分母
double sum = 0; // 总和
int i;
for (i = 0; i < 50; i++) {
sum += numerator / denominator;
double temp = numerator; // 保存当前分子的值
numerator += denominator; // 分子变为前两项之和
denominator = temp; // 新的分母为前一项的分子
}
printf("前50项之和为: %.2lf\n", sum);
return 0;
}
/*数列问题02*/
int shulie02() {
int n = 1;
int sum = 0;
while (sum <= 100) {
sum += n;
n++;
}
printf("\n答案为%d\n", n-1); //最小的n,使1+2+3+...+n > 100为
return 0;
}
/*排序01*/
#define MAX_WORDS 15
#define MAX_LENGTH 50
void sortWords(char words[MAX_WORDS][MAX_LENGTH], int count) {
int i, j;
char temp[MAX_LENGTH];
for (i = 0; i < count - 1; i++) {
for (j = i + 1; j < count; j++) {
if (strcmp(words[i], words[j]) < 0) {
strcpy(temp, words[i]);
strcpy(words[i], words[j]);
strcpy(words[j], temp);
}
}
}
}
int paixu01() {
char words[MAX_WORDS][MAX_LENGTH];
int i, count;
printf("请输入15个单词:\n");
for (i = 0; i < MAX_WORDS; i++) {
scanf("%s", words[i]);
}
count = MAX_WORDS;
sortWords(words, count);
printf("\n以降序顺序显示单词:\n");
for (i = 0; i < count; i++) {
printf("%s\n", words[i]);
}
return 0;
}
/*排序02*/
#define NUM_STUDENTS 10 // 学生人数
typedef struct {
char name[20];
int studentID;
int englishScore;
int computerScore;
int totalScore;
} Student;
// 比较函数,用于排序
int compare(const void* a, const void* b) {
return ((Student*)b)->totalScore - ((Student*)a)->totalScore;
}
int paixu02() {
// 定义学生数组
Student students[NUM_STUDENTS];
int i;
// 生成随机数据
srand(time(0));
for (i = 0; i < NUM_STUDENTS; i++) {
sprintf(students[i].name, "Student%d", i + 1);
students[i].studentID = 1000 + i;
students[i].englishScore = rand() % 101;
students[i].computerScore = rand() % 101;
students[i].totalScore = students[i].englishScore + students[i].computerScore;
}
// 按总分降序排序
qsort(students, NUM_STUDENTS, sizeof(Student), compare);
// 显示表头
printf("姓名 \t学号\t外语分数\t计算机分数\t总分\n");
// 显示学生信息
for (i = 0; i < NUM_STUDENTS; i++) {
printf("%s\t%d\t%d\t\t%d\t\t%d\n", students[i].name, students[i].studentID,
students[i].englishScore, students[i].computerScore, students[i].totalScore);
}
return 0;
}
/*取数01*/
int zuhe01() {
int i, j, k, n;
int max = 0;
for (i = 1; i <= 9; i++) { // 遍历个位数字
for (j = 0; j <= 9; j++) { // 遍历十位数字
for (k = 0; k <= 9; k++) { // 遍历百位数字
n = i * 100 + j * 10 + k; // 计算三位数
if (n >= 100 && n <= 999 && pow(i, 3) + pow(j, 3) + pow(k, 3) == n) { // 判断是否为水仙花数
if (n > max) { // 更新最大值
max = n;
}
}
}
}
}
printf("最大的水仙花数为:%d\n", max);
return 0;
}
/*取数02*/
int zuhe02() {
int count = 0; // 用于记录符合条件的四位数的数量
int i,thousand,ten,hundred,unit;
// 遍历所有四位数
for (i = 1000; i < 10000; i++) {
thousand = i / 1000; // 千位数字
hundred = (i / 100) % 10; // 百位数字
ten = (i / 10) % 10; // 十位数字
unit = i % 10; // 个位数字
if (thousand + ten == hundred + unit) {
printf("%d ", i); // 输出符合条件的四位数
count++; // 增加计数器
}
}
printf("\n总共有%d个这样的四位数。\n", count);
return 0;
}
/*问题01*/
int wenti01() {
int i, x = 5; // 第8次减半后向前推算得到的数字
for(i = 7; i >= 0; i--) {
x = x * 2 - 1; // 逆向推算出原始值
}
printf("%d\n", x); // 输出结果
return 0;
}
/*问题02*/
int wenti02(){
int n =100;
while (1){
if (n%2 == 1 && n%3 == 2 && n%4 == 3 && n%5 == 4 && n%6 ==5){
printf("满足条件的最小台阶数是:%d\n",n);
}
n--;
if( n == 0){break;}
}
return 0;
}
/*检测enter按键,然后进入菜单*/ /*没用了*/
void getenter() {
printf("按下Enter键进入下一步骤...");
while (getchar() != '\n') {
// 空循环,继续等待输入
}
}
/*预设问题*/
int queslib(choice) {
char text1[] = "[1000,9999]范围内同时满足以下两个条件的十进制数.\n1.其个位数字与十位数字之和除以6所得的余数是千位数字;\n2.该数是素数; 求有多少个这样的数并显示出来。\n";
char text2[] = "除1和它本身外,不能被其它整数整除的正整数称为素数(注:1不是素数,\n2是素数)。若两素数之差为2 ,则称两素数为双胞胎数,问[500,800]之间\n有多少对双胞胎数,并把双胞胎数显示出来。\n";
char text3[] = "大马可驮三担货物,中马可驮两担货物,两匹小马驮一担货物,试着求一百\n匹大中小马驮一百担货物的方案有多少种,并显示出每种方案, 若没有合适\n的解,请显示相关信息。\n";
char text4[] = "求方程7x-y=3, x、y在[-50,50]内共有多少组整数解?";
char text5[] = "求数列:2/1,3/2,5/3,8/5,13/8,21/13,…… 前50项之和。\n(精确到小数点后第二位)\n";
char text6[] = "设S=1+2+3+4+…+n,n为正整数,求使S超过100(S>100)的最小的n。";
char text7[] = "从键盘上输入15个单词,将其以降序顺序显示出来。(排序方法不限,单\n词不得雷同)\n";
char text8[] = "定义一个结构体数组,拟实现下面的表格,表头的属性名字自拟,如姓名可\n以起名为name、xm、姓名等等,数据内容自拟(不得雷同),请按总分进行\n排序,以降序的顺序显示出所有的信息。(人数不得少于十人)。\n";
char text9[] = "a.所谓“水仙花数”是指一个三位数,其各位数字的三次方之和等于该数本身,\n例如:153=1^3+3^3+5^3,故153是水仙花数,求[100,999]之间最大的水\n仙花数。\n";
char text10[] = "b.设某四位数的千位数字与十位数字的和等于百位数字与个位数字的和,\n例如,对于四位数:9515,9+1=5+5,试问所有这样的四位数有多少,\n并把这些四位数显示出来。\n";
char text11[] = "某一正整数,进行递减,每次将该数减半后再减一,当对该数进行第8次减\n半时发现该数只剩下1不能再减了,求该数。\n";
char text12[] = "爱因斯坦走台阶:有一台阶,如果每次走两阶,最后剩一阶;如果每次走三阶,最后\n剩两阶;如果每次走四阶,最后剩三阶;如果每次走五阶,最后剩四阶;如果每次走\n六阶,刚好走完.求满足上述条件的不大于100最大台阶数是多少?\n";
//// printf("请选择:\n");
//// scanf("%d", &choice);
switch(choice) {
case 1:
printf("%s\n", text1);
break;
case 2:
printf("%s\n", text2);
break;
case 3:
printf("%s\n", text3);
break;
case 4:
printf("%s\n", text4);
break;
case 5:
printf("%s\n", text5);
break;
case 6:
printf("%s\n", text6);
break;
case 7:
printf("%s\n", text7);
break;
case 8:
printf("%s\n", text8);
break;
case 9:
printf("%s\n", text9);
break;
case 10:
printf("%s\n", text10);
break;
case 11:
printf("%s\n", text11);
break;
case 12:
printf("%s\n", text12);
break;
default:
// printf("输入错误,请输入1到5之间的数字。\n");
break;
}
return choice;
}
/*主题选择功能*/
void gettheme(int *defaulttheme){
if(*defaulttheme == 1)
showmenu1();
else if(*defaulttheme == 2)
showmenu2();
else if(*defaulttheme == 3)
showmenu3();
}
/*后台设置*/
int settingmode(int *defaulttheme){
int choice, c;
system("cls");
settingmenu();
do{
printf("\t请输入选择项(1-3):");
scanf("%d",&choice);
// if(choice == 0)
// main();
switch (choice)
{
case 1:
*defaulttheme = 1;
printf(" 设置成功!当前主题为:1.经典\n");
system("pause");
showmenu1();
return;
break;
case 2:
*defaulttheme = 2;
printf(" 设置成功!当前主题为:2.简洁\n");
system("pause");
showmenu2();
return;
break;
case 3:
*defaulttheme = 3;
printf(" 设置成功!当前主题为:3.体验\n");
system("pause");
showmenu3();
return;
break;
default:
printf("\t输入错误!\n");
system("pause");
break;
} }while(choice);
}
/*问题选择按钮功能*/
char prechoiceone(){
char str;
while(1){
printf("确定是当前问题吗?<Y/N>:");
scanf("%s", &str);
if(str == 'y' || str == 'Y' || str == '1'){
// 执行相关操作
break; // 确定选择后跳出循环
} else if(str == 'x' || str == 'X' || str == '2'){
premenu();
}
}
// 执行其他操作
}
///*问题选择按钮功能*/
//char logchoiceone(*defaultet){
// char str;
// while(1){
// printf("确定是当前问题吗?<Y/N>:");
// scanf("%s", &str);
// if(str == 'y' || str == 'Y' || str == '1'){
// // 执行相关操作
// break; // 确定选择后跳出循环
// } else if(str == 'x' || str == 'X' || str == '2'){
// gettheme(defaulttheme);
// }
// }
// // 执行其他操作
//}
/*多用户登录*/
/*增加问题*/
/*程序锁*/
/*密码验证模块*/
int main(void)
{
system("cls");
int count,i;
int choice,z,c;
char ch;
int defaulttheme = 1;
login();
while(printf("\t\t\t请选择:")&&scanf("%d",&c)!=EOF)
{
if(c == 1)
{
premenu();
do{
printf("\t请输入选择项(1-4):");
scanf("%d",&choice);
if(choice == 0)
{
system("cls");
login();
}
switch (choice)
{
case 1:
premenu();
queslib(choice);
prechoiceone();
countPrimes();
printf("共有%d个符合条件的十进制数:\n", count = countPrimes());
count = printPrimes() ;
printf("\n");
break;
case 2:
premenu();
queslib(choice);
prechoiceone();
printf("共有%d对双胞胎数。\n", count = twinsnum());
printtwinsnum();
break;
case 3:
premenu();
queslib(choice);
prechoiceone();
jiex01();
break;
case 4:
premenu();
queslib(choice);
prechoiceone();
jiex02();
break;
case 5:
system("cls");
main();
break;
default:
printf("\t更多功能请登录后使用!\n");
system("pause");
break;
} }while(choice);
}
else if(c==2)
{
z=mima();
gettheme(&defaulttheme);
do{
printf("\t请输入选择项(1-13):");
scanf("%d",&choice);
if(choice == 0 || 00)
login();
switch (choice)
{
case 1:
gettheme(&defaulttheme);
queslib(choice);
countPrimes();
printf("共有%d个符合条件的十进制数:\n", count = countPrimes());
count = printPrimes() ;
printf("\n");
break;
case 2:
gettheme(&defaulttheme);
queslib(choice);
printf("共有%d对双胞胎数。\n", count = twinsnum());
printtwinsnum();
break;
case 3:
gettheme(&defaulttheme);
queslib(choice);
jiex01();
break;
case 4:
gettheme(&defaulttheme);
queslib(choice);
jiex02();
break;
case 5:
gettheme(&defaulttheme);
queslib(choice);
shulie01();
break;
case 6:
gettheme(&defaulttheme);
queslib(choice);
shulie02();
break;
case 7:
gettheme(&defaulttheme);
queslib(choice);
paixu01();
break;
case 8:
gettheme(&defaulttheme);
queslib(choice);
paixu02();
break;
case 9:
gettheme(&defaulttheme);
queslib(choice);
zuhe01();
break;
case 10:
gettheme(&defaulttheme);
queslib(choice);
zuhe02();
break;
case 11:
gettheme(&defaulttheme);
queslib(choice);
wenti01();
break;
case 12:
gettheme(&defaulttheme);
queslib(choice);
wenti02();
break;
case 13:
settingmode(&defaulttheme);
break;
default:
// system("clr");
// gettheme(&defaulttheme);
printf("\t输入错误!!!\n");
system("pause");
break;
}
}while(choice);
}
else if(c==3)
exit(0);
else
{
printf("\t输入错误!!!\n");
while(getchar() != '\n'); //清楚错误字符缓存
}
}
return 0;
}
暂无评论