A. c語言結構體綜合作業
void menu() /*目錄*/
{ printf("\n ~~~~~~~~~~~~~ *_* 歡迎使用@.-~~~~~~~~~~~~~~~~\n");
printf(" *********************************************\n");
printf("\n");
printf(" 1、錄入信息 2、瀏覽信息 3、查詢信息\n\n");
printf(" 4、將成績排序 5、刪除信息 6、修改信息\n\n");
printf(" 7、添加信息 8、數據統計\n");
printf("\n");
printf(" *********************************************\n\n");
}
這是我的目錄
B. 急求C語言作業答案
呵呵,你懸賞分為0啊,要人自己做一個給你是不可能的.........
我在網上找了一個跟你一樣的,你自己修改一下下吧
#include<stdio.h> /*引用庫函數*/
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
typedef struct /*定義結構體數組*/
{
char num[10]; /*學號*/
char name[20]; /*姓名*/
int score; /*成績*/
}Student;
Student stu[80]; /*結構體數組變數*/
int menu_select() /*菜單函數*/
{
char c;
do{
system("cls"); /*運行前清屏*/
printf("\t\t****Students' Grade Management System****\n"); /*菜單選擇*/
printf("\t\t | 1. Input Records |\n");
printf("\t\t | 2. Display All Records |\n");
printf("\t\t | 3. Sort |\n");
printf("\t\t | 4. Insert a Record |\n");
printf("\t\t | 5. Delete a Record |\n");
printf("\t\t | 6. Query |\n");
printf("\t\t | 7. Statistic |\n");
printf("\t\t | 8. Add Records from a Text File|\n");
printf("\t\t | 9. Write to a Text file |\n");
printf("\t\t | 0. Quit |\n");
printf("\t\t*****************************************\n");
printf("\t\t\tGive your Choice(0-9):");
c=getchar(); /*讀入選擇*/
}while(c<'0'||c>'9');
return(c-'0'); /*返回選擇*/
}
int Input(Student stud[],int n) /*輸入若干條記錄*/
{int i=0;
char sign,x[10]; /*x[10]為清除多餘的數據所用*/
while(sign!='n'&&sign!='N') /*判斷*/
{ printf("\t\t\tstudent's num:"); /*交互輸入*/
scanf("\t\t\t%s",stud[n+i].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n+i].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n+i].score);
gets(x); /*清除多餘的輸入*/
printf("\t\t\tany more records?(Y/N)");
scanf("\t\t\t%c",&sign); /*輸入判斷*/
i++;
}
return(n+i);
}
void Display(Student stud[],int n) /*顯示所有記錄*/
{
int i;
printf("\t\t\t-----------------------------------\n"); /*格式頭*/
printf("\t\t\tnumber name score\n");
printf("\t\t\t-----------------------------------\n");
for(i=1;i<n+1;i++) /*循環輸入*/
{
printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score);
if(i>1&&i%10==0) /*每十個暫停*/
{printf("\t\t\t-----------------------------------\n"); /*格式*/
printf("\t\t\t");
system("pause");
printf("\t\t\t-----------------------------------\n");
}
}
printf("\t\t\t");
system("pause");
}
void Sort_by_num(Student stud[],int n) /*按學號排序*/
{ int i,j,*p,*q,s;
char t[10];
for(i=0;i<n-1;i++) /*冒泡法排序*/
for(j=0;j<n-1-i;j++)
if(strcmp(stud[j].num,stud[j+1].num)>0)
{strcpy(t,stud[j+1].num);
strcpy(stud[j+1].num,stud[j].num);
strcpy(stud[j].num,t);
strcpy(t,stud[j+1].name);
strcpy(stud[j+1].name,stud[j].name);
strcpy(stud[j].name,t);
p=&stud[j+1].score;
q=&stud[j].score;
s=*p;
*p=*q;
*q=s;
}
}
int Insert_a_record(Student stud[],int n) /*插入一條記錄*/
{char x[10]; /*清除多餘輸入所用*/
printf("\t\t\tstudent's num:"); /*互動式輸入*/
scanf("\t\t\t%s",stud[n].num);
printf("\t\t\tstudent's name:");
scanf("\t\t\t%s",stud[n].name);
printf("\t\t\tstudent's score:");
scanf("\t\t\t%d",&stud[n].score);
gets(x);
n++;
Sort_by_num(stud,n); /*調用排序函數*/
printf("\t\t\tInsert Successed!\n"); /*返回成功信息*/
return(n);
}
int Delete_a_record(Student stud[],int n) /*按姓名查找,刪除一條記錄*/
{ char s[20];
int i=0,j;
printf("\t\t\ttell me his(her) name:"); /*互動式問尋*/
scanf("%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*返回失敗信息*/
return(n);
}
for(j=i;j<n-1;j++) /*刪除操作*/
{
strcpy(stud[j].num,stud[j+1].num);
strcpy(stud[j].name,stud[j+1].name);
stud[j].score=stud[j+1].score;
}
printf("\t\t\tDelete Successed!\n"); /*返回成功信息*/
return(n-1);
}
void Query_a_record(Student stud[],int n) /*查找並顯示一個記錄*/
{ char s[20];
int i=0;
printf("\t\t\tinput his(her) name:"); /*互動式輸入*/
scanf("\t\t\t%s",s);
while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判斷*/
if(i==n)
{ printf("\t\t\tnot find!\n"); /*輸入失敗信息*/
return;
}
printf("\t\t\this(her) number:%s\n",stud[i].num); /*輸出該學生信息*/
printf("\t\t\this(her) score:%d\n",stud[i].score);
}
void Statistic(Student stud[],int n) /*新增功能,輸出統計信息*/
{ int i,j=0,k=0,sum=0;
float aver; /*成績平均值*/
for(i=0;i<n;i++) /*循環輸入判斷*/
{
sum+=stud[i].score;
if(stud[j].score>stud[i].score) j=i;
if(stud[k].score<stud[i].score) k=i;
}
aver=1.0*sum/n;
printf("\t\t\tthere are %d records.\n",n); /*總共記錄數*/
printf("\t\t\tthe hignest score:\n"); /*最高分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score);
printf("\t\t\tthe lowest score:\n"); /*最低分*/
printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score);
printf("\t\t\tthe average score is %5.2f\n",aver); /*平均分*/
}
int AddfromText(Student stud[],int n) /*從文件中讀入數據*/
{ int i=0,num;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename); /*輸入文件名*/
if((fp=fopen(filename,"rb"))==NULL) /*打開文件*/
{ printf("\t\t\tcann't open the file\n"); /*打開失敗信息*/
printf("\t\t\t");
system("pause");
return(n);
}
fscanf(fp,"%d",&num); /*讀入總記錄量*/
while(i<num) /*循環讀入數據*/
{
fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score);
i++;
}
n+=num;
fclose(fp); /*關閉文件*/
printf("\t\t\tSuccessed!\n");
printf("\t\t\t");
system("pause");
return(n);
}
void WritetoText(Student stud[],int n) /*將所有記錄寫入文件*/
{
int i=0;
FILE *fp; /*定義文件指針*/
char filename[20]; /*定義文件名*/
printf("\t\t\tWrite Records to a Text File\n"); /*輸入文件名*/
printf("\t\t\tInput the filename:");
scanf("\t\t\t%s",filename);
if((fp=fopen(filename,"w"))==NULL) /*打開文件*/
{
printf("\t\t\tcann't open the file\n");
system("pause");
return;
}
fprintf(fp,"%d\n",n); /*循環寫入數據*/
while(i<n)
{
fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score);
i++;
}
fclose(fp); /*關閉文件*/
printf("Successed!\n"); /*返回成功信息*/
}
void main() /*主函數*/
{
int n=0;
for(;;)
{
switch(menu_select()) /*選擇判斷*/
{
case 1:
printf("\t\t\tInput Records\n"); /*輸入若干條記錄*/
n=Input(stu,n);
break;
case 2:
printf("\t\t\tDisplay All Records\n"); /*顯示所有記錄*/
Display(stu,n);
break;
case 3:
printf("\t\t\tSort\n");
Sort_by_num(stu,n); /*按學號排序*/
printf("\t\t\tSort Suceessed!\n");
printf("\t\t\t");
system("pause");
break;
case 4:
printf("\t\t\tInsert a Record\n");
n=Insert_a_record(stu,n); /*插入一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 5:
printf("\t\t\tDelete a Record\n");
n=Delete_a_record(stu,n); /*按姓名查找,刪除一條記錄*/
printf("\t\t\t");
system("pause");
break;
case 6:
printf("\t\t\tQuery\n");
Query_a_record(stu,n); /*查找並顯示一個記錄*/
printf("\t\t\t");
system("pause");
break;
case 7:
printf("\t\t\tStatistic\n");
Statistic(stu,n); /*新增功能,輸出統計信息*/
printf("\t\t\t");
system("pause");
break;
case 8:
printf("\t\t\tAdd Records from a Text File\n");
n=AddfromText(stu,n); /*新增功能,輸出統計信息*/
break;
case 9:
printf("\t\t\tWrite to a Text file\n");
WritetoText(stu,n); /*循環寫入數據*/
printf("\t\t\t");
system("pause");
break;
case 0:
printf("\t\t\tHave a Good Luck,Bye-bye!\n"); /*結束程序*/
printf("\t\t\t");
system("pause");
exit(0);
}
}
}
C. c語言結構體基礎實驗題,具體看問題補充
#include "stdio.h" #define N 3 struct student {char num[10]; char name[20]; float score[3]; float sum; float aver; }stu[N]; int choose; void input(); void find(); void count(); void sort(); void input() { int i; float temp; for(i=0;i<N;i++) {printf("輸入第%d個學生信息:\n",i+1); printf("number: "); scanf("%s",stu[i].num); printf("name: "); scanf("%s",stu[i].name); printf("score1: "); scanf("%f",&temp); stu[i].score[0]=temp; printf("score2: "); scanf("%f",&temp); stu[i].score[1]=temp; printf("score3: "); scanf("%f",&temp); getchar(); stu[i].score[2]=temp; } } void count() { float sum,aver; int i,j; for(i=0;i<N;i++) {sum=0; for(j=0;j<3;j++) sum+=stu[i].score[j]; aver=sum/3.0; stu[i].sum=sum; stu[i].aver=aver; } printf(" 學生的總成績及平均分 \n"); printf("學號 姓名 總成績 平均分 \n"); for(i=0;i<N;i++) printf("%-8s%-10s%-9.2f%-9.2f\n",stu[i].num,stu[i].name,stu[i].sum,stu[i].aver); } void sort() {int i,j,k; float sum,aver; struct student temp; for(i=0;i<N;i++) {sum=0; for(j=0;j<3;j++) sum+=stu[i].score[j]; aver=sum/3.0; stu[i].sum=sum; stu[i].aver=aver; k=i; for(j=i+1;j<N;j++) if(stu[k].sum<stu[j].sum)k=j; if(k!=i) {temp=stu[i]; stu[i]=stu[k]; stu[k]=temp;} } printf(" 學生成績排名 \n"); printf(" 按名次 \n"); for(i=0;i<3;i++) printf("學號%-8s名字%-10s%-8.2f%-8.2f%-8.2f總分%-8.2f平均分%-8.2f\n",stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].sum,stu[i].aver); } void find() {int i,j,sum,flag=0; printf(" \n"); printf("有兩科成績不及格的同學是:\n"); printf(" \n"); for(i=0;i<N;i++) { sum=0; for(j=0;j<3;j++) if(stu[i].score[j]<60)sum++; if(sum>=2) {flag=1; printf("學號:%-8s名字:%-10s\n",stu[i].num,stu[i].name); } } if(flag==0) printf(" 沒有兩科都不及格的同學!!\n"); } void main() { printf(" 學生成績管理系統 \n"); printf("1....成績錄入\n"); printf("2....成績查詢\n"); printf("3....成績統計(平均成績)\n"); printf("4....成績排名\n"); printf("5....任意鍵退出\n"); printf("\n"); printf("\n"); printf("請輸入您要進行的操作:\n"); scanf("%d",&choose); while(choose==1||choose==2||choose==3||choose==4) {switch(choose) { case 1:input(); break; case 2:find(); break; case 3:count(); break; case 4:sort(); break; } printf(" \n"); printf("\n"); printf("\n"); printf("請輸入您要進行的操作:\n"); scanf("%d",&choose); } }
D. C語言上機實驗結構體與共用體部分習題
/*假設兩個學生,一男一女*/
#include "stdio.h"
int main()
{
struct student
{
int num;
char name[15];
char sex;
}stu[2];
union {
float scoreboy;
float scoregirl;
}a;
int i;
printf("請輸入學號、姓名、性別、成績\n");
for(i=0;i<2;i++)
{
scanf("%d",&stu[i].num);
scanf("%s",&stu[i].name[15]);
scanf("%s",&stu[i].sex);
if(stu[i].sex=='男')
{
scanf("%f",&a.scoreboy);
}
else
scanf("%f",&a.scoregirl);
}
for(i=0,i<2;i++)
{
if(stu[i].sex=='男')
printf("%6d%10s%5s%.lf",stu[i].num,stu[].name[15],stu.sex,a.scoreboy);
else
printf("%6d%10s%5s%.lf",stu[i].num,stu[].name[15],stu.sex,a.scoregirl);
printf("\n");
}
return 0;
}
匆忙寫的,沒有去驗證,可能會有點小錯誤,你可以自己修改下
E. C語言程序設計:對一個結構體變數所有成員進行初始化和輸出 求答案
輸出格式有問題
例如輸出姓名
為s1.name
學號為s1. No
F. C語言 結構體 題目解答
p=&s[0]; //執行到這里時: s[0].a=1,s[1].a=3,s[2].a=5;
p++; //p = & s[1]
printf("%d,%d\n",(++p)->a,(p++)->a);
// printf 函數從最右邊開始執行
// 上面這條語句相當於 下面三條語句:
// y=(p++)->a , 即 y =p->a = s[1].a=3 ,p=p+1=&s[2]
// x=(++p)->a , 即 p=p+1=&s[3]=7, x= p->a =s[3].a
// printf("%d %d" ,x,y);
最後printf("%d,%d\n",(++p)->a,(p++)->a);輸出 7,3 (不是5,3 ,我試過了)
G. C語言結構體 題目 答案為什麼是這個
func()的參數是 傳的變數的值,用 b 這個變數來接受
由於傳值只是單方向的傳遞,不影響主調函數變數的值,故列印原來的值
如果是
func(struct n *b)
{
b->x = 20;
b->c = 'y';
}
而且調用時是func(&a);
則列印結果就會是 20 y
因為傳的是主調函數變數的地址,func()修改了這個地址中的值,而上面的話則不能修改
H. C語言結構體題目求完整答案
emm,代碼發不出來,發個圖片吧。
完整代碼
I. C語言結構體一道題習題,求詳解
結構體數組賦值後為:
x[0].num = 1;x[0].name="USA";
x[1].num = 2;x[1].name="USA";
x[2].num = 3;x[2].name="France";
.....
p是指向結構體的指針,p = x + 2 就相當於:p = x[0 + 2] = x[2];這時,p指向x[2]所在內存,p->num中->是指針訪問它的變數的運算符,p->num就是x[2].num,就是3了,(*p)就是相當於把p指向的內存取出裡面的數據,那麼就變成了非指針變數,然後用「.」運算符訪問它的變數name數組,x[2].name為"France",第一個F下標是0,那麼下標為2的字母是a,答案就出來了。。。。。。。
J. c語言結構體 練習題
答案:C,而stutype是定義為struct stu類型的一個變數的名稱。