写在前面:
水了一周多的c语言课设该有点结局了(摆烂结束)
--在此献上周五的《C语言课程设计 完成质量测试》,礼炮冲天
1.主菜单的展示
小型管理系统一般会先显示主菜单。下面请你设计一个简单的主菜单。
解题思路:
水题水到极致。(唯一的”陷阱“大概就是倒数第二行是空的)
#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]; }
5.利用指针变量找最大值
解题思路:好久没用指针,在语法那里卡了一小会,索性不难,冲!
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"); } }
8. 24位色真彩色位图的实际像素数据
解题思路: 题目字有点多,循环解决(水水水水)
#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 "); } } }
写在最后:
不是夸耀题目的难度,只是匹配不上那么好的课设题(水水水水);
个人状态:小弱鸡一个,写下本篇记录第一次课设。
看到这不留个赞与收藏吗(嘿嘿嘿),评论一波也是好滴,溜了溜了。