C语言作业笔记(输入数组部分排序之后在插入数据保持排序,登录界面)

编程实现以下数据处理功能:

(1)定义一个一维整型数组 int a[N]; N由宏定义实现 #define N 10

(2)提示用户需要输入的数据个数n(n<=N)

(3) 输入n个整数依次存入数组 a, 要求每次输入有提示信息,如“第1个数:”,“第2个数:”,…

(4)采用冒泡排序法对输入的n个数进行排序(由大到小),然后输出排好序的数据(输出在一行内),可参考课本107页的冒泡排序代码

(5)提示用户输入1个新的数据,然后将该数据插入到数组中,保持由大到小的顺序,并显示新的数据列表(

输出在一行内)。

(6)询问用户是否需要继续插入数据,按’Y’或’y’重复步骤(5),按’N’或’n’结束程序,按其他键也退出。

(7)当数据列表的数据个数超过N时,提示用户数据已满,无法插入,程序结束。

(8)运行程序,验证以上功能是否正常。

#include <stdio.h>
#include <conio.h>
#define N 10
void order(int n[],int m);
void _Y_(int q[],int p);
int main()
{
	int a[N];
	int sum,f,f1;
	char x;
	printf("您可以输入%d个数\n",N);
	printf("请输入您要输入的数字个数:");
	scanf("%d",&sum);
	printf("\n");
	for(f=0,f1=1;f<sum;f++,f1++)
	{
		scanf("%d",&a[f]);
		printf("第%d个数是%d\n",f1,a[f]);
	}
	order(a,sum);
	printf("请输入一个新的数据,我们将插入到原排序中:");
	scanf("%d",&a[sum]);
	printf("%d\n",a[sum]);
	order(a,sum+1);
a:  printf("是否需要插入新的数据,是请输出Y(y)否请输入N(n)");
	x=getch();
	if(x=='y' || x=='Y'){
		_Y_(a,sum+1);
	   goto a;
	}
	if(x=='n' || x=='N')
		printf("欢迎下次使用\n");
}


void order(int n[],int m)
{
	int i,j,temp;
	for(j=1;j<=m-1;j++)
		for(i=0;i<=m-j-1;i++)
			if(n[i]<n[i+1]){
				temp=n[i];
				n[i]=n[i+1];
				n[i+1]=temp;
			}
	printf("当前输入的数据从大到小排序是:  ");
	for(i=0;i<m;i++)		
		printf("%d ",n[i]);
	printf("\n");
}

void _Y_(int q[],int p)
{
	int number;
	int i,j;
	printf("\n");
	printf("请确定你要输入的数字个数:");
	scanf("%d",&number);
	printf("\n");
	while(N<number+p)
	{
		printf("您需要输入的数的个数越界了,请再次输入您要输入的数字个数:");
		scanf("%d",&number);
		printf("\n");
	}
	printf("请输入数据:");
	for(i=1,j=p;i<=number;i++,j++)
	{
		scanf("%d",&q[j]);
		printf("第%d个数是%d\n",i,q[j]);
	}
	order(q,p+number);
}

编程模拟系统登录的过程:

(1).定义两个二维字符数组分别用于存放用户名与密码,如

char user[ ][20]={“Alice”,“Bob”,“Romeo”,“Julie”}; // 用户名和密码自定

char pass[ ][20]={“1234”,“2234”,“3234”,“4234”};
(2).程序运行后提示用户输入用户名,当用户不存在时提示用户重新输入。

(3).用户名正确后提示用户输入密码,密码错误提示用户”密码错误,请重新输入:“,用户有3次机会,当密码出错达到2次以后提示用户还有最后1次机会,出错达到3次以后显示”您今天的密码出错次数已用完,明天再试”,结束程序。

(4).用户密码正确后显示欢迎信息和操作菜单,如下所示:

欢迎使用本系统***

1.记事本

2.画图板

3.计算器

4.退出


按1打开记事本(关闭后重新回到菜单界面),按2打开画图板(关闭后重新回到菜单界面),按3打开计算器(关闭后重新回到菜单界面),按4退出系统

(5)提示:打开windows的记事本,画图板,计算器调用system函数实现,如下所示:

system(“notepad”); //打开记事本

system(“mspaint”); // 打开画图板

system(“calc”); //打开计算器

使用system 函数需要包含头文件 #include <stdlib.h>

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void password(int p);
void _system_(void);
int main()
{
	char user[ ][20]={"Alice","Bob","Romeo","Julie"};
	char pass[ ][20]={"1234","2234","3234","4234"};
	char User[20];
	int a,b,c,d,e;
f:	printf("请输入您的用户名: ");
	gets(User);
	puts(User);
	printf("\n");
	a=strcmp(User,user[0]);
	b=strcmp(User,user[1]);
	c=strcmp(User,user[2]);
	d=strcmp(User,user[3]);
	if(a==0)
		e=1;
	else if(b==0)
		e=2;
	else if(b==0)
		e=3;
	else if(b==0)
		e=4;
	if(a==0 || b==0 || c==0 || d==0)
	{
		password(e);
		return 0;

	}else if(!(a==0 || b==0 || c==0 || d==0))
		printf("您输入的用户名不正确,请再次输入。\n");
	    goto f;
}
void password(int p)
{
	char pass[ ][20]={"1234","2234","3234","4234"};
	char PASS[20];
	char Pass[20];
	int a,i;
	printf("请输入您的密码: ");
	for(i=1;i<4;i++){
		gets(Pass);
		puts(Pass);
		if(p==1)
		a=strcmp(Pass,pass[0]);
		else if(p==2)
		a=strcmp(Pass,pass[1]);
		else if(p==3)
		a=strcmp(Pass,pass[2]);
		else if(p==4)
		a=strcmp(Pass,pass[3]);
		if(a==0)
		{
			_system_();	
		}
		if( a!=0 ){
			if(i==1){
			printf("密码错误,请重新输入:");
			}else if(i==2){
			printf("密码错误,您还有一次输入密码的机会,请重新输入:");
			}else {
			printf("您今天的密码出错次数已用完,明天再试\n");
			}

		}
	}	
}

void _system_(void)
{
	int a;
	printf("***********欢迎使用本系统**************\n");
	printf("1.记事本\n");
	printf("2.画图板\n");
	printf("3.计算器\n");
	printf("4.退出\n");
	printf("*****************************************\n");
a:	printf("请输入你的指令:");
    scanf("%d",&a);
	printf("%d\n",a);
	switch(a)
	{
		case 1:      { system("notepad");          goto a; }
		case 2:      { system("mspaint");          goto a; }
		case 3:      { system("calc");             goto a; }
		case 4:      { printf("程序已退出\n");     break;  }
		default:     { printf("请输入正确指令\n"); goto a; }
	}
}
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值