编程实现以下数据处理功能:
(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; }
}
}