Ⅰ c語言程序設計題(文件、排序)
for(i=0; i<9; i++) for(j=0; j<9-i; j++) if(a[j]
Ⅱ C語言實驗 結構體與文件程序設計
//main.c文件
#include<stdio.h>
#include<stdlib.h>
#define BufLen 20
#define KeChengCount 3
typedef struct tagStuInfor
{
char xh[BufLen]; //學號
char xm[BufLen]; //姓名
char kchm[KeChengCount][BufLen]; //課程名
float pshchj[KeChengCount]; //平時成績
float kshchj[KeChengCount]; //考試成績
float zpchj[KeChengCount]; //總評成績
float zf;
}StudentInformation;
typedef struct tagBookInfor
{
char shm[BufLen]; //書名
float dj; //單價
}BookInformation;
void shurustu();
void zongfen();
void shuchumaxmin();
void sortbook();
void freeall();
//學生數,書數
int xshsh,shsh;
StudentInformation *ptstu=NULL;
BookInformation *ptbook=NULL;
int main()
{
char in[]="data.txt",out[]="T_data.txt";
int i;
float chjs[6],zf;
FILE *fin,*fout;
printf("250這個數字太不好了,能換成350嗎?\n\n");
shurustu();
zongfen();
shuchumaxmin();
printf("請輸入書數:");
scanf("%d",&shsh);
ptbook=(BookInformation*)calloc(shsh,sizeof(BookInformation));
for(i=0;i<shsh;i++)
{
printf("請輸入第%d本書的書名:",i+1);
scanf("%s",ptbook[i].shm);
printf("請輸入第%d本書的單價:",i+1);
scanf("%f",&ptbook[i].dj);
}
printf("\n");
sortbook();
printf("按書的單價升序排序後的結果:\n書名\t單價\n");
for(i=0;i<shsh;i++)
{
printf("%s\t%.2f\n",ptbook[i].shm,ptbook[i].dj);
}
fin=fopen(in,"r");
fout=fopen(out,"w");
while(!feof(fin))
{
for(i=0;i<6;i++)
{
fscanf(fin,"%f",&chjs[i]);
}
zf=0.2*(chjs[0]+chjs[1]+chjs[2])+0.8*(chjs[3]+chjs[4]+chjs[5]);
printf("%.2f\n",zf);
fprintf(fout,"%.2f\r\n",zf);
}
printf("\n");
fclose(fin);
fclose(fout);
freeall();
system("PAUSE");
return EXIT_SUCCESS;
}
void shurustu()
{
int i;
printf("請輸入學生的個數:");
scanf("%d",&xshsh);
ptstu=(StudentInformation*)calloc(xshsh,sizeof(StudentInformation));
for(i=0;i<xshsh;i++)
{
strcpy(ptstu[i].kchm[0],"C語言");
strcpy(ptstu[i].kchm[1],"高等數學");
strcpy(ptstu[i].kchm[2],"英語");
printf("請輸入第%d個學生的學號:",i+1);
scanf("%s",ptstu[i].xh);
printf("請輸入第%d個學生的姓名:",i+1);
scanf("%s",ptstu[i].xm);
printf("請輸入第%d個學生的C語言課程的平時成績和考試成績:",i+1);
scanf("%f %f",&ptstu[i].pshchj[0],&ptstu[i].kshchj[0]);
printf("請輸入第%d個學生的高等數學課程的平時成績和考試成績:",i+1);
scanf("%f %f",&ptstu[i].pshchj[1],&ptstu[i].kshchj[1]);
printf("請輸入第%d個學生的英語課程的平時成績和考試成績:",i+1);
scanf("%f %f",&ptstu[i].pshchj[2],&ptstu[i].kshchj[2]);
}
printf("\n");
}
void zongfen()
{
int i;
for(i=0;i<xshsh;i++)
{
ptstu[i].zpchj[0]=0.2*ptstu[i].pshchj[0]+0.8*ptstu[i].kshchj[0];
ptstu[i].zpchj[1]=0.2*ptstu[i].pshchj[1]+0.8*ptstu[i].kshchj[1];
ptstu[i].zpchj[2]=0.2*ptstu[i].pshchj[2]+0.8*ptstu[i].kshchj[2];
ptstu[i].zf=ptstu[i].zpchj[0]+ptstu[i].zpchj[1]+ptstu[i].zpchj[2];
printf("%s的%s,%s,%s的總評成績是:",ptstu[i].xm,ptstu[i].kchm[0],ptstu[i].kchm[1],ptstu[i].kchm[2]);
printf("%.2f,%.2f,%.2f\n",ptstu[i].zpchj[0],ptstu[i].zpchj[1],ptstu[i].zpchj[2]);
printf("%s的總分是:%.2f\n",ptstu[i].xm,ptstu[i].zf);
}
printf("\n");
}
void shuchumaxmin()
{
int i,min,max;
min=max=0;
for(i=1;i<xshsh;i++)
{
if(ptstu[i].zf<ptstu[min].zf)
{
min=i;
}
if(ptstu[i].zf>ptstu[max].zf)
{
max=i;
}
}
printf("總分最高的學生的信息:\n學號\t姓名\t");
printf("%s(平時)\t%s(平時)\t%s(平時)",ptstu[max].kchm[0],ptstu[max].kchm[1],ptstu[max].kchm[2]);
printf("\t%s(考試)\t%s(考試)\t%s(考試)\t總分\n",ptstu[max].kchm[0],ptstu[max].kchm[1],ptstu[max].kchm[2]);
printf("%s\t%s\t",ptstu[max].xh,ptstu[max].xm);
printf("%.2f\t%.2f\t%.2f\t",ptstu[max].pshchj[0],ptstu[max].pshchj[1],ptstu[max].pshchj[2]);
printf("%.2f\t%.2f\t%.2f\t%.2f\n\n",ptstu[max].kshchj[0],ptstu[max].kshchj[1],ptstu[max].kshchj[2],ptstu[max].zf);
printf("總分最低的學生的信息:\n學號\t姓名\t");
printf("%s(平時)\t%s(平時)\t%s(平時)",ptstu[min].kchm[0],ptstu[min].kchm[1],ptstu[min].kchm[2]);
printf("\t%s(考試)\t%s(考試)\t%s(考試)\t總分\n",ptstu[min].kchm[0],ptstu[min].kchm[1],ptstu[min].kchm[2]);
printf("%s\t%s\t",ptstu[min].xh,ptstu[min].xm);
printf("%.2f\t%.2f\t%.2f\t",ptstu[min].pshchj[0],ptstu[min].pshchj[1],ptstu[min].pshchj[2]);
printf("%.2f\t%.2f\t%.2f\t%.2f\n\n",ptstu[min].kshchj[0],ptstu[min].kshchj[1],ptstu[min].kshchj[2],ptstu[min].zf);
}
void sortbook()
{
int i,j,min;
BookInformation t;
for(i=0;i<shsh-1;i++)
{
min=i;
for(j=i+1;j<shsh;j++)
{
if(ptbook[j].dj<ptbook[min].dj)
{
min=j;
}
}
t=ptbook[i];
ptbook[i]=ptbook[min];
ptbook[min]=t;
}
}
void freeall()
{
if(NULL!=ptstu)
{
free(ptstu);
}
if(NULL!=ptbook)
{
free(ptbook);
}
}
//data.txt文件
50 65 70 88 97 80
66 87 95 46 88 97
77 82 65 58 91 58
78 87 91 48 66 70
Ⅲ C語言程序設計(文件程序設計)
每本關於C語言的書都有這樣的例題!如果僅為過二級 弄懂書上的就行了 但好教材很重要
Ⅳ C語言程序設計 文件處理
可以逐個字元讀入, 根據非數字來判斷何時分隔湊成一個完整的數字. 以轉行符判斷是否同一行
Ⅳ 要求用C語言設計文檔整理程序,可按語法對英文文本文件內容進行整理,並可對整理後文檔加密。
這個我不會。給文件加密,你可以在網路上下載超級加密3000 這是一款功能強大的文件和文件夾加密和保護軟體。
超級加密3000有超快和最強的文件、文件夾加密功能、數據保護功能,文件夾、文件的粉碎刪除以及文件夾偽裝等功能。
超級加密 3000採用先進的加密演算法,使你的文件和文件夾加密後,真正的達到超高的加密強度,讓你的加密數據無懈可擊。
超級加密3000還支持加密文件的臨時解密,文件加密後,雙擊加密文件,在彈出密碼輸入對話框輸入正確的密碼選擇確定,該加密文件就處於臨時解密,文件使用完畢退出以後,它自動恢復到加密狀態,無需再加密。
超級加密3000是一款不可多得的文件加密軟體,您可以到網路上搜索超級加密3000給您的文件加密試試看。
Ⅵ c語言課設 簡單文件管理軟體設計 要實現文件的查看 復制 刪除 關閉 #in
用C寫界面?直觀?大方?直觀? 寫出來你可以直接去微軟了
Ⅶ C語言程序設計 簡單的讀取文件並整理數據
首先還是先完整的學習一下文件打的所有方式。
文件的打開方式是由r,w,a,t,b,+,六個字元組成。如下:
「r」 只讀打開文件,如果文件不存在,返回一個錯誤.
「r+」 可讀寫打開文件,如果文件不存在,返回錯誤.
「w」 只寫打開文件,如果文件不存在,則創建一個新的文件,如果已經存在,將裡面的內容清空.
「w+」 可讀寫打開文件,如果文件不存在,創建新文件,如果已經存在,清空文件中的內容.
「a」 以追加寫入的方式打開文件(在文件未尾追加寫入數據) ,如果文件不存在,創建新文件.
「a+」 以可讀取並且可追加寫入的方式打開文件,如果不存在,創建新文件.
如果要指定打開文本文件,則在打開方式中加入』 t 『 字元.如果是二進制文件,則加入』 b 『 字元. 如下:
1
"rt" "rt+" "r+t" "rb" "rb+" "r+b"
當以追加方式打開文件時,文件的數據偏移指針會指向文件的最未尾,如果此時從文件讀入數據,可能會失敗,都已經文件未尾了,還有什麼數據要讀的?所以追加方式打開時,不要第一時間讀入數據.
注意: 如果想打開文件後,先讀取數據,然後再寫入,請不要用」w+」的方式,因為」w」方式會把已存在的文件的數據清空,所以會發生讀取錯誤.
基於上面介紹,我們這章要從一個文本文件中讀取數據,所以使用下面代碼打開文件:
1
2
3
4
FILE * fptr;
fptr = fopen( FILE_NAME , "rt" );
.....
fclose( fptr );
讀取文件的函數原型如下:
1
2
int fgetc( FILE* fstream);
char* fgets( char* buf , int n , FILE* fstream);
fgetc() 返回讀到的字元的ASCII碼.
在fgets()中,buf參數用來指定一個字元串指針來接收讀到的數據,參數n用來指定讀入的最大字元數.
fgets() 返回讀到的字元串指針.如果錯誤,返回NULL.
並且,我們可以用feof()函數來判斷是否已經讀到了文件的未尾.
1
int feof( FILE* fstream);
如果已經讀到文件未尾,feof()返回非0值(也就是TRUE值),如果沒有,返回0(FALSE);
學完了上面,我們現在准備一個data.txt文件,內容可以,也可以你喜歡的任何內容:
1
2
3
1234567890
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
請把data.txt文件與程序一起放在同一個文件夾,否則會有打開data.txt文件錯誤
然後編寫一個程序,代碼如下:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
本程序中涉及到的fputc() 和 fputs()函數在上一章已經作了介紹,可自行查閱.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define FILENAME "data.txt" //文件名
#define BUFSIZE 27 //緩存的大小為27位元組
int main( int argc , char* argv[])
{
FILE *fptr;
char buf[BUFSIZE];
char ch;
fptr = fopen( FILENAME , "r+t");
if ( fptr == NULL )
{
puts( "open file error");
exit(1);
}
do{
ch = fgetc( fptr);
fputc(ch , stdout);
}while( ch != 'n' );//如果讀到換行符,就退出循環.
while( ! feof( fptr) ){//如果讀到文件未尾,就退出循環.
memset ( buf , 0 , BUFSIZE);
fgets( buf , BUFSIZE -1 , fptr );
//之所以要限制讀入的數據長度為BUFSIZE-1,因為buf字元串的最後一個字元必須為'',防止被讀入的數據覆蓋.
fputs( buf , stdout);
}
fclose( fptr);
getchar();//程序暫停,按下回車鍵後繼續
return 0 ;
}
把代碼復制到編譯環境中編譯後,把執行程序放在與data.txt相同的文件夾,然後運行,就會看到效果了.
Ⅷ 用C語言設計一個文件加密與解密程序
c語言文件加密和解密方法如下:
1、首先打開VC++6.0;
4、聲明頭文件
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
首先寫個加密函數,演算法就是簡介里說的;
voidEncryptFile(FILE*sfp,FILE*dfp,charpwd)
{
charch;
if(sfp==0||dfp==0)
{
printf("ERROR!
");
return;
}
while((ch=fgetc(sfp))!=EOF)
{
if((ch>='a')&&(ch<='z'))
{
ch=(ch-'a'+1)%26+'a';
ch=ch^pwd;
}
if((ch>='A')&&(ch<='Z'))
{
ch=(ch-'A'+1)%26+'A';
ch=ch^pwd;
}
fputc(ch,dfp);
}
}
寫解密子函數:與加密的過程相反;
voidDecryptFile(FILE*sfp,FILE*dfp,charpwd)
{
charch;
while((ch=fgetc(sfp))!=EOF)
{
if((ch>='a')&&(ch<='z'))
{
ch=ch^pwd;
ch=(ch-'a'+25)%26+'a';
}
if((ch>='A')&&(ch<='Z'))
{
ch=ch^pwd;
ch=(ch-'A'+25)%26+'A';
}
fputc(ch,dfp);
}
}
輸出函數,輸出文件內容
voidOutputFile(FILE*fp)
{
charch;
while((ch=fgetc(fp))!=EOF)
putchar(ch);
}
主函數,主要調用這幾個函數
intmain()
{
/*用戶輸入的要加密的文件名*/
charsfilename[20];
/*用戶輸入加密後保存的文件名*/
chardfilename[20];
/*用來保存密碼字元*/
charpwd;
FILE*sfp,*dfp;
printf(":
");
/*得到要加密的文件名*/
gets(sfilename);
/*得到加密後你要的文件名*/
printf(":
");
gets(dfilename);
/*得到加密字元*/
printf("PleaseinputyourPassword:
");
//scanf("%c",&pwd);
pwd=getch();
/*屏幕以*來表示輸入的加密字元*/
printf("*
");
/*以只讀方式打開要加密的文件*/
if((sfp=fopen(sfilename,"r"))==0)
{
printf("Can'topenthefile:%s
",sfilename);
exit(0);
}
/*輸出要加密的文件*/
printf(":
");
OutputFile(sfp);
/*建立加密後的文件*/
if((dfp=fopen(dfilename,"w+"))==0)
{
printf("Can'topenorcreatethefile:%s
",dfilename);
//exit(0);
}
/*文件加密*/
fseek(sfp,0L,SEEK_SET);
EncryptFile(sfp,dfp,pwd);
printf("
Encryptedthefilesuccessfully!
");
/*輸出加密後的文件*/
printf(":
");
fseek(dfp,0L,SEEK_SET);
OutputFile(dfp);
fclose(sfp);
fclose(dfp);
getch();
return0;
}
Ⅸ C語言 程序設計 文件處理
C語言建立的文件是DAT文件還是TXT文件?
---這個都可以,只要你後綴名是什麼就建什麼
反復輸入大量數據,非常不方便
---可以考慮把輸入數據放到文件中,這樣就不會重復。只需要在你程序中加一行語句
freopen("文件名","r",stdin);
---對於輸出的時候若要輸出到文件中,也只要加上一句 freopen("文件名","w",stdout);其他語句不變
大部分整ACM的要重復測試數據,多次輸入就採用上面的freopen("文件名","r",stdin);
方法。你也可以把輸入的數據復制好,每次在窗口復制就省的輸入了
給你個例子:
#include "stdio.h"
int main()
{
freopen("a.txt","r",stdin);
//freopen("b.txt","w",stdout);
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
printf("%d+%d=%d\n",a,b,a+b);
}
return 0;
}
a.txt文件內容:
1 2
3 4
5 6
7 8
輸入格式和你在命令行的時候一樣
上面的注釋如果你去掉你會發現生成了b.txt文件裡面有結果
注意a.txt文件放到你程序的目錄下,否則路徑名就要對
while(scanf("%d%d",&a,&b)!=EOF) 是表示輸入讀完了沒有,使用於輸入數不知道的情況。如果你知道輸入數據的具體個數就可以用for語句輸入