1. c语言中system()是个什么东西 有什么作用
system是一个函数,用于运行其它外部程序。
函数原型:int system(const char * string);
示例:以下程序在vc6.0中编译通过,通过system函数,打开记事本程序。
#include<stdlib.h>
int main()
{
system("notepad.exe");
return 0;
}
问题中的system("cls"),是执行一个CMD中的命令cls,这是清屏命令。
2. c语言中的小问题0
这个是你对子函数的参数理解不够造成的。子函数的参数是调用它的地方的参数的影子,是另外开辟内存空间的,也就是说实参和形参不在一个内存空间中,所以改变了形参,实参其实没有改变。
你这个程序可以这样,用指针返回两个参数,或者申请的时候用void fun(char *s, int &a, int &b)这个表示实参形参在一个内存空间中,子函数中用指针来改变*a *b
3. 一道c语言 题目望大虾帮助
我的课程设计和你的类似,但我用的是文本形式,没关系,你只需要修改存储类型就可以了.放心绝对可以运行!
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include<iostream.h>
#include <string.h>
#define PF printf
#define SIZE 20/*成员人数上限*/
#include <stdlib.h>
int count=0;/*用于存储已有的成员个数*/
int num=0;/*用于存储此时登陆成员的编号*/
struct family/*定义结构体*/
{ int user;/*账号*/
char mima[10];/*密码*/
char name[20];/*姓名*/
int income;/*收入*/
int payout;/*支出*/
int total;/*余额*/
}people[SIZE];
void menu()/*普通成员菜单*/
{
PF(" ******************************%s ,欢迎您登陆******************************\n",people[num].name);
PF(" 1. 创建新用户 \n");
PF(" 2. 查询本人收支情况 \n");
PF(" 3. 查询其他成员收支情况 \n");
PF(" 4. 查询收支排行 \n");
PF(" 5. 修改自己的信息 \n");
PF(" 6. 修改密码 \n");
PF(" 0. 返回登陆界面 \n");
}
void MAXmenu()/*最高特权者菜单*/
{
PF(" ******************************%s,欢迎您登陆******************************\n",people[num].name);
PF(" 1. 创建新用户 \n");
PF(" 2. 查询本人收支情况 \n");
PF(" 3. 查询其他成员收支情况 \n");
PF(" 4. 查询收支排行 \n");
PF(" 5. 修改自己的信息 \n");
PF(" 6. 修改密码 \n");
PF(" 7. 删除用户(只能删除成员) \n");
PF(" 0. 返回登陆界面 \n");
}
void openf()/*打开文件,并以结构体存在内存中*/
{ count=0;
int c;
FILE *fp;
fp=fopen("family_list5.txt","r");
PF("已存在账号 密码 姓名\n");
while( !feof(fp) )/*输出已存在账号和密码,姓名*/
{
fscanf(fp,"%d %s %s %d %d %d",&people[count].user,people[count].mima,people[count].name,&people[count].income,&people[count].payout,&people[count].total);
printf("%10d%15s%15s\n",people[count].user,people[count].mima,people[count].name);
count++;
}fclose(fp);
printf("count为:%d",count);/*用于测试count是否正确*/
}
void save()/*存储成文件*/
{
FILE *fp;
int i=0;
if((fp=fopen("family_list5.txt","w"))==NULL)
{
printf("不能打开文件\n");
return;
}
for(i=0;i<count-1;i++)
{ fprintf(fp,"%d %s %s %d %d %d\n",people[i].user,people[i].mima,people[i].name,people[i].income,people[i].payout,people[i].income-people[i].payout);}
fprintf(fp,"%d %s %s %d %d %d",people[i].user,people[i].mima,people[i].name,people[i].income,people[i].payout,people[i].income-people[i].payout);
/*由于循环最后有‘\n’不能将最后一行也置于循环中,否则文件将多一行乱码*/
fclose(fp);/*关闭文件*/
}
void newuser()/*创建新用户函数*/
{ FILE *fp;
int i=count; PF("请输入新用户信息:");
if((fp=fopen("family_list5.txt","a"))==NULL)/*以追加的形式打开文件*/
{
printf("不能打开文件\n");
return;
}
PF("请输入账号名:");
scanf("%d",&people[i].user);
PF("请输入密码:"); fflush(stdin);/*清除键盘缓冲区*/
scanf("%s",people[i].mima);
PF("请输入您的姓名:"); fflush(stdin);/*同上*/
scanf("%s",people[i].name);
PF("请输入您的月收入:"); fflush(stdin);
scanf("%d",&people[i].income);
PF("请输入您的月支出:"); fflush(stdin);
scanf("%d",&people[i].payout);
fprintf(fp,"\n%d %s %s %d %d %d",people[i].user,people[i].mima,people[i].name,people[i].income,people[i].payout,people[i].income-people[i].payout);
fclose(fp);
PF("恭喜您,创建成功!\n");
}
void user()/*输入账号函数*/
{
int i,b;
PF("请输入账号:");
scanf("%d",&b);
for(i=0;i<count;i++)
if(b==people[i].user) {num=i;}/*核心算法,顺序查找符合输入值的账号*/
}
int password()/*密码输入函数*/
{ char c;
char mima[10];PF("%s",people[num].mima);PF("请输入密码(以回车结束):");
loop: int i=0;
while((c=getch())!='\r') /*输入值只要不为回车则循环*/
{
if(c =='\b' && i==0)/*如果按BACKSPACE并且之前没有输入任何值*/
{
putchar(7);/*发出鸣叫*/
}
else if(c == '\b')/*如果按BACKSPACE*/
{ mima[--i]=c; PF("\b \b"); }//覆盖上一个‘*’
else if(i<10)//密码范围小于10则输出‘*’
{putchar('*');
mima[i]=c;
i++;
}
if(i>=10)
{PF("\n密码输入超出范围,请重新输入:");
goto loop;/*重新输入,返回此函数开头*/
}
} mima[i]='\0';/*定义密码结束标准*/
if(strcmp(mima,people[num].mima)==0) {return(1);}/*如果密码正确返回函数值1*/
else/*否则重新输入密码*/
{system("cls");/*清屏*/
PF("\n密码错误!请重新输入:");
goto loop;
return(0);
}
}
void PXTO()/*对余额排序*/
{
int n=count;/*n赋值为结构体个数*/
struct family *p;/*定义结构体指针*/
struct family t;/*定义另一个结构体,用于暂时存储数据,起到交换目的*/
openf();/*打开文件*/
system("cls");/*清屏*/
p=people;
int i=0,j,k;
while(i<n)/*当i<结构体个数时执行循环*/
{
for(j=i+1;j<n;j++)/*用选择法对余额排序*/
{
if(((p+j)->total)>((p+i)->total))
{t.user=(p+i)->user;strcpy(t.mima,(p+i)->mima);strcpy(t.name,(p+i)->name);t.income=(p+i)->income;t.payout=(p+i)->payout;t.total=(p+i)->total;
(p+i)->user=(p+j)->user;strcpy((p+i)->mima,(p+j)->mima);strcpy((p+i)->name,(p+j)->name);(p+i)->income=(p+j)->income;(p+i)->payout=(p+j)->payout;(p+i)->total=(p+j)->total;
(p+j)->user=t.user;strcpy((p+j)->mima,t.mima);strcpy((p+j)->name,t.name);(p+j)->income=t.income;(p+j)->payout=t.payout;(p+j)->total=t.total;
}
}
i++;
}
PF("******************************节余排行榜**********************************\n");
PF("名次 姓名 节余\n");
if(num==0||num==1)/*如果是最高特权者,则能看见全部信息*/
{for(k=0;k<n;k++)
PF("\n%5d%10s%15d\n",k+1,(p+k)->name,(p+k)->total);
}else/*如果不是最高特权者,只能看见成员信息*/
{
for(k=2;k<n;k++)/*最高特权者是0和1号分别是爸爸妈妈*/
PF("\n%5d%10s%15d\n",k-1,(p+k)->name,(p+k)->total);
}
}
void PXIN()/*对收入排序*/
{
int n=count;/*n赋值为结构体个数*/
struct family *p;/*定义结构体指针*/
struct family t;/*定义另一个结构体,用于暂时存储数据,起到交换目的*/
openf();/*打开文件*/
system("cls");/*清屏*/
p=people;int i=0,j,k;
while(i<n)/*当i<结构体个数时执行循环*/
{
for(j=i+1;j<n;j++)/*用选择法对收入排序*/
{
if(((p+j)->income)>((p+i)->income))
{t.user=(p+i)->user;strcpy(t.mima,(p+i)->mima);strcpy(t.name,(p+i)->name);t.income=(p+i)->income;t.payout=(p+i)->payout;t.total=(p+i)->total;
(p+i)->user=(p+j)->user;strcpy((p+i)->mima,(p+j)->mima);strcpy((p+i)->name,(p+j)->name);(p+i)->income=(p+j)->income;(p+i)->payout=(p+j)->payout;(p+i)->total=(p+j)->total;
(p+j)->user=t.user;strcpy((p+j)->mima,t.mima);strcpy((p+j)->name,t.name);(p+j)->income=t.income;(p+j)->payout=t.payout;(p+j)->total=t.total;
}
}
i++;
}
PF("******************************收入排行榜**********************************\n");
PF("名次 姓名 收入 \n");
if(num==0||num==1)/*如果是最高特权者,则能看见全部信息*/
{
for(k=0;k<n;k++)
PF("\n%5d%10s%15d\n",k+1,(p+k)->name,(p+k)->income,(p+k)->payout);
}
else
{for(k=2;k<n;k++)/*如果不是最高特权者,只能看见成员信息*/
PF("\n%5d%10s%15d\n",k-1,(p+k)->name,(p+k)->income,(p+k)->payout);
}/*最高特权者是0和1号分别是爸爸妈妈*/
}
void PXPAY()/*对支出排序*/
{
int n=count;/*一下同理*/
struct family *p;
struct family t;
openf();
system("cls");
p=people;int i=0,j,k;
while(i<n)
{
for(j=i+1;j<n;j++)
{
if(((p+j)->payout)>((p+i)->payout))
{t.user=(p+i)->user;strcpy(t.mima,(p+i)->mima);strcpy(t.name,(p+i)->name);t.income=(p+i)->income;t.payout=(p+i)->payout;t.total=(p+i)->total;
(p+i)->user=(p+j)->user;strcpy((p+i)->mima,(p+j)->mima);strcpy((p+i)->name,(p+j)->name);(p+i)->income=(p+j)->income;(p+i)->payout=(p+j)->payout;(p+i)->total=(p+j)->total;
(p+j)->user=t.user;strcpy((p+j)->mima,t.mima);strcpy((p+j)->name,t.name);(p+j)->income=t.income;(p+j)->payout=t.payout;(p+j)->total=t.total;
}
}
i++;
}
PF("******************************支出排行榜**********************************\n");
PF(" 名次 姓名 支出\n");
if(num==0||num==1)
{for(k=0;k<n;k++)
PF("\n%5d%10s%15d\n",k+1,(p+k)->name,(p+k)->payout);
}
else
{for(k=2;k<n;k++)
PF("\n%5d%10s%15d\n",k-1,(p+k)->name,(p+k)->payout);
}
}
int returnm()/*返回主菜单函数*/
{
PF("按0返回主菜单");
char c;
c=getch();/*从键盘得到一个字符*/
if(c=='0') {return(1);}/*如果是0则返回1*/
else
return(0);/*否则返回0*/
}
void phmemu()/*排序菜单*/
{
char c;
loop:PF(" 1.查询收入排行 \n");
PF(" 2.查询支出排行 \n");
PF(" 3.查询余额排行 \n");
PF(" 0.返回上级菜单 \n");
c=getch();
switch(c)/*选择功能*/
{
case '1': system("cls");PXIN();if(returnm()==1){ system("cls");goto loop;}else break;
/*清屏,调用收入排序函数*/
case '2': system("cls");PXPAY();if(returnm()==1){ system("cls");goto loop;}else break;
/*清屏,调用支出排序函数*/
case '3': system("cls");PXTO();if(returnm()==1){ system("cls");goto loop;}else break;
/*清屏,调用余额排序函数*/
case '0': break;
default: break;
}
}
void look()/*查询其他成员的情况*/
{int k;
openf();/*打开文件*/
system("cls");
struct family *p;/*定义结构体指针方便打字*/
p=people;
PF("账号 姓名 收入 支出 节余\n");
if(num==0||num==1)/*如果是最高特权者则可以看见所以信息*/
{
for(k=0;k<count;k++)
PF("\n%5d%10s%15d%15d%15d\n",k+1,(p+k)->name,(p+k)->income,(p+k)->payout,(p+k)->total);
}
else/*如果是普通成员,只能看见普通成员的信息*/
{
for(k=2;k<count;k++)
PF("\n%5d%10s%15d%15d%15d\n",k-1,(p+k)->name,(p+k)->income,(p+k)->payout,(p+k)->total);
}
}
void lookmy()/*查询自己的信息*/
{system("cls");
PF("账号 姓名 收入 支出 节余\n");
PF("%5d%10s%15d%15d%15d\n",people[num].user,people[num].name,people[num].income,people[num].payout,people[num].total);
}
void changemima()/*修改密码*/
{
char xmima[10];char c;
//一下这段是调用变*用法
PF("请输入新密码:");
loop: int i=0;
while((c=getch())!='\r')
{
if(c =='\b' && i==0)
{
putchar(7);
}
else if(c == '\b')
{ xmima[--i]=c; PF("\b \b"); }
else if(i<10)
{putchar('*');
xmima[i]=c;
i++;
}
if(i>=10)
{PF("\n密码输入超出范围,请重新输入:");
goto loop;
}
} xmima[i]='\0';
//变*用法结束
strcpy(people[num].mima,xmima);/*将新密码赋值给内存中当前用户的密码*/
save();/*此函数需要修改*/
PF("\n密码修改成功!\n");
}
void changeinfromation()/*修改个人信息*/
{
lop:PF(" 1.修改收入 \n");
PF(" 2.修改支出 \n");
PF(" 3.修改姓名 \n");
PF(" 0.返回主菜单 \n");
int in,out;
char xname[20];
char c;
c=getch();
switch(c)
{
case'1':system("cls");PF(" 1.请输入收入(按回车键结束):");scanf("%d",&in);people[num].income=in;save();system("cls");goto lop;
case'2':system("cls");PF(" 1.请输入支出(按回车键结束):");scanf("%d",&out);people[num].payout=out;save();system("cls");goto lop;
case'3':system("cls");PF(" 1.请输入姓名(按回车键结束):");scanf("%s",xname);strcpy(people[num].name,xname);save();system("cls");goto lop;
/* case'0':returnm()*/
}
}
void deletezh()/*删除用户*/
{
int zh,i,j;FILE *fp;
PF("请输入需要删除的账户名:");
scanf("%d",&zh);
for(i=0;i<count;i++)
{ if(zh==people[i].user && i<count-1 && i>1)
{
fp=fopen("family_list5.txt","w");
for(j=0;j<i;j++)
{fprintf(fp,"%d %s %s %d %d %d\n",people[j].user,people[j].mima,people[j].name,people[j].income,people[j].payout,people[j].income-people[j].payout);}
for(j=j+1;j<count-1;j++)
{fprintf(fp,"%d %s %s %d %d %d\n",people[j].user,people[j].mima,people[j].name,people[j].income,people[j].payout,people[j].income-people[j].payout);}
fprintf(fp,"%d %s %s %d %d %d",people[j].user,people[j].mima,people[j].name,people[j].income,people[j].payout,people[j].income-people[j].payout);/*将最后一行单独赋值,以免多一个\n*/
}
else if(zh==people[i].user && i==count-1)
{
fp=fopen("family_list5.txt","w");
for(j=0;j<i-1;j++)
{fprintf(fp,"%d %s %s %d %d %d\n",people[j].user,people[j].mima,people[j].name,people[j].income,people[j].payout,people[j].income-people[j].payout);}
fprintf(fp,"%d %s %s %d %d %d",people[j].user,people[j].mima,people[j].name,people[j].income,people[j].payout,people[j].income-people[j].payout);/*将最后一行单独赋值,以免多一个\n*/
}else {PF("删除对象错误!不能删除特权用户!");goto lp;}
}PF("删除成功!");
lp: fclose(fp);
}
void main()
{ char c;
openf();
lop:user();
if(password()==1&&num>1)
{system("cls");menu();
loop:c=getch();
switch(c)
{
case '0':system("cls");goto lop;
case '1':system("cls");newuser();if(returnm()==1){ system("cls");menu();goto loop;}
case '2':lookmy();if(returnm()==1){ system("cls");menu();goto loop;}else break;
case '3':system("cls");look();if(returnm()==1){ system("cls");menu();goto loop;}else break;
case '4':openf();system("cls");phmemu(); system("cls");menu();goto loop;
case '5':system("cls");changeinfromation();system("cls");menu();goto loop;
case '6':system("cls");changemima();if(returnm()==1){ system("cls");menu();goto loop;}else break;
default: break;
}
}
else
{system("cls");MAXmenu();
lp:c=getch();
switch(c)
{
case '0':system("cls");goto lop;
case '1':system("cls");newuser();if(returnm()==1){ system("cls");menu();goto lp;}
case '2':lookmy();if(returnm()==1){ system("cls");menu();goto lp;}else break;
case '3':system("cls");look();if(returnm()==1){ system("cls");menu();goto lp;}else break;
case '4':openf();system("cls");phmemu(); system("cls");menu();goto lp;
case '5':system("cls");changeinfromation();system("cls");menu();goto lp;
case '6':system("cls");changemima();if(returnm()==1){ system("cls");menu();goto lp;}else break;
case '7':system("cls");MAXmenu();deletezh();
default: break;
}
}
}
4. C语言编程问题
typedef是定义影子类型的,也就可以说给一个东西起个小名(这个明白吗?就是让一个事物又两个名字,都表示一个事物),
如这么个定义
typedef aaa int
那么aaa也就是int
用aaa定义一个变量,如
aaa x; x也就是int型的,aaa和int完全是一个东西
union是共用体的定义关键字
对应的你这里
typedef union {变量列表}MYTYPE; 就是MYTYPE来表示这个定义的共用体
这样的好处就是不用在前面直接定义一些全局变量(结构体,共用体一般都是在函数外部定义,定义的变量都是全局变量),而在函数中定义一些局部变量
sizef是取变量的占内存空间长度的函数,这个你该知道
union共用体的长度是变量列表中最常的那个变量所占的内存空间的长度
这里面long x[2];int y[4];char z[8];这三个变量占的长度都是8个字符(最长),所以sizef返回的就是这个长度。
5. c语言创建账户和密码需要注意的
如下:
1、能够实现账号不重复,若重复注册账号会提示账号已被注册,请重新注册。
2、判断名称是否合法。
3、注意设置密码位数及需求。
6. 在windows中,用户、帐号、用户组三者的关系是什么
Administrators属于该administators本地组内的用户,都具备系统管理员的权限,它们拥有对这台计算机最大的控制权限,可以执行整台计算机的管理任务。内置的系统管理员账号Administrator就是本地组的成员,而且无法将它从该组删除。如果这台计算机已加入域,则域的Domain Admins会自动地加入到该计算机的Administrators组内。也就是说,域上的系统管理员在这台计算机上也具备着系统管理员的权限。Backup OPerators 在该组内的成员,不论它们是否有权访问这台计算机中的文件夹或文件,都可以通过“开始”-“所有程序”-“附件”-“系统工具”-“备份”的途径,备份与还原这些文件夹与文件。Guests 该组是提供没有用户帐户,但是需要访问本地计算机内资源的用户使用,该组的成员无法永久地改变其桌面的工作环境。该组最常见的默认成员为用户帐号Guest。Network Configuration Operators 该组内的用户可以在客户端执行一般的网络设置任务,例如更改IP地址,但是不可以安装/删除驱动程序与服务,也不可以执行与网络服务器设置有关的任务,例如DNS服务器、DHCP服务器的设置。Power Users 该组内的用户具备比Users组更多的权利,但是比Administrators组拥有的权利更少一些,例如,可以:创建、删除、更改本地用户帐户创建、删除、管理本地计算机内的共享文件夹与共享打印机自定义系统设置,例如更改计算机时间、关闭计算机等但是不可以更改Administrators与Backup Operators、无法夺取文件的所有权、无法备份与还原文件、无法安装删除与删除设备驱动程序、无法管理安全与审核日志。Remote Desktop Users 该组的成员可以通过远程计算机登录,例如,利用终端服务器从远程计算机登录。Users 该组员只拥有一些基本的权利,例如运行应用程序,但是他们不能修改操作系统的设置、不能更改其它用户的数据、不能关闭服务器级的计算机。所有添加的本地用户帐户者自动属于该组。如果这台计算机已经加入域,则域的Domain Users会自动地被加入到该计算机的Users组中。