写在前面:
水了一周多的c语言课设该有点结局了(摆烂结束)
--在此献上周五的《C语言课程设计 完成质量测试》,礼炮冲天
小型管理系统一般会先显示主菜单。下面请你设计一个简单的主菜单。
解题思路:
水题水到极致。(唯一的”陷阱“大概就是倒数第二行是空的)
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("***************主菜单**************\n");
printf("1. 输入记录\n");
printf("2. 显示所有记录\n");
printf("3. 对所有记录进行排序\n");
printf("4. 按姓名查找记录并显示\n");
printf("5. 插入记录\n6. 删除记录\n7. 将所有记录保存到文件\n8. 从文件中读入所有记录\n9. 退出\n***********************************\n\n请选择操作(1-9):");
}
2.主菜单的简单测试
解题思路:
虽然我们的课设不是强校的游戏制作,但我们的考试是游戏啊--【找不同*科大版】
四个错误中两个输出错误,一个循环条件出错,一个指针错误。
题不难,就是恶心(口区)
贴上wa与ac的截图:
#include<stdio.h> //printf()、scanf()等函数
#include<string.h> //strlen()、strcpy()等函数
#include<stdlib.h> //atoi()函数
//定义常数
#define N 3
//定义结构体
typedef struct student
{
char no[11];
char name[15];
float score[N];
float sum;
float average;
int order;
}STUDENT;
/*简单测试数据录入功能*/
int input(STUDENT *stud,int n)
{
printf("\n您已经成功执行input()函数!\n");
return(n+1);
}
/*简单测试显示模块*/
void print(STUDENT *stud,int n)
{
printf("\n您已经成功执行print()函数!\n");
}
/*简单测试排序模块*/
void sort(STUDENT *stud,int n)
{
printf("\n您已经成功执行sort()函数!\n");
}
/*简单测试查找记录模块*/
void search(STUDENT stud[],int n)
{
printf("\n您已经成功执行search()函数!\n");
}
/*简单测试在指定位置插入记录*/
int insert(STUDENT *stud,int n)
{
printf("\n您已经成功执行insert()函数!\n");
return n+1;
}
/*简单测试删除记录模块*/
int delete1(STUDENT *stud,int n)
{
printf("\n您已经成功执行delete1()函数!\n");
return n-1;
}
/*简单测试保存数据到文件模块*/
void save(STUDENT *stud,int n)
{
printf("\n您已经成功执行save()函数!\n");
}
/*简单测试导入信息模块*/
int load(STUDENT *stud)
{
printf("\n您已经成功执行load()函数!\n");
return 1;
}
/*菜单函数,返回值为整数*/
int menu_select()
{
char s[3];
int c=0;
printf("***************主菜单**************\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("***********************************\n");
do
{
printf("请选择操作(1-9):");
scanf("%s",s);
c=atoi(s);
}while(c<1||c>9); /*选择项不在1~9之间重输*/
return(c); /*返回选择项,主程序根据该数调用相应的函数*/
}
/******主函数开始*******/
int main(void)
{
int n=0;
STUDENT student[20]; /*定义结构数组*/
switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/
{
case 1: input(student,n);break; /*新建记录*/
case 2: print(student,n);break; /*显示全部记录*/
case 3: sort(student,n);break; /*排序*/
case 4: search(student,n);break; /*查找记录*/
case 5: insert(student,n);break; /*插入记录*/
case 6: delete1(student,n);break; /*删除记录*/
case 7: save(student,n);break; /*保存文件*/
case 8: load(student);break; /*读文件*/
case 9: exit(0); /*程序结束*/
}
return 0;
}
3.结构数组的显示
解题思路:
本题难点不在补全,在于输出的格式,这次玩的不是找不同,玩的是不停wa后的心态
(微笑)
同样贴上wa与ac的截图,罚时让我怀疑人生(幸好考试不是比赛)
#include<stdio.h> //printf()、scanf()等函数
typedef struct student
{
char xueHao[11];
char xingMing[15];
double chengJi[3];
double zongFen;
double pingJunFen;
int mingCi;
}STUDENT;
void print(int n,STUDENT stud[] ) /*请将print函数的参数定义完整*/
{
int i=0; /* 统计记录条数*/
if(n==0)
{
printf("\n很遗憾,空表中没有任何记录可供显示!\n");
}
else
{
printf("********************************** STUDENT ****************************************\n");
printf(" 位置号 学号 姓名 成绩1 成绩2 成绩3 总分 平均分 名次\n");
printf("-----------------------------------------------------------------------------------\n");
while(i<n)
{
printf(" %-4d %-11s%-12s%7.2f%7.2f%7.2f %9.2f %6.2f %3d \n", i, stud[i].xueHao,stud[i].xingMing,stud[i].chengJi[0],stud[i].chengJi[1],
stud[i].chengJi[2],stud[i].zongFen,stud[i].pingJunFen,stud[i].mingCi);
i++;
}
printf("***********************************************************************************\n");
}
}
/******主函数开始*******/
int main(void)
{
STUDENT student[20]={{"2105030155","zhaoxiaozhao",{100,100,100},300,100,0},
{"2105030166","qianxiaoqian",{99,99,99},297,99,0},
{"2105030177","sunxiaosun",{98,98,98},294,98,0},
{"2105030188","lixiaoli",{98,98,98},294,98,0}};/*定义结构数组,并初始化0、1、2、3号位置的数组元素*/
int n;
scanf("%d",&n);
print(n,student ); /*请设置print()函数的实参*/
return 0;
}
4. 在结构数组插入一条新记录
解题思路:冲就是了,一个循环解决,就是要注意是i--,不是习惯的i++(微笑)
for(i=n+1; i>position; i--)
{
stud[i]=stud[i-1];
}
解题思路:好久没用指针,在语法那里卡了一小会,索性不难,冲!
for( i=0; i<n; i++)scanf("%d",&a[i]);
p=&a[0];
for( i=0; i<n; i++)
{
if(a[i]>*p)p=&a[i];
}
6.链表的显示
解题思路:while循环啦,还不如课设后面的链表题难,水水水水水水。 注意cnt增加的条件
while(p){
printf("%s %d\n",p->name,p->score);
if(p->score>=60)cnt++;
p=p->next;
}
printf("%d",cnt);
7.汉字字形横向放大
解题思路:边读边输出
#include<stdio.h>
#include<string.h>
int main(){
char a[100][100];
int i;
for( i=0; i<56; i++)scanf("%s",a[i]);
int j;
for(i=0;i<56;i++){
for(j=0;j<strlen(a[i]);j++){
if(a[i][j]=='_')printf("00");
if(a[i][j]=='X')printf("11");
}printf("\n");
}
}
解题思路: 题目字有点多,循环解决(水水水水)
#include<stdio.h>
#include<string.h>
int main()
{
int a[200][200];
int n;
scanf("%d",&n);
for(int i=0; i<n; i++)for(int j=0; j<n; j++)scanf("%1d",&a[i][j]);
for(int i=n-1; i>=0; i--)
{
for(int j=0; j<n; j++)
{
if(a[i][j]==0)printf("FF FF FF ");
else printf("00 00 FF ");
}
}
}
写在最后:
不是夸耀题目的难度,只是匹配不上那么好的课设题(水水水水);
个人状态:小弱鸡一个,写下本篇记录第一次课设。
看到这不留个赞与收藏吗(嘿嘿嘿),评论一波也是好滴,溜了溜了。