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組中。