HNUST-C语言课程设计 完成质量测试记录·

写在前面:

水了一周多的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的截图:

HNUST-C语言课程设计 完成质量测试记录·

#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的截图,罚时让我怀疑人生(幸好考试不是比赛)

HNUST-C语言课程设计 完成质量测试记录·

#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 ");
        }
 
 
    }
 
 
}
 

写在最后:

不是夸耀题目的难度,只是匹配不上那么好的课设题(水水水水);

个人状态:小弱鸡一个,写下本篇记录第一次课设。

看到这不留个赞与收藏吗(嘿嘿嘿),评论一波也是好滴,溜了溜了。 

上一篇:漫水填充算法 - cvFloodFill() 实现


下一篇:Educational Codeforces Round 65 (Rated for Div. 2)