帮忙做一道C语言程序设计作业
可以参考
#include “stdio.h” /*I/O函数*/
#include “stdlib.h” /弊塌*其它说明*/
#include “string.h” /*字符串函数*/
#include “conio.h” /*屏幕操作函数*/
#include “mem.h” /*内存操作租御圆函数*/
#include “ctype.h” /*字符操作函数*/
#include “alloc.h” /*动态地址分配函数*/
struct score
{
int mingci;
char xuehao[8];
char mingzi[20];
float score[6];
}data,info[1000];
int i,j,k=0;
char temp[20],ch;
FILE *fp,*fp1;
void shuru()
{
if((fp=fopen(“s_score.txt”,”ab+”))==NULL)
{
printf(“cannot open this file.\n”);
getch();exit(0);
}
for(i=0;i=1000;i++)
{
printf(“\nPlease shuru xuehao:”);
gets(data.xuehao);
printf(“Please shuru mingzi:”);
gets(data.mingzi);
printf(“Please shuru yuwen score:”);
gets(temp);data.score[0]=atof(temp);
printf(“Please shuru shuxue score:”);
gets(temp);data.score[1]=atof(temp);
printf(“Please input yingyu score:”);
gets(temp);data.score[2]=atof(temp);
printf(“Please shuru wuli score:”);
gets(temp);data.score[3]=atof(temp);
printf(“Please shur huaxue score:”);
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
fwrite(data,sizeof(data),1,fp);
printf(“another?y/n”);
ch=getch();
if(ch==’n’||ch==’N’)
break;
} fclose(fp);
}
void xianshi()
{
float s;int n;
if((fp=fopen(“s_score.txt”,”rb+”))==NULL)
{
printf(“Cannot reading this file.\n”);
exit(0);
}
for(i=0;i=1000;i++)
{
if((fread(info[i],sizeof(info[i]),1,fp))!=1)
break;
}
printf(“\nxuehao mingzi yuwen shuxue yingyu wuli huauxue zhongfen\n”);
for(j=0,k=1;ji;j++,k++)
{
info[j].mingci=k;
printf(“拆纯%6s %8s %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f\n”,info[j].xuehao,info[j].mingzi,info[j].score[0],info[j].score[1],info[j].score[2],info[j].score[3],info[j].score[4],
info[j].score[5]);
}
getch();
fclose(fp);
}
void xiugai()
{
if((fp=fopen(“s_score.txt”,”rb+”))==NULL||(fp1=fopen(“temp.txt”,”wb+”))==NULL)
{
printf(“Cannot open this file.\n”);
exit(0);
}
printf(“\nPLease shuru xiugai xuehao:”);
scanf(“%d”,i); getchar();
while((fread(data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{
printf(“xuehao:%s\nmingzi:%s\n”,data.xuehao,data.mingzi);
printf(“Please shuru mingzi:”);
gets(data.mingzi);
printf(“Please shuru yuwen score:”);
gets(temp);data.score[0]=atof(temp);
printf(“Please shuru shuxue score:”);
gets(temp);data.score[1]=atof(temp);
printf(“Please input yingyu score:”);
gets(temp);data.score[2]=atof(temp);
printf(“Please input wuli score:”);
gets(temp);data.score[3]=atof(temp);
printf(“Please input huaxue score:”);
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
} fwrite(data,sizeof(data),1,fp1);
}
fseek(fp,0L,0);
fseek(fp1,0L,0);
while((fread(data,sizeof(data),1,fp1))==1)
{
fwrite(data,sizeof(data),1,fp);
}
fclose(fp);
fclose(fp1);
}
void chazhao()
{
if((fp=fopen(“s_score.txt”,”rb”))==NULL)
{
printf(“\nCannot open this file.\n”);
exit(0);
}
printf(“\nPLease shuru xuehao chakan:”);
scanf(“%d”,i);
while(fread(data,sizeof(data),1,fp)==1)
{
j=atoi(data.xuehao);
if(i==j)
{
printf(“xuehao:%s mingzi:%s\nyuwen:%f\n shuxue:%f\n yingyu:%f\n wuli:%f\n huaxue:%f\n “,data.xuehao,data.mingzi,data.score[0],data.score[1],data.score[2],data.score[3],data.score[4],data.score[5]);
}getch();
}
}
void shanchu()
{
if((fp=fopen(“s_score.txt”,”rb+”))==NULL||(fp1=fopen(“temp.txt”,”wb+”))==NULL)
{
printf(“\nopen score.txt was failed!”);
getch();
exit(0);
}
printf(“\nPlease input ID which you want to del:”);
scanf(“%d”,i);getchar();
while((fread(data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{
printf(“Anykey will delet it.\n”);
getch();
continue;
}
fwrite(data,sizeof(data),1,fp1);
}
fclose(fp);
fclose(fp1);
remove(“s_score.txt”);
rename(“temp.txt”,”s_score.txt”);
printf(“Data delet was succesful!\n”);
printf(“Anykey will return to main.”);
getch();
}
main()
{
while(1)
{
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移动光标*/
textcolor(YELLOW); /*设置文本显示颜色为黄色*/
textbackground(BLUE); /*设置背景颜色为蓝色*/
window(1,1,99,99); /* 制作显示菜单的窗口,大小根据菜单条数设计*/
clrscr();
printf(“*************welcome to use student manage******************\n”);
printf(“*************************menu********************************\n”);
printf(“* ========================================================= * \n”);
printf(“* 1shuru 2xiugai * \n”);
printf(“* 3shanchu 4chazhao * \n”);
printf(“* 5xianshi 6exit * \n”);
printf(“* * \n”);
printf(“* ——————————————————— * \n”);
printf(” Please input which you want(1-6):”);
ch=getch();
switch(ch)
{
case ‘1’:shuru();break;
case ‘2’:xiugai(); break;
case ‘3’:shanchu(); break;
case ‘4’:chazhao(); break;
case ‘5’:xianshi(); break;
case ‘6’:exit(0);
default: continue;
}
}
}
c语言程序设计例题
题目1
#include “stdio.h”
void main(void)
{
int n=5,m=10,i=1;
long sum=1;
for(;i=n;i++)
{
sum*=i;
}
printf(“\n5!=%d”,sum);
for(i=1;i=10;i++)
{
sum*=i;
}
printf(“\n10!=%d”,sum);
}
题目2
#include “stdio.h”
#include “string.h”
struct Student
{
char s_Name[25];
long n_Code;
int n_English;
int n_Math;
int n_Computer;
}student_1,student_2;
void main(void)
{
printf(“\nStudent1:\nName:”);
scanf(“%s”,student_1.s_Name);
printf(“StudentNum:”);
scanf(“%d”,student_1.n_Code);
printf(“English Score:”);
scanf(“%d”,student_1.n_English);
printf(“Math Score:”);
scanf(“%d”,student_1.n_Math);
printf(“Computer Score:”);
scanf(“%d”,student_1.n_Computer);
printf(“\nStudent2:\nName:”);
scanf(“%s”,student_2.s_Name);
printf(“StudentNum:”);
scanf(“%d”,student_2.n_Code);
printf(“English Score:”宽姿);
scanf(“%d”,student_2.n_English);
printf(“Math Score:”);
scanf(“%d”,student_2.n_Math);
printf(“Computer Score:”);
scanf(“%d”,student_2.n_Computer);
printf(“\nStudent1:\nName:%s\nStudent Number:%d\慎森绝nEnglish Score:%d\nMath Score:%d\nComputer Score:%d\春誉n”,student_1.s_Name,student_1.n_Code,student_1.n_English,student_1.n_Math,student_1.n_Computer);
printf(“\nStudent2:\nName:%s\nStudent Number:%d\nEnglish Score:%d\nMath Score:%d\nComputer Score:%d\n”,student_2.s_Name,student_2.n_Code,student_2.n_English,student_2.n_Math,student_2.n_Computer);
}
C语言程序设计求详解过程
首先,你要先明白,这个程序有两部分组成:函数fun(..)和主函数main();main()调用fun(..)函数实现算法运算。
首先介绍主函数main():主要负责打印输出结果,for循环由k控制,连着调用fun(..)函数两次,并打印。
fun(..)函数:实现算法运算。
第一次调用:x == 1(参数a的值), z == 4(在z++后), y==1(在y++后),所以此时返回值(x + y + z) = 6
第二次隐核腔调用:x == 1(参数a的值), z == 5(在第一次z++后,本次有执行了一次z++), y==2(在第一次y++后,本次有执行了一次y++),所以此时返回值(x + y + z) = 8
直接运行了一次你的代码,输出结果如下:
注意事项以及建议:
1、这个道题目我觉得是对static的考察。
2、static 修改的变量在整个程序生命周期内只会被定义一次,并且在程序生命周期灶衫结束前,其上次的运行结果会被保存,供下次使用。
3、在fun(..)函数中, y,z是static类型。
如果以上问题对你有帮助氏氏,请采纳一下,谢谢。
C语言程序设计
#include stdio.h
#include stdlib.h
#include string.h
#define MAX_NUM 50
#define MAX_LINE 256
struct student {
char name[10];
float math;
float chinese;
float eng;
float aver;
char grade;
};
const char * student_file = “student.txt”;
const char * grade_file = “grade.txt”;
int init(struct student * s, int n);
int fun(struct student s[], int n);
void sort(struct student * s, int n);
void display(struct student * s, int n);
void save_student(struct student * s, int n, const char * file);
void load_student(const char * file);
int main(int argc, char *argv[])
{
int num = 0;
struct student st[MAX_NUM];
num = init(st, MAX_NUM);
printf(“\n等级为D的人数: %d\n”, fun(st, num));
save_student(st, num, student_file);
sort(st, num);
save_student(st, num, grade_file);
display(st, num);
printf(“\n所有学生信息\n”);
load_student(student_file);
printf(“\n排序后的学生信息\n”);
load_student(grade_file);
return 0;
}
/* 初始化 */
int init(struct student * s, int n)
{
int num = 0, i = 0;
if (0 == s || 0 = n || MAX_NUM n)
return 0;
printf(“请输入学生数量[不大于50]: “);
fflush(stdout);
scanf(“%d”, num);
姿尺卖 while (0 = num || n num)
{
fflush(stdin);
printf(“无效的参数,请输入学生数量[不大于50]: “);
fflush(stdout);
scanf(“%d”, num);
}
for (i = 0; i num; ++i)
{
printf(“请输入第%d个学生的信息: “, i + 1);
迹逗 fflush(stdout);
scanf(“%9s %f %f %f”, s[i].name, s[i].math, s[i].chinese, s[i].eng);
fflush(stdin);
}
return num;
}
/* 计算平均成绩并统计等级为D的人数 */
int fun(struct student s[], int n)
{
int i = 0, cnt = 0;
if (0 == s || 0 = n || MAX_NUM n)
return 0;
for (i = 0; i n; ++i)
{
s[i].aver = (s[i].math + s[i].chinese + s[i].eng) / 3.0;
if (70 = s[i].aver 85 s[i].aver)
s[i].grade = ‘B’;
else if (60 = s[i].aver 70 s[i].aver)
s[i].grade = ‘C’;
else if (60 s[i].aver)
s[i].grade = ‘D’;
else
s[i].grade = ‘A’;
if (‘D’ == s[i].grade)
++cnt;
}
return cnt;
}
/* 降序排列 */
void sort(struct student * s, int n)
{
int i = 0, j = 0;
struct student tmp;
if (0 == s || 0 困慧= n || MAX_NUM n)
return 0;
for (i = 0; i n – 1; ++i)
{
for (j = 0; j n – 1 – i; ++j)
{
if (s[j].aver s[j + 1].aver)
{
tmp = s[j];
s[j] = s[j + 1];
s[j + 1] = tmp;
}
}
}
}
void display(struct student * s, int n)
{
int i = 0;
if (0 == s || 0 = n || MAX_NUM n)
return 0;
printf(“所有学生的信息如下: \n”);
for (i = 0; i != n; ++i)
{
printf(“%d. name[%s] math[%.1f] chinese[%.1f] eng[%.1f] aver[%.1f] grade[%c]\n”,
i + 1, s[i].name, s[i].math, s[i].chinese, s[i].eng, s[i].aver, s[i].grade);
}
}
/* 保存学生信息到指定文件 */
void save_student(struct student * s, int n, const char * file)
{
int i = 0;
FILE * fp = 0;
char buf[MAX_LINE] = {0};
if (0 == s || 0 = n || MAX_NUM n || 0 == file)
return 0;
if (fp = fopen(file, “w”))
{
for (i = 0; i != n; ++i)
{
sprintf(buf, “%s %.1f %.1f %.1f %.1f %c\r\n”,
s[i].name, s[i].math, s[i].chinese, s[i].eng, s[i].aver, s[i].grade);
fwrite(buf, 1, strlen(buf), fp);
memset(buf, 0x00, MAX_LINE);
}
fclose(fp);
}
}
/* 加载指定文件中的信息 */
void load_student(const char * file)
{
char buf[MAX_LINE] = {0};
FILE * fp = 0;
if (0 == file)
return ;
if (fp = fopen(file, “r”))
{
while (fgets(buf, MAX_LINE, fp))
printf(“%s”, buf);
fclose(fp);
}
}