本文目錄一覽:
- 1、一個c語言的習題 求解
- 2、C語言題目求解 《C和指針》64頁,4.14編程練習第五題
- 3、[C語言]隨意輸入一串字元,統計出裡面母音字母的個數
- 4、C語言與C++與JAVA的區別是什麼?
- 5、c語言課程設計:圖書管理系統。運行總出錯,求大神修改,可追加懸賞
一個c語言的習題 求解
你是哪的啊?怎麼和我們的一樣啊?必須告訴我,是一個學校的就告訴你了!這個就是完整的程序!你就不用改了!
#include stdio.h
#include io.h
#include stdlib.h
#include string.h
#define MAX 200
struct student
{
char no[10]; // 學號
char name[50]; // 姓名
int age; //年齡
char sex[100]; //性別
char birthday[50];//出生年月
char address[50]; //地址
char phone[50]; //電話
char mail[50]; //E-mail
};
struct data
{
int count; // 當前學生數組中學生的個數
struct student stu[MAX]; // 學生數組
} dd;
// 顯示主菜單
void menu()
{
system(“cls”);
printf(“\n”);
printf(“\t\t\t********************************\n”);
printf(“\t\t\t* *\n”);
printf(“\t\t\t* 學生信息管理系統 *\n”);
printf(“\t\t\t* *\n”);
printf(“\t\t\t* [0] 退出 *\n”);
printf(“\t\t\t* [1] 查看所有學生信息 *\n”);
printf(“\t\t\t* [2] 輸入學生信息 *\n”);
printf(“\t\t\t* [3] 刪除學生記錄 *\n”);
printf(“\t\t\t* [4] 修改學生記錄 *\n”);
printf(“\t\t\t* [5] 查詢(學號) *\n”);
printf(“\t\t\t* [6] 查詢(姓名) *\n”);
printf(“\t\t\t********************************\n”);
}
// 等待用戶按回車後回到主菜單
void to_menu()
{
char c1,c2;
printf(“\n\n\n按回車鍵返回主菜單…”);
scanf(“%c%c”,c1,c2);
menu();
}
// 查看所有學生信息
void view_data()
{
int i;
printf(“學號\t姓名\t年齡\t性別\t出生年月\t地址\t電話\tmail”);
printf(“\n——————————————————————-\n”);
for(i=0;idd.count;i++)
printf(“%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\n”,dd.stu[i].no,dd.stu[i].name,dd.stu[i].age,dd.stu[i].sex,dd.stu[i].birthday,dd.stu[i].address,dd.stu[i].phone,dd.stu[i].mail);
printf(“\n”);
}
// 將數據從結構體數組保存到文件中
void save_data()
{
FILE *fp;
int i,k;
k=dd.count;
fp=fopen(“c:/dada.txt”,”w”);
fwrite(k,sizeof(int),1,fp);
for(i=0;ik;i++)
fwrite(dd.stu[i],sizeof(struct student),1,fp);
fclose(fp);
}
// 輸入學生記錄
void add_data()
{
struct student st;
int b;
int k;
while(1)
{
printf(“\n請輸入學生信息:”);
printf(“\n學號\t姓名\t年齡\t性別\t出生年月\t地址\t電話\tmail”);
printf(“\n—————————————————————\n”);
scanf(“%s%s%d%s%s%s%s%s”,st.no,st.name,st.age,st.sex,st.birthday,st.address,st.phone,st.mail);
k = dd.count;
strcpy(dd.stu[k].no,st.no);
strcpy(dd.stu[k].name,st.name);
dd.stu[k].age=st.age;
strcpy(dd.stu[k].sex,st.sex);
strcpy(dd.stu[k].birthday,st.birthday);
strcpy(dd.stu[k].address,st.address);
strcpy(dd.stu[k].phone,st.phone);
strcpy(dd.stu[k].mail,st.mail);
dd.count++;
printf(“\n\n繼續添加學生信息[1-yes 0-no]:”);
scanf(“%d”,b);
if(b==0) break;
}
save_data();
}
// 將數據從文件讀到結構體數組中
void read_data()
{
FILE *fp;
int i,k;
struct student st;
k=0;
if(access(“c:/dada.txt”,0)==-1) // 如果文件不存在
{
fp=fopen(“c:/dada.txt”,”w”);
fwrite(k,sizeof(int),1,fp);
fclose(fp);
}
fp=fopen(“c:/dada.txt”,”r”);
fread(k,sizeof(int),1,fp);
dd.count=k;
for(i=0;ik;i++)
{
fread(st,sizeof(struct student),1,fp);
strcpy(dd.stu[i].no,st.no);
strcpy(dd.stu[i].name,st.name);
dd.stu[i].age=st.age;
strcpy(dd.stu[i].sex,st.sex);
strcpy(dd.stu[i].birthday,st.birthday);
strcpy(dd.stu[i].address,st.address);
strcpy(dd.stu[i].phone,st.phone);
strcpy(dd.stu[i].mail,st.mail);
}
fclose(fp);
}
// 刪除學生記錄
void delete_data()
{
int i,k;
char no[10];
printf(“\n請輸入要刪除學生的學號:”);
scanf(“%s”,no);
k=-1;
for(i=0;idd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf(“\n\n沒有找到該學生(學號-%s)!”,no);
}
else
{
for(i=k;idd.count-1;i++)
{
strcpy(dd.stu[i].no,dd.stu[i+1].no);
strcpy(dd.stu[i].name,dd.stu[i+1].name);
dd.stu[i].age=dd.stu[i].age;
strcpy(dd.stu[i].sex,dd.stu[i+1].sex);
strcpy(dd.stu[i].birthday,dd.stu[i+1].birthday);
strcpy(dd.stu[i].address,dd.stu[i+1].address);
strcpy(dd.stu[i].phone,dd.stu[i+1].phone);
strcpy(dd.stu[i].mail,dd.stu[i+1].mail);
}
dd.count–;
save_data();
printf(“\n\n刪除(學號-%s)成功!”,no);
}
}
// 修改學生信息
void edit_data()
{
int i,k,age;
char no[10],name[50],sex[50],birthday[50],address[50],phone[50],mail[50];
printf(“\n請輸入要修改學生信息的學號:”);
scanf(“%s”,no);
k=-1;
for(i=0;idd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
k=i;
break;
}
}
if(k==-1)
{
printf(“\n\n沒有找到該學生(學號-%s)!”,no);
}
else
{
printf(“\n請輸入學生數據:”);
printf(“\n學號\t姓名\t年齡\t性別\t出生年月\t地址\t電話\tmail”);
printf(“\n——————————————————————–\n”);
scanf(“%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s”,no,name,age,sex,birthday,address,phone,mail);
strcpy(dd.stu[k].no,no);
strcpy(dd.stu[k].name,name);
dd.stu[k].age=age;
strcpy(dd.stu[k].sex,sex);
strcpy(dd.stu[k].birthday,birthday);
strcpy(dd.stu[k].address,address);
strcpy(dd.stu[k].phone,phone);
strcpy(dd.stu[k].mail,mail);
save_data();
printf(“\n\n修改學生信息(學號-%s)成功!”,no);
}
}
// 查詢(學號)
void query_data_no()
{
int i,k;
char no[10];
printf(“\n請輸入要查詢學生的學號:”);
scanf(“%s”,no);
k=-1;
for(i=0;idd.count;i++)
{
if(strcmp(dd.stu[i].no,no)==0)
{
if(k==-1)
{
printf(“\n\n學號\t姓名\t年齡\t性別\t出生年月\t地址\t電話\tmail”);
printf(“\n—————————————————————–\n”);
}
k=i;
printf(“%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\n”,dd.stu[i].no,dd.stu[i].name,dd.stu[i].age,dd.stu[i].sex,dd.stu[i].birthday,dd.stu[i].address,dd.stu[i].phone,dd.stu[i].mail);
}
}
if(k==-1)
{
printf(“\n\n沒有找到該學生(學號-%s)!”,no);
}
}
// 查詢(姓名)
void query_data_name()
{
int i,k;
char name[10];
printf(“\n請輸入要查詢學生的姓名:”);
scanf(“%s”,name);
k=-1;
for(i=0;idd.count;i++)
{
if(strcmp(dd.stu[i].name,name)==0)
{
if(k==-1)
{
printf(“\n\n學號\t姓名\t年齡\t性別\t出生年月\t地址\t電話\tmail”);
printf(“\n—————————————————————–\n”);
}
k=i;
printf(“%s\t%s\t%d\t%s\t%s\t%s\t%s\t%s\n”,dd.stu[i].no,dd.stu[i].name,dd.stu[i].age,dd.stu[i].sex,dd.stu[i].birthday,dd.stu[i].address,dd.stu[i].phone,dd.stu[i].mail);
}
}
if(k==-1)
{
printf(“\n\n沒有找到該學生(姓名-%s)!”,name);
}
}
// 主函數
void main()
{
int fun;
read_data();
menu();
while(1)
{
printf(“請輸入功能號[0-8]:”,fun);
scanf(“%d”,fun);
switch(fun)
{
case 0: // 退出
break;
case 1: // 查看所有學生信息
view_data();
break;
case 2: // 輸入學生記錄
add_data();
break;
case 3: // 刪除學生記錄
delete_data();
break;
case 4: // 編輯學生記錄
edit_data();
break;
case 5: // 查詢(學號)
query_data_no();
break;
case 6: // 查詢(姓名)
query_data_name();
break;
break;
}
if(fun==0) break;
to_menu();
}
}
2011年
C語言題目求解 《C和指針》64頁,4.14編程練習第五題
用變數指針存下前一行的輸入記錄,比對下一行就可以了額。有什麼大的問題嗎?
[C語言]隨意輸入一串字元,統計出裡面母音字母的個數
#include “stdio.h”
void fun (char *str,int num[], int n) {
int i=0;
// 初始化num
for (i=0; in; i++)
num[i]=0;
// *str == ‘\0’終結
while(str) {
switch (*str) {
case ‘a’: case ‘A’:
case ‘e’: case ‘E’:
case ‘i’: case ‘I’:
case ‘o’: case ‘O’:
case ‘u’: case ‘U’: num[0]++; break;
default: num[1]++; break;
}
str ++;
}
return;
}
main()
{
int num[2],i;
char str[256];
gets(str);
fun(str, num, 2);
printf(“母音數是:%d 輔音數是:%d\n”,num[0],num[1]);
}
本程序適於擴展,並且高效。
C語言與C++與JAVA的區別是什麼?
C語言是經典的面向過程的編程語言,編程入門一般都學C語言以了解編程以及鍛煉邏輯思維能力,在一些跟硬體比較緊密的編程中也經常用到。\x0d\x0a\x0d\x0aC++是在C語言的基礎上加入了面向對象的概念,成為混合型面向對象語言,功能強大,但難度也大。\x0d\x0a\x0d\x0aJava是在C++的基礎上進行改進的,摒棄了一些C++的不足之處,語法跟C++很像,它是運行在Java虛擬機上,所以可以跨平台,一處編譯,到處執行。\x0d\x0a\x0d\x0a編程都是易學難精,哪個都好學,哪個又都不好學。都有很好的發展前景,就看是什麼方向了。底層的C、桌面應用程序、遊戲等等C++、嵌入式,網頁,Java。
c語言課程設計:圖書管理系統。運行總出錯,求大神修改,可追加懸賞
#includestdio.h
#includestring.h
#includestdlib.h
struct book{
char ISBN[10];
char book[30];
char author[20];
char edition[10];
char press[50];
char year[10];
};
void add_book();
void delete_book();
void modify_book();
void scan_book();
void Me();
int main()
{
int c3;
while(1)
{
system(“color 2C”);
printf(“\t\t\t=========圖書管理系統======\n”);
printf(“\t\t\t [1] 添加圖書 \n”);
printf(“\t\t\t [2] 刪減圖書 \n”);
printf(“\t\t\t [3] 修改圖書信息 \n”);
printf(“\t\t\t [4] 瀏覽圖書信息 \n”);
printf(“\t\t\t [5] 作者信息 \n”);
printf(“\t\t\t [6] 退出圖書管理系統 \n”);
printf(“\t\t\t=========================\n”);
printf(“\n”);
printf(“請選擇你的操作 :”);
scanf(“%d”,c3);
getchar();
switch(c3)
{
case 1:add_book(); break;
case 2:delete_book(); break;
case 3:modify_book(); break;
case 4:scan_book(); break;
case 5:Me(); break;
case 6:system(“cls”);
//return 0;這是返回就跳出程序了,會終止程序運行
}
}
return 0;//其實這句被執行,這個程序就終結了,釋放所有被使用的資源。
}
//添加
void add_book()
{
FILE *fp;
struct book n;
struct book nn;
char x;
int l,r;
fp=fopen(“圖書管理系統.txt”,”ab+”);
do
{
system(“cls”);
do//I標誌用得不好
{
// l=0;此處的移進下一循環內
printf(“\n”);
printf(“編號 書名 作者 版本號 出版社 出版時間\n”);
fflush(stdin);
scanf(“%s %s %s %s %s %s”,n.ISBN,n.book,n.author,n.edition,n.press,n.year);
system(“cls”);
rewind(fp);
while(!feof(fp))
{
l=0;// 移進此處,每次判斷都是設定默認值,否則被修改後不是默認值
fread(nn,sizeof(nn),1,fp);
r=strcmp(n.book,nn.book);
if(r==0)
{
l=1;
printf(” 該圖書已存在,請輸入新的圖書信息: \n\n”);
break;
}
}
}while(l);
fwrite(n,sizeof(n),1,fp);
printf(“\n”);
printf(“是否繼續輸入新的圖書信息[y/n] \n\n”);
do
{
x=getchar();
}while(x!=’n’x!=’y’);
}while(x==’y’);
fclose(fp);
system(“cls”);
}
//刪除圖書
void delete_book()
{
FILE *fp,*fp1;
char x,z;
struct book n;
struct book nn;
int l,r;
fp=fopen(“圖書管理系統.txt”,”ab+”);
while(1)
{
l=0;
system(“cls”);
printf(“\n”);
printf(“請輸入需要刪除的圖書名: \n\n”);
fflush(stdin);
scanf(“%s”,n.book);
rewind(fp);
while(1)
{
fread(nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.book,nn.book);
if(r==0)//本來可以 得到結果後可以直接進行刪除動作,沒有則檢查下一個,你現在
//不用這種結構,寫得太多了,不跟你修改了
{
l=1;
break;
}
}
if(l==0)
{
printf(“\n”);
printf(“對不起,未找到該圖書 \n”);
}
else
{
printf(“\n”);
printf(“編號 書名 作者 版本號 出版社 出版時間\n”);
printf(“\n”);
//下面應該是列印,n的值應該從搜索到值讀出來列印,怎麼還手工輸入圖書信息,手
//工輸入能保證每一次輸入都與原信息一樣嗎?
scanf(“%s %s %s %s %s %s”,n.ISBN,n.book,n.author,n.edition,n.press,n.year);
printf(“\n”);
printf(“確認刪除圖書信息? [是(y)/否(n)]\n\n”);
do
{
z=getchar();
}while(z!=’n’z!=’y’);
if(z==’n’)
break;
else
{
fp1=fopen(“圖書管理系統.txt”,”wb”);
rewind(fp);
while(1)
{
fread(nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.book,nn.book);
if(r!=0)
fwrite(nn,sizeof(nn),1,fp1);
}
fclose(fp);
fclose(fp1);
fp=fopen(“圖書管理系統.txt”,”wb”);
fp1=fopen(“圖書管理系統new.txt”,”rb”);
while(1)
{
fread(nn,sizeof(nn),1,fp1);
if(feof(fp1))
break;
fwrite(nn,sizeof(nn),1,fp);
}
fclose(fp);
fclose(fp1);
}
}
printf(“\n”);
printf(“是否繼續刪除圖書信息? [是(y)/否(n)] \n”);
do
{
x=getchar();
}while(x!=’n’x!=’y’);
if(x==’n’)
break;
}
fclose(fp);
system(“cls”);
}
//修改圖書信息
void modify_book()
{
FILE *fp;
struct book n;
struct book nn;
int l,r;
char x;
fp=fopen(“圖書管理系統.txt”,”rb+”);
while(1)
{
l=0;
printf(“\n”);
system(“cls”);
printf(“請輸入需要修改的圖書名: \n\n”);
fflush(stdin);
scanf(“%s”,n.book);
system(“cls”);
rewind(fp);
while(1)
{
fread(nn,sizeof(nn),1,fp);
if(feof(fp))
break;
r=strcmp(n.book,nn.book);
if(r==0)
{
l=1;
break;
}
}
if(l==0)
{
printf(“\n”);
printf(“對不起,未找到該圖書信息 \n\n”);
}
else
{
printf(“\n”);
printf(“編號 書名 作者 版本號 出版社 出版時間\n”);
printf(“\n”);
//下面應該是列印,n的值應該從搜索到值讀出來列印,怎麼還手工輸入圖書信息,
//手工輸入能保證每一次輸入都與原信息一樣嗎?
scanf(“%s %s %s %s %s %s”,n.ISBN,n.book,n.author,n.edition,n.press,n.year);
printf(“請依次修改圖書信息\n\n\n”);
fflush(stdin);
scanf(“%s %s %s %s %s %s”,n.ISBN,n.book,n.author,n.edition,n.press,n.year);
fseek(fp,sizeof(nn),1);
fwrite(n,sizeof(nn),1,fp);
}
printf(“\n”);
printf(” 是否繼續修改用戶信息[y/n]? \n\n”);
do
{
x=getchar();
}while(x!=’n’x!=’y’);
if(x==’n’)
break;
}
fclose(fp);
system(“cls”);
}
//瀏覽
void scan_book()
{
FILE*fp;
char x;
struct book n;
fp=fopen(“圖書管理系統.txt”,”rb”);
rewind(fp);
system(“cls”);
while(1)
{
fread(n,sizeof(n),1,fp);
if(feof(fp))
break;
else
{
printf(“編號 書名 作者 版本號 出版社 出版時間\n”);
printf(“\n”);
//下面應該是列印,n的值應該從搜索到值讀出來列印,閱覽信息怎會輸入信息
scanf(“%s %s %s %s %s %s”,n.ISBN,n.book,n.author,n.edition,n.press,n.year);
printf(“\n”);
}
}
printf(“\n”);
printf(“回到主菜單請按回車”);
do
{
x=getchar();
}while(x!=’\r’);
if(x==’\r’)
{
fclose(fp);
//main();子函數調用主函數,變成遞歸,不知程序怎麼運行了;
system(“cls”);
return;//返回主程序就可以了,主程序一直主菜單里運行
}
}
void Me(){
printf(“作者姓名:0\n”);
printf(“作者學號:0\n”);
}
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/259411.html