当前位置:首页 » 编程语言 » c语言设计诗词十二宫格
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言设计诗词十二宫格

发布时间: 2022-12-23 21:59:38

Ⅰ 十二宫格诗词"鉴半一田方识亩闲得面等"“二月春风不度玉关一六夺”如何组成一句诗

半亩方塘一鉴开,天光云影共徘徊。——宋·朱熹《观书有感》

等闲识得东风面,万紫千红总是春。——宋·朱熹《春日》

不知细叶谁裁出,二月春风似剪刀。——唐·贺知章《咏柳》

羌笛何须怨杨柳 春风不度玉门关。—唐·王之涣《凉州词二首·其一》

c语言课程设计

/******头文件(.h)***********/
#include "stdio.h" /*I/O函数*/
#include "stdlib.h" /*标准库函数*/
#include "string.h"/*字符串函数*/
#include "ctype.h" /*字符操作函数*/
#include "conio.h" /*控制台输入输出函数 */
#define M 50 /*定义常数表示记录数*/
typedef struct /*定义数据结构*/
{
char name[20]; /*姓名*/
char units[30]; /*单位*/
char tele[20]; /*电话*/
char m_ph[20]; //手机
char rela[20]; //关系
char email[50]; //邮箱
char qq[20]; //qq
}ADDRESS;
/******以下是函数原型*******/
int enter(ADDRESS t[]); /*输入记录*/
void list(ADDRESS t[],int n); /*显示记录*/
void search(ADDRESS t[],int n); /*按姓名查找显示记录*/
int Delete(ADDRESS t[],int n); /*删除记录*/
int add(ADDRESS t[],int n); /*插入记录*/
void save(ADDRESS t[],int n); /*记录保存为文件*/
int load(ADDRESS t[]); /*从文件中读记录*/
void display(ADDRESS t[]); /*按序号查找显示记录*/
void sort(ADDRESS t[],int n); /*按姓名排序*/
void qseek(ADDRESS t[],int n); /*快速查找记录*/
void print(ADDRESS temp); /*显示单条记录*/
int find(ADDRESS t[],int n,char *s) ; /*查找函数*/
int menu_select(); /*主菜单函数*/
/******主函数开始*******/
main()
{
system("color 37");//背景色为浅绿,前景色为白色
printf(" 欢迎使用通讯录管理系统\n");//欢迎界面
int i;
ADDRESS adr[M]; /*定义结构体数组*/
int length; /*保存记录长度*/
for(;;)/*无限循环*/
{
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{
case 0:length=enter(adr);break;/*输入记录*/
case 1:list(adr,length);break; /*显示全部记录*/
case 2:search(adr,length);break; /*查找记录*/
case 3:length=Delete(adr,length);break; /*删除记录*/
case 4:length=add(adr,length); break; /*插入记录*/
case 5:save(adr,length);break; /*保存文件*/
case 6:length=load(adr); break; /*读文件*/
case 7:display(adr);break; /*按序号显示记录*/
case 8:sort(adr,length);break; /*按姓名排序*/
case 9:qseek(adr,length);break; /*快速查找记录*/
case 10:exit(0); /*如返回值为10则程序结束*/
}
}
}
/*菜单函数,函数返回值为整数,代表所选的菜单项*/
int menu_select()
{
char s[80];
int c;
printf("按任意键进入菜单......\n");/*提示按任意键继续*/
getch(); /*读入任意字符*/
system("cls"); /*清屏*/
printf(" ********************菜单***********************\n\n");
printf(" 0. 输入记录\n");
printf(" 1. 显示所有记录\n");
printf(" 2. 按姓名查找记录\n");
printf(" 3. 删除记录\n");
printf(" 4. 添加记录\n");
printf(" 5. 保存文件\n");
printf(" 6. 载入文件\n");
printf(" 7. 按序号显示记录\n");
printf(" 8. 记录排序\n");
printf(" 9. 查找记录\n");
printf(" 10. 退出\n");
printf(" ***********************************************\n");
do
{
printf("\n 请输入选项(0~10):"); /*提示输入选项*/
scanf("%d",&c);/*输入选择项*/
fflush(stdin);
}while(c<0 || c>10);/*选择项不在0~10之间重输*/
return c; /*返回选择项,主程序根据该数调用相应的函数*/
}
/***输入记录,形参为结构体数组,函数值返回类型为整型表示记录长度*/
int enter(ADDRESS t[])
{
int i,n;
char num[30];
system("cls"); /*清屏*/
int flag=1;
for(;;)
{
flag = 1;
system("cls"); /*清屏*/
printf("\n请输入记录数:\n"); /*提示信息*/
scanf("%s", &num); /*输入记录数*/
fflush(stdin);
for(int nima = 0; num[nima]; nima++)
{
if (num[nima] < 48 || num[nima] > 57)
{
flag = 0;
break;
}
}
if(flag==1)
break;
}
n=atoi(num);
printf("请输入记录:\n"); /*提示输入记录*/
printf("姓名 单位 电话 手机 关系 邮箱 QQ\n");
printf("--------------------------------------------------------------------------\n");
for(i=0;i<n;i++)
{
scanf("%s%s%s%s%s%s%s",t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq); /*输入记录*/
fflush(stdin);
for(int k=0;k<=19;k++)
{
if((t[i].tele[k]>='a' && t[i].tele[k]<='z' )|| (t[i].tele[k]>='A' && t[i].tele[k]<='Z'))
{
printf("电话输入错误!请重新输入联系人信息\n");
i--;
break;
}
if((t[i].m_ph[k]>='a' && t[i].m_ph[k]<='z' )|| (t[i].m_ph[k]>='A' && t[i].m_ph[k]<='Z'))
{
printf("手机输入错误!请重新输入联系人信息\n");
i--;
break;
}
if((t[i].qq[k]>='a' && t[i].qq[k]<='z' )|| (t[i].qq[k]>='A' && t[i].qq[k]<='Z'))
{
printf("QQ输入错误!请重新输入联系人信息\n");
i--;
break;
}
}
printf("--------------------------------------------------------------------------\n");
}
return n; /*返回记录条数*/
}
/*显示记录,参数为记录数组和记录条数*/
void list(ADDRESS t[],int n)
{
int i;
system("cls"); /*清屏*/
printf("\n\n************************************************************************\n");
printf("姓名 单位 电话 手机 关系 邮箱 QQ\n");
printf("--------------------------------------------------------------------------\n");
for(i=0;i<n;i++)
printf("%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n",t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq);
if((i+1)%10==0) /*判断输出是否达到10条记录*/
{
printf("按任意键显示下一页\n"); /*提示信息*/
getch(); /*按任意键继续*/

}
printf("*********************************结束***********************************\n");
}
/*查找记录*/
void search(ADDRESS t[],int n)
{
char s[20]; /*保存待查找姓名字符串*/
int i; /*保存查找到结点的序号*/
system("cls"); /*清屏*/
printf("请输入待查找姓名:\n");
scanf("%s",s); /*输入待查找姓名*/
i=find(t,n,s); /*调用find函数,得到一个整数*/
if(i>n-1) /*如果整数i值大于n-1,说明没找到*/
{
printf("未找到!!!\n");
getch();
}
else
print(t[i]); /*找到,调用显示函数显示记录*/
}
/*显示指定的一条记录*/
void print(ADDRESS temp)
{
system("cls"); /*清屏*/
printf("\n\n************************************************************************\n");
printf("姓名 单位 电话 手机 关系 邮箱 QQ\n");
printf("--------------------------------------------------------------------------\n");
printf("%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n",temp.name,temp.units,temp.tele,temp.m_ph,temp.rela,temp.email,temp.qq);
printf("*********************************结束***********************************\n");
getchar();
}
/*查找函数,参数为记录数组和记录条数以及姓名s */
int find(ADDRESS t[],int n,char *s)
{
int i;
system("cls"); /*清屏*/
for(i=0;i<n;i++)/*从第一条记录开始,直到最后一条*/
{
if(strcmp(s,t[i].name)==0) /*记录中的姓名和待比较的姓名是否相等*/
return i; /*相等,则返回该记录的下标号,程序提前结结束*/
}
return i; /*返回i值*/
getch();
}
/*删除函数,参数为记录数组和记录条数*/
int Delete(ADDRESS t[],int n)
{
char s[20]; /*要删除记录的姓名*/
char ch;
int i,j;
system("cls"); /*清屏*/
printf("请输入待删除的姓名:\n"); /*提示信息*/
scanf("%s",s);/*输入姓名*/
i=find(t,n,s); /*调用find函数*/
if(i>n-1) /*如果i>n-1超过了数组的长度*/
printf("未找到!!!\n"); /*显示没找到要删除的记录*/
else
{
print(t[i]); /*调用输出函数显示该条记录信息*/
printf("确定删除?(Y/N)\n"); /*确认是否要删除*/
scanf("%c",&ch); /*输入一个整数0或1*/
if(ch=='y' || ch=='Y') /*如果确认删除输入y*/
{
for(j=i+1;j<n;j++) /*删除该记录,实际后续记录前移*/
{
strcpy(t[j-1].name,t[j].name); /*将后一条记录的姓名拷贝到前一条*/
strcpy(t[j-1].units,t[j].units); /*将后一条记录的单位拷贝到前一条*/
strcpy(t[j-1].tele,t[j].tele); /*将后一条记录的电话拷贝到前一条*/
strcpy(t[j-1].m_ph,t[j].m_ph); /*将后一条记录的手机拷贝到前一条*/
strcpy(t[j-1].rela,t[j].rela); /*将后一条记录的关系拷贝到前一条*/
strcpy(t[j-1].email,t[j].email); /*将后一条记录的邮箱拷贝到前一条*/
strcpy(t[j-1].qq,t[j].qq); /*将后一条记录的qq拷贝到前一条*/
}
printf("删除成功!\n");
n--; /*记录数减1*/
}
}
getch();
return n; /*返回记录数*/
}
/*插入记录函数,参数为结构体数组和记录数*/
int add(ADDRESS t[],int n)/*插入函数,参数为结构体数组和记录数*/
{
ADDRESS temp; /*新插入记录信息*/
int i,j,flag;
char s[30]; /*确定插入在哪个记录之前*/
system("cls"); /*清屏*/
printf("请输入记录:\n");
printf("************************************************************************\n");
printf("姓名 单位 电话 手机 关系 邮箱 QQ\n");
printf("--------------------------------------------------------------------------\n");
scanf("%s%s%s%s%s%s%s",temp.name,temp.units,temp.tele,temp.m_ph,temp.rela,temp.email,temp.qq); /*输入插入信息*/
fflush(stdin);
printf("请输入插入位置的姓名: \n");
scanf("%s",s); /*输入插入位置的姓名*/
i=find(t,n,s); /*调用find,确定插入位置*/
for(j=n-1;j>=i;j--) /*从最后一个结点开始向后移动一条*/
{
strcpy(t[j+1].name,t[j].name); /*当前记录的姓名拷贝到后一条*/
strcpy(t[j+1].units,t[j].units); /*当前记录的单位拷贝到后一条*/
strcpy(t[j+1].tele,t[j].tele); /*当前记录的电话拷贝到后一条*/
strcpy(t[j+1].m_ph,t[j].m_ph); /*当前记录的手机拷贝到后一条*/
strcpy(t[j+1].rela,t[j].rela); /*当前记录的关系拷贝到后一条*/
strcpy(t[j+1].email,t[j].email); /*当前记录的邮箱拷贝到后一条*/
strcpy(t[j+1].qq,t[j].qq); /*当前记录的qq拷贝到后一条*/
}
strcpy(t[i].name,temp.name); /*将新插入记录的姓名拷贝到第i个位置*/
strcpy(t[i].units,temp.units); /*将新插入记录的单位拷贝到第i个位置*/
strcpy(t[i].tele,temp.tele); /*将新插入记录的电话拷贝到第i个位置*/
strcpy(t[i].m_ph,temp.m_ph); /*将新插入记录的手机拷贝到第i个位置*/
strcpy(t[i].rela,temp.rela); /*将新插入记录的关系拷贝到第i个位置*/
strcpy(t[i].email,temp.email); /*将新插入记录的邮箱拷贝到第i个位置*/
strcpy(t[i].qq,temp.qq); /*将新插入记录的qq拷贝到第i个位置*/
n++; /*记录数加1*/
printf("添加成功!!!\n");
getch();
return n; /*返回记录数*/
}
/*保存函数,参数为结构体数组和记录数*/
void save(ADDRESS t[],int n)
{
int i;
char outfile[30];
FILE *fp; /*指向文件的指针*/
system("cls"); /*清屏*/
printf("请输入待保存的文件名:\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"wb"))==NULL) /*打开文件,并判断打开是否正常*/
{
printf("无法打开文件!\n");/*无法打开*/
exit(1); /*退出*/
}
printf("\n保存文件...\n"); /*输出提示信息*/
fprintf(fp,"%d",n); /*将记录数写入文件*/
fprintf(fp,"\r\n"); /*将换行符号写入文件*/
for(i=0;i<n;i++)
{
fprintf(fp,"%-10s%-14s%-12s%-12s%-10s%-12s%-14s\n",t[i].name,t[i].units,t[i].tele,t[i].m_ph,t[i].rela,t[i].email,t[i].qq);/*格式写入记录*/
fprintf(fp,"\r\n"); /*将换行符号写入文件*/
}
fclose(fp);/*关闭文件*/
printf("****保存成功!****\n"); /*显示保存成功*/
getch();
}
/*载入函数,参数为结构体数组*/
int load(ADDRESS t[])
{
int i,n;
char outfile[30];
FILE *fp; /*指向文件的指针*/
system("cls"); /*清屏*/
printf("请输入待载入的文件名:\n");
scanf("%s",outfile);
if((fp=fopen(outfile,"rb"))==NULL)/*打开文件*/
{
printf("无法打开文件!\n"); /*不能打开*/
exit(1); /*退出*/
}
fscanf(fp,"%d",&n); /*读入记录数*/
for(i=0;i<n;i++)
fscanf(fp,"%10s%14s%12s%12s%10s%12s%14s",t[i].name,t[i].units,t[i].tele,
t[i].m_ph,t[i].rela,t[i].email,t[i].qq); /*按格式读入记录*/
fclose(fp); /*关闭文件*/
printf("从文件读入数据成功!!!\n"); /*显示保存成功*/
getch();
return n; /*返回记录数*/

}
/*按序号显示记录函数*/
void display(ADDRESS t[])
{
int id,n;
char outfile[30];
FILE *fp; /*指向文件的指针*/
system("cls"); /*清屏*/
printf("请输入待载入的文件名:");
scanf("%s",outfile);
if((fp=fopen(outfile,"rb"))==NULL) /*打开文件*/
{
printf("无法打开文件!\n"); /*不能打开文件*/
exit(1); /*退出*/
}
printf("请输入记录序号:\n"); /*显示信息*/
scanf("%d",&id); /*输入序号*/
fscanf(fp,"%d",&n); /*从文件读入记录数*/
if(id>=0&&id<n) /*判断序号是否在记录范围内*/
{
fseek(fp,(id-1)*sizeof(ADDRESS),1); /*移动文件指针到该记录位置*/
print(t[id]); /*调用输出函数显示该记录*/
printf("\r\n");
}
else
{
printf(" %d号记录不存在!!!\n ",id); /*如果序号不合理显示信息*/
getch();
}
fclose(fp); /*关闭文件*/
}
/*排序函数,参数为结构体数组和记录数*/
void sort(ADDRESS t[],int n)
{
int i,j,flag;
system("cls"); /*清屏*/
ADDRESS temp; /*临时变量做交换数据用*/
for(i=0;i<n;i++)
{
flag=0; /*设标志判断是否发生过交换*/
for(j=0;j<n-1;j++)
if((strcmp(t[j].name,t[j+1].name))>0) /*比较大小*/
{
flag=1;
strcpy(temp.name,t[j].name); /*交换记录*/
strcpy(temp.units,t[j].units);
strcpy(temp.tele,t[j].tele);
strcpy(temp.m_ph,t[j].m_ph);
strcpy(temp.rela,t[j].rela);
strcpy(temp.email,t[j].email);
strcpy(temp.qq,t[j].qq);

strcpy(t[j].name,t[j+1].name);
strcpy(t[j].units,t[j+1].units);
strcpy(t[j].tele,t[j+1].tele);
strcpy(t[j].m_ph,t[j+1].m_ph);
strcpy(t[j].rela,t[j+1].rela);
strcpy(t[j].email,t[j+1].email);
strcpy(t[j].qq,t[j+1].qq);

strcpy(t[j+1].name,temp.name);
strcpy(t[j+1].units,temp.units);
strcpy(t[j+1].tele,temp.tele);
strcpy(t[j+1].m_ph,temp.m_ph);
strcpy(t[j+1].rela,temp.rela);
strcpy(t[j+1].email,temp.email);
strcpy(t[j+1].qq,temp.qq);
}
if(flag==0)break; /*如果标志为0,说明没有发生过交换循环结束*/
}
printf("排序成功!!!\n"); /*显示排序成功*/
}
/*快速查找,参数为结构体数组和记录数*/
void qseek(ADDRESS t[],int n)
{
char s[20];
int l,r,m;
system("cls"); /*清屏*/
printf("\n请在查找前排序!\n"); /*提示确认在查找之前,记录是否已排序*/
printf("请输入待查找的姓名:\n"); /*提示输入*/
scanf("%s",s); /*输入待查找的姓名*/
l=0;r=n-1; /*设置左边界与右边界的初值*/
while(l<=r) /*当左边界<=右边界时*/
{
m=(l+r)/2; /*计算中间位置*/
if(strcmp(t[m].name,s)==0) /*与中间结点姓名字段做比较判是否相等*/
{
print(t[m]); /*如果相等,则调用print函数显示记录信息*/
return ; /*返回*/
}
if(strcmp(t[m].name,s)<0) /*如果中间结点小*/
l=m+1; /*修改左边界*/
else
r=m-1; /*否则,中间结点大,修改右边界*/
}
if(l>r) /*如果左边界大于右边界时*/
printf("未找到!\n"); /*显示没找到*/
getch();
}

Ⅲ c语言程序设计

#include <stdio.h>
#include <string.h>
#define N 4

struct student
{
char name[20];
int temp;
int Chinese;
int English;
int Score;
};

int Initliaze(struct student stu[],int inum); //初始化
int Input(struct student stu[],int inum); //赋值
int Output(struct student stu[],int inum); //输出
int Order(struct student stu[],int inum); //排序

void main()
{
struct student stu[N];
Initliaze(stu,N);
Input(stu,N);
Output(stu,N); //输出总值
printf("\n");
Order(stu,N);
Output(stu,N); //输出排序后的值
printf("\n");
}
int Initliaze(struct student stu[],int inum) //对数字进行初始化
{
for(int i=0;i<inum;i++)
{
strcpy(stu[i].name, " ");
stu[i].temp=0;
stu[i].Chinese=0;
stu[i].English=0;
stu[i].Score=0;
}
return 0;
}
int Input(struct student stu[],int inum)
{
int i;
for(i=0;i<inum;i++)
{
printf("请输入姓名,学号,语文成绩,英语成绩:");
scanf("%s",stu[i].name);
scanf("%d%d%d",&stu[i].temp,&stu[i].Chinese,&stu[i].English);

stu[i].Score = stu[i].Chinese + stu[i].English;
}

return 0;
}
int Output(struct student stu[],int inum)
{
printf("\n 姓名 学号 语文 英语 总分\n");
for(int i=0;i<inum;i++)
printf(" %s %d %d %d %d \n",stu[i].name,stu[i].temp,stu[i].Chinese,stu[i].English,stu[i].Score);
return 0;
}
int Order(struct student stu[],int inum)
{
struct student add;
for(int i=0;i<inum-1;i++)
{
for(int j=i+1;j<inum;j++)
{
if(stu[i].Score<stu[j].Score)
{
add=stu[i];
stu[i]=stu[j];
stu[j]=add;
}
}
}
return 0;

}

Ⅳ c语言程实现古诗词填空登鹳雀楼

白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

Ⅳ C语言程序设计

#include<stdio.h> //链接标准头文件
#define N 10 //定义常量N并赋值为10
void main() //主函数入口
{ //表示主函数开始
int i,j; //定义整形变量i和j
int grade[N],temp; //定义N维(N=10,也就是十维啦^^)整形数组和整形变量temp
printf("输入10个数\n"); //在屏幕上显式“输入10个数”并且换行
for(i=0;i<N;i++) //开始for循环,从i=0,每次加1,直到i=9,共需循环10次
{ //循环体开始
scanf("%d",&grade[i]); //依次获取用户输入的整数值并存入数组grade中
} //循环结束
for(i=0;i<N;i++) //开始外层for循环,从i=0,每次加1,直到i=9
{ //外层循环体开始
for(j=0;j<N-1-i;j++) //开始外层for循环,从j=0,每次加1直到i等于外层循环的N-j-1
{ //内层循环体开始
if(grade[j]>grade[j+1]) //条件判断
{ //如果整形数组前面的数比其后的大,执行以下语句
temp=grade[j+1]; //将比较小的数赋值给temp
grade[j+1]=grade[j]; //将比较大的数赋值给数组中后面的变量
grade[j]=temp; //将比较小的数赋值给数组中前面的变量
} //从此便完成大小变量的交换,使得小值往前放
} //结束内层循环
} //结外内层循环,完成排序
printf("最后排序为:\n");//在屏幕显式“最后排序为:”并换行
for(i=0;i<N;i++) //同开始的for循环类似
{ //开始循环输出
printf("%d",grade[i]); //只是这里要逐个输出数组中的十个数值
} //结束循环输出
printf("最小值为%d\n",&grade[0]);
printf("最大值为%d\n",&grade[9]);
printf("\n"); //输出换行到屏幕,看不到什么效果,可删掉
} //结束main()函数

Ⅵ c语言输出二十五宫格代码

用拉伊尔法制造五阶幻方(25宫格)
第一步:构造基方:用1-5填写幻方,使两对角线上分别是12345和33333,而且每横行纵行和均为15,如下
1 4 2 5 3
4 2 5 3 1
2 5 3 1 4
5 3 1 4 2
3 1 4 2 5
第二步:然后构造根方:将基方左右调转过来,每个数都减去1,再乘以5,得到如下
10 20 5 15 0
0 10 20 5 15
15 0 10 20 5
5 15 0 10 20
20 5 15 0 10
第三步:根方和基方每个对应小格中的数相加,得到最后的幻方
11 24 7 20 3
4 12 25 8 16
17 5 13 21 9
10 18 1 14 22
23 6 19 2 15
即二十五宫格。

Ⅶ 12宫格寻古诗

我不知道你出这个题目的目的是什么?十二宫格寻古诗。你到底想要干什么?我只能把十二宫格寻古诗含义告诉你。就是有一个大方格里面有12个小空格,每个小空格里有一个字。从这十个字当中寻找一首古诗出来。仅此而已。哦,至于你说的问题我还看不懂。