c语言如何实现删除功能
明天就要回老家了,那边没有网,我也没有数据。
我现在还有一个学生成绩管理的删除功能不知道怎么做。
你能不能写个例子给我。
#include<stdio.h>
#include<windows.h>
#include<string.h>
void Write_in(void); //写入
//void Variable_body(void); //变量体
int main(void){
system("CLS");
system("COLOR 1D"); //蓝色加淡紫色
Write_in();
return 0;
}
/*
//后期调用
void Variable_body(void){
int chinese[20]; //语文成绩
int mathematice[20];//数学成绩
int English[20];//英语成绩
char student_name[5][11];
//首先能录入5名学生,每名学生名字是5个。2*5+1=11,最后还有一个字符串结束符
//每个中文字符占2个字符空间
//Write_in(student_name);//调用Variable_body函数
}
*/
void Write_in(void){
int select=0; //可以该问char类型,目的是char占用的存储空间小
int i=0;
int j=0;
int k=0;//判断修改的学号是否正确
int m=0;//判断学号不能是非数字字符
int f=0;//重复数标记
int n=0;//临时变量
int display=0;
//考虑要不要使用多层赋值
int modify=0;//修改
char student_name[5][11];//存放5个姓名
//首先能录入5名学生,每名学生名字是5个。2*5+1=11,最后还有一个字符串结束符
//每个中文字符占2个字符空间
double achieverments[5][3]; //有5名学生,3门成绩
int student_id[5]; //个学号
do{
printf("==========学生成绩管理系统========== ");
printf("= 1、录入 = ");
printf("= 2、修改 = ");
printf("= 3、删除 = ");
printf("= 4、查询 = ");
printf("= 5、显示所有学生成绩 = ");
printf("= 6、退出 = ");
printf("==================================== ");
printf("请输入以上5个选项中的其中一条: ");
scanf("%d", &select);
switch(select)
{
case 1:
for(i=0;i<5;i++)
{ //条件判断5次
printf("请输入第%d学生姓名: ", i+1);
scanf("%s", student_name[i]);
do{//判断重复数
f=0;//重复标记
/********************************************************/
do{//判断用户不能有英文字符
printf("请输入%s的学号: ", student_name[i]);
if(scanf("%d", &n)!=1)//首先放入临时变量
/*
scanf("%d", &student_id[i]);
if(student_id[i]!=1)//scanf如果正常输入,则返回值是0,而非正常输入那么返回值就是1
*/
//scanf("%d", &n);
//if(n!=1)//首先放入临时变量
{
printf("输入错误,不能有非数字字符! ");
fflush(stdin);//清除标准输入缓冲区
m=1;//判断条件,重新输入
}elsem=0;//如果不是非数字,那么就是数字,所以,数据正确,按顺序跳出循环
}while(m==1);
for(j=0;j<i;j++)
{
if(n==student_id[j])//这样做的目的是避免重复数
{
f=1;//若有重复,跳出循环,给用户一个反馈,然后继续输入,直到数值正确为止
break;//跳出小循环,执行下面步骤
}
}//判断是否有重复学号
if(f)
printf("不能是重复的学号,请重新输入 ! ");
else
student_id[j]=n;//若没有重复数,就吧值赋给数组
}while(f);//f为0时,表示数值不重复,若f为1,表示数值重复,要求重新输入
/***************************************************************************************/
do{
printf("请输入%s的成绩(语文)(数学)(英语) 注意:分数不能大于120分: ", student_name[i]);
scanf("%lf %lf %lf", &achieverments[i][0], &achieverments[i][1], &achieverments[i][2]);
}while(achieverments[i][0]>120 || achieverments[i][1]>120 || achieverments[i][2]>120);
//判断用户所输入的值,不能大于120分
}//for循环输入
system("CLS"); //清屏函数
printf("成绩正在录入中。");
Sleep(1000);
printf("。");
Sleep(1000);
printf("。 ");
Sleep(1000);
system("CLS");
printf("成绩录入成功 ! ");
Sleep(2000);
break;
case 2:
system("CLS");
do{
printf("请输入要修改学生成绩的学号: ");
scanf("%d", &modify);
for(k=0; k<5; k++)
{
if(modify==student_id[k])
{
system("CLS");//清除上一条反馈
printf("(注意:无需修改的,按原来的输入) 请修改(%s)的学号: ", student_name[k]);//跟着循环开始,如果判断出学号相等,这里也会停留在相等处,从而达到同步的效果
scanf("%d", &student_id[k]);
printf("请输入%s的成绩(语文)(数学)(英语) 注意:分数不能大于120分: ", student_name[k]);
scanf("%lf %lf %lf", &achieverments[k][0], &achieverments[k][1], &achieverments[k][2]);
printf("正在修改。");
Sleep(1000);
printf("。");
Sleep(1000);
printf("。 ");
Sleep(1000);
system("CLS");
printf("修改成功,请核实 ! ");
Sleep(2000);
break;
}
}//for循环
if(k==5) //判断到第5个的时候还找不到,就说明没有,给用户一个反馈
printf("该数据库中没有此人,请重新输入 ");
}while(k==5);
break;
case 5:
printf("正在导出,请稍等。");
Sleep(1000);
printf("。");
Sleep(1000);
printf("。 ");
Sleep(2000);
system("CLS");
display=0;
for(display=0;display<5;display++)
{
printf("姓名:%s ", student_name[display]);
printf("学号:%d ", student_id[display]);//打印每名学生的学号
printf("语文成绩是: %g分 数学成绩是: %g分 英语成绩是: %g分 总成绩: %g分 ",
achieverments[display][0], achieverments[display][1], achieverments[display][2],
achieverments[display][0]+achieverments[display][1]+achieverments[display][2]);//每个数组能保存三项成绩
printf("============================================================================= ");
Sleep(1000);//每延时一秒,输出一条
//printf多重打印
}//for循环输出
case 6:
system("exit");
}//switch结构
}while(select!=6);
}
//原代码
利用指针对字符串进行字符串数据重新组织,可以很方便的完成删除指针字符。参考代码如下:
#include <stdio.h>void del_chr( char *s, char ch ){ char *t=s; //目标指针先指向原串头 while( *s != '