當前位置:首頁 » 編程語言 » c語言實行清戶操作確定
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言實行清戶操作確定

發布時間: 2023-06-27 17:03:21

c語言問題1

一、sizeof的概念
sizeof是C語言的一種單目操作符,如C語言的其他操作符++、--等。它並不是函數。sizeof操作符以位元組形式給出了其操作數的存儲大小。操作數可以是一個表達式或括在括弧內的類型名。操作數的存儲大小由操作數的類型決定。
二、sizeof的使用方法
1、用於數據類型
sizeof使用形式:sizeof(type)
數據類型必須用括弧括住。如sizeof(int)。
2、用於變數
sizeof使用形式:sizeof(var_name)或sizeof var_name
變數名可以不用括弧括住。如sizeof (var_name),sizeof var_name等都是正確形式。帶括弧的用法更普遍,大多數程序員採用這種形式。
注意:sizeof操作符不能用於函數類型,不完全類型或位欄位。不完全類型指具有未知存儲大小的數據類型,如未知存儲大小的數組類型、未知內容的結構或聯合類型、void類型等。
如sizeof(max)若此時變數max定義為int max(),sizeof(char_v) 若此時char_v定義為char char_v [MAX]且MAX未知,sizeof(void)都不是正確形式。
三、sizeof的結果
sizeof操作符的結果類型是size_t,它在頭文件<stddef.h>中typedef為unsigned int類型。該類型保證能容納實現所建立的最大對象的位元組大小。
1、若操作數具有類型char、unsigned char或signed char,其結果等於1。
ANSI C正式規定字元類型為1位元組。
2、int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、float、double、long double類型的sizeof 在ANSI C中沒有具體規定,大小依賴於實現,一般可能分別為2、2、2、2、4、4、4、8、10。
3、當操作數是指針時,sizeof依賴於編譯器。例如Microsoft C/C++7.0中,near類指針位元組數為2,far、huge類指針位元組數為4。一般Unix的指針位元組數為4。
4、當操作數具有數組類型時,其結果是數組的總位元組數。
你是不是把 aizeof(x)寫錯了。應該是sizeof(x),

⑵ C語言函數的操作函數

所在函數庫為string.h、mem.h
mem…操作存貯數組
void *memccpy(void *destin,void *source,unsigned char ch,unsigned n)
void *memchr(void *s,char ch,unsigned n)
void *memcmp(void *s1,void *s2,unsigned n)
int memicmp(void *s1,void *s2,unsigned n)
void *memmove(void *destin,void *source,unsigned n)
void *memcpy(void *destin,void *source,unsigned n)
void *memset(void *s,char ch,unsigned n)
這些函數,mem…系列的所有成員均操作存貯數組.在所有這些函數中,數組是n位元組長.
memcpy從source復制一個n位元組的塊到destin.如果源塊和目標塊重疊,則選擇復制方向,
以例正確地復制覆蓋的位元組.
memmove與memcpy相同.
memset將s的所有位元組置於位元組ch中.s數組的長度由n給出.
memcmp比較正好是n位元組長的兩個字元串s1和s2.些函數按無符號字元比較位元組,因此,
memcmp(0xFF,x7F,1)返回值大於0.
memicmp比較s1和s2的前n個位元組,不管字元大寫或小寫.
memccpy從source復制位元組到destin.復制一結束就發生下列任一情況:
(1)字元ch首選復制到destin.
(2)n個位元組已復制到destin.
memchr對字元ch檢索s數組的前n個位元組.
返回值:memmove和memcpy返回destin
memset返回s的值
memcmp和memicmp─┬─若s1<s2返回值小於0
├─若s1=s2返回值等於0
└─若s1>s2返回值大於0
memccpy若復制了ch,則返回直接跟隨ch的在destin中的位元組的一個指針;
否則返回NULL
memchr返回在s中首先出現ch的一個指針;如果在s數組中不出現ch,就返回NULL.
void movedata(int segsrc,int offsrc,
int segdest,int offdest,
unsigned numbytes)
本函數將源地址(segsrc:offsrc)處的numbytes個位元組
復制到目標地址(segdest:offdest)
void movemem(void *source,void *destin,unsigned len)
本函數從source處復制一塊長len位元組的數據到destin.若源地址和目標地址字元串
重疊,則選擇復制方向,以便正確的復制數據.
void setmem(void *addr,int len,char value)
本函數把addr所指的塊的第一個位元組置於位元組value中.
str…字元串操作函數
char stpcpy(char *dest,const char *src)
將字元串src復制到dest
char strcat(char *dest,const char *src)
將字元串src添加到dest末尾
char strchr(const char *s,int c)
檢索並返回字元c在字元串s中第一次出現的位置
int strcmp(const char *s1,const char *s2)
比較字元串s1與s2的大小,並返回s1-s2
char strcpy(char *dest,const char *src)
將字元串src復制到dest
size_t strcspn(const char *s1,const char *s2)
掃描s1,返回在s1中有,在s2中也有的字元個數
char strp(const char *s)
將字元串s復制到最近建立的單元
int stricmp(const char *s1,const char *s2)
比較字元串s1和s2,並返回s1-s2
size_t strlen(const char *s)
返回字元串s的長度
char strlwr(char *s)
將字元串s中的大寫字母全部轉換成小寫字母,並返回轉換後的字元串
char strncat(char *dest,const char *src,size_t maxlen)
將字元串src中最多maxlen個字元復制到字元串dest中
int strncmp(const char *s1,const char *s2,size_t maxlen)
比較字元串s1與s2中的前maxlen個字元
char strncpy(char *dest,const char *src,size_t maxlen)
復制src中的前maxlen個字元到dest中
int strnicmp(const char *s1,const char *s2,size_t maxlen)
比較字元串s1與s2中的前maxlen個字元
char strnset(char *s,int ch,size_t n)
將字元串s的前n個字元置於ch中
char strpbrk(const char *s1,const char *s2)
掃描字元串s1,並返回在s1和s2中均有的字元個數
char strrchr(const char *s,int c)
掃描最後出現一個給定字元c的一個字元串s
char strrev(char *s)
將字元串s中的字元全部顛倒順序重新排列,並返回排列後的字元串
char strset(char *s,int ch)
將一個字元串s中的所有字元置於一個給定的字元ch
size_t strspn(const char *s1,const char *s2)
掃描字元串s1,並返回在s1和s2中均有的字元個數
char strstr(const char *s1,const char *s2)
掃描字元串s2,並返回第一次出現s1的位置
char strtok(char *s1,const char *s2)
檢索字元串s1,該字元串s1是由字元串s2中定義的定界符所分隔
char strupr(char *s)
將字元串s中的小寫字母全部轉換成大寫字母,並返回轉換後的字元串
存貯分配子程序,所在函數庫為dos.h、alloc.h、malloc.h、stdlib.h、process.h
int allocmem(unsigned size,unsigned *seg)利用DOS分配空閑的內存,
size為分配內存大小,seg為分配後的內存指針
int freemem(unsigned seg)釋放先前由allocmem分配的內存,seg為指定的內存指針
int setblock(int seg,int newsize)本函數用來修改所分配的內存長度,
seg為已分配內存的內存指針,newsize為新的長度
int brk(void *endds)
本函數用來改變分配給調用程序的數據段的空間數量,新的空間結束地址為endds
char *sbrk(int incr)
本函數用來增加分配給調用程序的數據段的空間數量,增加incr個位元組的空間
unsigned long coreleft() 本函數返回未用的存儲區的長度,以位元組為單位
void *calloc(unsigned nelem,unsigned elsize)分配nelem個長度為elsize的內存空間
並返回所分配內存的指針
void *malloc(unsigned size)分配size個位元組的內存空間,並返回所分配內存的指針
void free(void *ptr)釋放先前所分配的內存,所要釋放的內存的指針為ptr
void *realloc(void *ptr,unsigned newsize)改變已分配內存的大小,ptr為已分配有內
存區域的指針,newsize為新的長度,返回分配好的內存指針.
long farcoreleft() 本函數返回遠堆中未用的存儲區的長度,以位元組為單位
void far *farcalloc(unsigned long units,unsigned long unitsz)
從遠堆分配units個長度為unitsz的內存空間,並返回所分配內存的指針
void *farmalloc(unsigned long size)分配size個位元組的內存空間,
並返回分配的內存指針
void farfree(void far *block)釋放先前從遠堆分配的內存空間,
所要釋放的遠堆內存的指針為block
void far *farrealloc(void far *block,unsigned long newsize)改變已分配的遠堆內
存的大小,block為已分配有內存區域的指針,newzie為新的長度,返回分配好
的內存指針

⑶ C語言課程設計—學生成績管理系統<急!!!!!>注意要求,謝謝

#include <time.h>
#include<stdio.h>
#include<conio.h>
#include <stdlib.h>
#include<string.h>
#define MAX 80
void input();
void sort();
void display();
void insert();
void del();
void average();
void find();
void save();
void read();
void del_file();
void average();
void modify();
int now_no=0;
struct student
{
int no;
char name[20];
char sex[4];
float score1;
float score2;
float score3;
float sort;
float ave;
float sum;
};
struct student stu[MAX],*p;
main()/*主函數*/
{
int as;
start: printf("\n\t\t\t歡迎使用學生成績管理系統\n");
/*一下為功能選擇模塊*/
do
{
printf("\n\t\t\t\t1.錄入學員信息\n\t\t\t\t2.顯示學員信息\n\t\t\t\t3.成績排序信息\n\t\t\t\t4.添加學員信息\n\t\t\t\t5.刪除學員信息\n\t\t\t\t6.修改學員信息\n\t\t\t\t7.查詢學員信息\n\t\t\t\t8.從文件讀入學員信息\n\t\t\t\t9.刪除文件中學員信息\n\t\t\t\t10.保存學員信息\n\t\t\t\t11.退出\n");
printf("\t\t\t\t選擇功能選項:");
fflush(stdin);
scanf("%d",&as);
switch(as)
{
case 1:system("cls");input();break;
case 2:system("cls");display();break;
case 3:system("cls");sort();break;
case 4:system("cls");insert();break;
case 5:system("cls");del();break;
case 6:system("cls");modify();break;
case 7:system("cls");find();break;
case 8:system("cls");read();break;
case 9:system("cls");del_file();break;
case 10:system("cls");save();break;
case 11:system("exit");exit(0);
default:system("cls");goto start;
}
}while(1);
/*至此功能選擇結束*/
}
void input()/*原始數據錄入模塊*/
{
int i=0;
char ch;
do
{
printf("\t\t\t\t1.錄入學員信息\n輸入第%d個學員的信息\n",i+1);
printf("\n輸入學生編號:");
scanf("%d",&stu[i].no);
fflush(stdin);
printf("\n輸入學員姓名:");
fflush(stdin);
gets(stu[i].name);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學員成績1:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
i++;
now_no=i;
printf("是否繼續輸入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
system("cls");
}
void sort()/*排序數據函數*/
{
struct student temp;
int i,j;
average();
for(i=1;i<now_no;i++)
{
for(j=1;j<=now_no-i;j++)
{
if(stu[j-1].ave<stu[j].ave)
{
temp=stu[j];
stu[j]=stu[j-1];
stu[j-1]=temp;
}
}
}
}
void display()/*顯示數據函數*/
{
int i;
char as;
average();
do
{
printf("\t\t\t班級學員信息列表\n");
printf("\t編號\t姓名\t性別\t成績1\t成績2\t成績3\t平均值\n");
for(i=0;i<now_no&&stu[i].name[0];i++)printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void insert()/*插入數據函數*/
{
char ch;
do
{
printf("\n\t\t輸入新插入學員隊信息\n");
printf("\n輸入學生編號:");
scanf("%d",&stu[now_no].no);
fflush(stdin);
printf("\n輸入學員姓名:");
fflush(stdin);
gets(stu[now_no].name);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[now_no].sex);
printf("\n輸入學員成績1:");
fflush(stdin);
scanf("%f",&stu[now_no].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[now_no].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[now_no].score3);
printf("\n\n");
now_no=now_no+1;
sort();
printf("是否繼續輸入?(Y/N)");
fflush(stdin);
ch=getch();
system("cls");
}
while(ch!='n'&&ch!='N');
}
void del()/*刪除數據函數*/
{
int inum,i,j;
printf("輸入要刪除學員的編號:");
fflush(stdin);
scanf("%d",&inum);
for(i=0;i<now_no;i++)
{
if(stu[i].no==inum)
{
if(i==now_no)now_no-=1;
else
{
stu[i]=stu[now_no-1];
now_no-=1;
}
sort();
break;
}
}
system("cls");
}
void save()/*保存數據函數*/
{
FILE *fp;
int i;
char filepath[20];
printf("輸入要保存的文件路徑:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失敗!");
exit(0);
}
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
fprintf(fp,"\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
fclose(fp);
printf("學生信息已保存在%s中!\n",filepath);
system("pause");
system("cls");
}
void find()/*查詢函數*/
{
int i;
char str[20],as;
do
{
printf("輸入要查詢的學生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i].name,str))
{
printf("\t編號\t姓名\t性別\t成績1\t成績2\t成績3\t平均值\n");
printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);
}
printf("\t\t按任意鍵返回主菜單.");
fflush(stdin);
as=getch();
}
while(!as);
system("cls");
}
void average()/*求平均數*/
{
int i;
for(i=0;i<now_no;i++)
{
stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;
stu[i].ave=stu[i].sum/3;
}
}
void modify()/*修改數據函數*/
{
int i;
char str[20],as;
printf("輸入要修改的學生姓名:");
fflush(stdin);
gets(str);
for(i=0;i<now_no;i++)
if(!strcmp(stu[i].name,str))
{
system("cls");
printf("\n\t\t輸入新插入學員隊信息\n");
printf("\n輸入學生編號:");
fflush(stdin);
scanf("%d",&stu[i].no);
printf("\n輸入學員性別:");
fflush(stdin);
gets(stu[i].sex);
printf("\n輸入學員成績1:");
fflush(stdin);
scanf("%f",&stu[i].score1);
printf("\n輸入學員成績2:");
fflush(stdin);
scanf("%f",&stu[i].score2);
printf("\n輸入學員成績3:");
fflush(stdin);
scanf("%f",&stu[i].score3);
printf("\n\n");
sort();
break;
}
system("cls");
}

void read()
{
FILE *fp;
int i;
char filepath[20];
printf("輸入要讀入的文件路徑:");
fflush(stdin);
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
system("pause");
exit(0);
}
now_no=0;
for(i=0;i<MAX&&!feof(fp);i++)
{
fscanf(fp,"\t%d\t%s\t%s\t%f\t%f\t%f\t%f\n",&stu[i].no,stu[i].name,stu[i].sex,&stu[i].score1,&stu[i].score2,&stu[i].score3,&stu[i].ave);
now_no++;
}
fclose(fp);
printf("保存的在文件%s中的所有信息已經讀入!\n",filepath);
system("pause");
system("cls");
}

void del_file()
{
FILE *fp;
char filepath[20];
printf("輸入要刪除的文件路徑:");
fflush(stdin);
gets(filepath);
fp=fopen(filepath,"w");
fclose(fp);
printf("保存的在文件%s中的所有信息已經刪除!\n",filepath);
system("pause");
system("cls");
}

自己改改就好了 謝謝 給分哦