日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

step2 . day7 C语言阶段小的项目总结

發布時間:2024/4/17 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 step2 . day7 C语言阶段小的项目总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.終于再一次實現了上大學時候的課堂大作業,C語言算是進入可以應用的階段了

2.寫這段代碼使用了模塊編程的思想,也嘗試的用了結構體指針、共用體指針和枚舉類型學的傳參,解決了全局變量聲明及初始化和傳參的問題,雖然成功了,但是感覺代碼上還是有些資源浪費,

下一階段除了總結Linux的基本命令應用,就要開始加強數據結構的知識梳理,貼上代碼,做個階段記錄

1.定義頭文件,用來實現調用函數聲明及變量聲明

#ifndef __HEAD_H__
#define __HEAD_H__
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 50
struct student{
int id;
char name[32];
int age;
char sex[10];
float height;
};
union ustudent{
int id;
char name[32];
int age;
char sex[10];
float height;
};
enum select{
id,
name,
age,
sex,
height
};
void print(void);//打印選擇List
void printhead();
void print1(struct student *,int);//打印1位同學信息
int myindex(struct student *);//尋找插入位置
void add(struct student *);//插入學生信息
void printAll(struct student *);//打印所有同學信息
void printName(struct student *);//打印所有同學名字
void selectbyname(struct student *);
void printselect(struct student *,union ustudent,enum select);
void selectbyage(struct student *);
void selectbysex(struct student *);
void selectbyheight(struct student *); //4個選擇函數
void del(struct student *);//刪除

#endif

2.頭文件實現的.c文件(沒寫注釋,這不是個好習慣)

#include"head.h"

union ustudent st;
enum select s;
void print(void){
printf("\n******************************************************8**\n");
printf("please select a menu:\n");
printf("\t1.Add a student.\n");
printf("\t2.List all student name.\n");
printf("\t3.List all informationes of students.\n");
printf("\t4.Select a student by name.\n");
printf("\t5.Select students by age.\n");
printf("\t6.Select students by sex.\n");
printf("\t7.Select students by height.\n");
printf("\t8.Delete a student.\n");
printf("\t9.Exit.\n");
printf("please select a menu:");
}

int myindex(struct student *stu){
int i=0;
for(i=0;i<N;i++){
if(strlen(stu[i].name) ==0)
break;
}

return i;
}

void add(struct student *stu){

int n = myindex(stu);

if(n == (N-1))
{
printf("內存已滿,添加失敗!\n");
return;
}

else{

printf("please input ID:");
scanf("%d",&(stu[n].id));
printf("please input Name:");
scanf("%s",stu[n].name);
printf("please input Age:");
scanf("%d",&(stu[n].age));
printf("please input sex(1.male,2.Female):");
scanf("%s",stu[n].sex);
printf("please input height:");
scanf("%f",&(stu[n].height));

printf("add successful!\n");
}

printhead();
print1(stu,n);
}
void printhead(){

printf("\tID\tName\tAge\tSex\tHeight\n");
}
void print1(struct student *stu,int n){

printf("\t%d\t%s\t%d\t%s\t%.2f\n",stu[n].id,stu[n].name,stu[n].age,stu[n].sex,stu[n].height);
}
void printAll(struct student *stu){

int i;
int n = myindex(stu);
printhead();
for(i=0;i<n;i++){
printf("\t%d\t%s\t%d\t%s\t%.2f\n",stu[i].id,stu[i].name,stu[i].age,stu[i].sex,stu[i].height);
}
}
void printName(struct student *stu){

int i;
int n = myindex(stu);
printf("\tName:\n");
for(i=0;i<n;i++){
printf("\t%s\n",stu[i].name);
}
}

void selectbyname(struct student *stu){
printf("please input name:");
scanf("%s",st.name);
s = name;
printselect(stu,st,s);
}

void selectbyage(struct student *stu){
printf("please input age:");
scanf("%d",&st.age);
s = age;
printselect(stu,st,s);
}
void selectbysex(struct student *stu){
printf("please input sex:");
scanf("%s",st.sex);
s = sex;
printselect(stu,st,s);
}
void selectbyheight(struct student *stu){
printf("please input height:");
scanf("%f",&st.height);
s = height;
printselect(stu,st,s);
}
void printselect(struct student *stu,union ustudent st,enum select s){

int i;
int n = myindex(stu);
switch(s){
case name:
printhead();
for(i=0;i<n;i++){
if(strcmp(stu[i].name,st.name));
else
print1(stu,i);
}
break;

case sex:
printhead();
for(i=0;i<n;i++){
if(strcmp(stu[i].sex,st.sex));
else
print1(stu,i);
}
break;
case age:
printhead();
for(i=0;i<n;i++){
if(stu[i].age==st.age)
print1(stu,i);

else;
}
break;
case height:
printhead();
for(i=0;i<n;i++){
if((int)stu[i].height == (int)st.height)
print1(stu,i);
else ;
}
break;
case id:
printhead();
for(i=0;i<n;i++){
if(stu[i].id==st.id)
print1(stu,i);
else ;
}
break;
}
}
void del(struct student *stu){

printf("please input student ID:");
scanf("%d",&st.id);
s = id;
printselect(stu,st,s);
char chose;

printf("insure del(y/n):");
getchar();
chose = getchar();
/* if(chose == 'y'){
stu[st.id-1].id = 0;
memset(stu[st.id-1].name,0,32);
stu[st.id-1].age = 0;
memset(stu[st.id-1].sex,0,10);
stu[st.id-1].height = 0;
}
*/
int i;
if(chose == 'y'){
for(i =(st.id-1);i<50;i++)
stu[i] = stu[i+1];
}
else
return;
printAll(stu);

}

3.main函數

#include"head.h"

struct student stu[N];

int main(int argc, const char *argv[])
{
int choice;
do
{
print();
scanf("%d",&choice);
switch(choice){
case 1:add(stu);continue;
case 2:printName(stu);continue;
case 3:printAll(stu);continue;
case 4:selectbyname(stu);continue;
case 5:selectbyage(stu);continue;
case 6:selectbysex(stu);continue;
case 7:selectbyheight(stu);continue;
case 8:del(stu);continue;
case 9:printf("\nstudetManage APP closeed\n");return 0;
default:
printf("choice error,please input again");
continue;
}
}while(1);

return 0;
}

4Makefile工程文件,這個最簡單。。。

studentManage:main.o head.o
gcc main.o head.o -o studentManage
main.o:main.c
gcc -c main.c -o main.o
head.o:head.c
gcc -c head.c -o head.o

.PHONY:clean

clean:
rm *.o studentManage

?

寫這個功能過程中,遇到了很多bug,在逐步調試的過程中也看到自己的知識薄弱點,所幸調試出來了,也算大有長進,享受這種多屏操作,滿屏跑代碼的快感

轉載于:https://www.cnblogs.com/huiji12321/p/11209815.html

總結

以上是生活随笔為你收集整理的step2 . day7 C语言阶段小的项目总结的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。