求大神ps帮我设计个网站,语言描述即可

c语言课程设计,大神来帮个忙。大部分都解决了,只剩保存为文件和读取不会弄,求大神帮个忙_百度知道
提问者采纳
应该没有什么问题了,不过我没有测试,你自己测试一下吧#include&stdio.h&#include&string.h&#include&stdlib.h&struct&Student&{ char&name[10]; char&sex[10]; char&college[20]; char&item[10]; int& int&};struct&sysuser&{ char&username[20],password[20];};int&num,n,M,W;&void&menu();&void&save(int&g);&void&read();&&//读取就全部读取,不需要个数Student&stu[100];&void&input()&{ system(&color&f0&); int&i; printf(&参赛院系总数为:&); scanf(&%d&,&n); printf(&男子竞赛项目数为:&); scanf(&%d&,&M); printf(&女子竞赛项目数为:&); scanf(&%d&,&W);& printf(&\n\n请继续输入各项目获奖运动员的信息:\n&); printf(&请输入运动员总数:&); scanf(&%d&,&num); for(i=0;i&i++) {
printf(&请输入学生姓名:&);
scanf(&%s&,stu[i].name);
printf(&请输入学生性别(中文):&);
scanf(&%s&,stu[i].sex);
printf(&请输入学生院系:&);
scanf(&%s&,stu[i].college);
printf(&请输入学生参赛项目:&);
scanf(&%s&,stu[i].item);
printf(&请输入学生名次:&);
scanf(&%d&,&stu[i].position);
if(stu[i].position==1)&
stu[i].score=7;
else&if(stu[i].position==2)&
stu[i].score=5;
else&if(stu[i].position==3)&
stu[i].score=3;
else&if(stu[i].position==4)&
stu[i].score=2;
else&if(stu[i].position==5)&
stu[i].score=1;
stu[i].score=0;
printf(&\n&); } printf(&输入完毕!请选择下一步操作\n\n\n&); menu();&}void&search()&{ int&m; void&search_college(); void&search_item(); void&search_name(); void&baobiao(); printf(&┌——————————————————————————————————————┐&); printf(&│&1.查看参赛院系信息&│&); printf(&│&2.查看获奖运动员信息&│&); printf(&│&3.查看比赛项目信息&│&); printf(&│&4.查看团体总分报表&│&); printf(&│&5.返回主菜单&│&); printf(&└——————————————————————————————————————┘&); printf(&请选择相应操作的序号:&); scanf(&%d&,&m); if(m==1)&
search_college(); else&if&(m==2)&
search_name(); else&if&(m==3)&
search_item(); else&if&(m==4)&
baobiao(); else&if&(m==5)&
menu();& else {
printf(&请输入正确的序号!\n&);
search(); }}void&search_college()&{ int&i,c,sum, Student&y; printf(&请输入需要查询的院系名称:&); scanf(&%s&,&y.college); sum=0; read();&//直接全部读取 for(i=0;i&n;i++) {
if(strcmp(y.college,stu[i].college)==0)
printf(&%s:\n&,stu[i].college);
printf(&名字&性别&参赛项目&名次&得分\n&);
for(c=0;c&c++)
if(strcmp(y.college,stu[c].college)==0)
printf(&%s%15s%20s%18d%16d\n&,stu[c].name,stu[c].sex,stu[c].item,stu[c].position,stu[c].score);
sum=sum+stu[c].
printf(&学院总分:%d\n\n&,sum);
} } if(flag!=1) {
printf(&对不起,没有该学院!请重新输入!\n&);&
search_college(); } printf(&请选择下一步操作:\n&); search();}void&search_item()&{ int&i,c, Student&y; printf(&请输入需要查询的比赛项目名称:&); scanf(&%s&,&y.item); for(i=0;i&n;i++
if(strcmp(y.item,stu[i].item)==0)
printf(&%s:\n&,stu[i].item);
printf(&名字&性别&学院&名次&得分\n&);
for(c=0;c&c++)
if(strcmp(y.item,stu[c].item)==0)
printf(&%s%15s%20s%18d%16d\n&,stu[c].name,stu[c].sex,stu[c].college,stu[c].position,stu[c].score);
} } if(flag!=1) {
printf(&对不起,没有该比赛项目!请重新输入!\n&);
search_item(); } printf(&请选择下一步操作:\n&); search();}void&search_name()&{ int&c, Student&y; printf(&请输入要查询的名字:&); scanf(&%s&,y.name); printf(&性别&院系&参赛项目&名次&得分\n&); for(c=0;c&c++) {
if(strcmp(y.name,stu[c].name)==0)
printf(&%s%15s%20s%18d%16d\n&,stu[c].sex,stu[c].college,stu[c].item,stu[c].position,stu[c].score);
} } if(flag!=1) {&
printf(&对不起,该学生没有参加运动会!请重新输入!\n&);
search_name(); } printf(&请选择下一步操作:\n&); search();}void&baobiao()&{ int&i,j,c,a, Student&bao[100]; printf(&院系&总分\n&); sum=0; strcpy(bao[0].college,stu[0].college); for(i=0,j=1;i&num,j&n;i++) {
if(strcmp(stu[i].college,stu[i+1].college)==0)
strcpy(bao[j].college,stu[i+1].college);
} } for(c=0;c&n;c++) {
for(a=0;a&a++)
if(strcmp(bao[c].college,stu[a].college)==0)
sum=sum+stu[a].
printf(&%s%5d\n&,bao[c].college,sum);
sum=0; } printf(&请选择下一步操作:\n&); search();}void&exit()&{ system(&color&f0&); printf(&\n\n\n&); printf(&&谢谢使用,再见&&);}void&menu()&{ system(&cls&); system(&color&f0&); int& printf(&┌——————————————————————————————————————┐&); printf(&│&欢迎使用学校运动会管理系统&│&); printf(&│&1.输入信息&│&); printf(&│&2.查询信息&│&); printf(&│&3.退出系统&│&); printf(&└——————————————————————————————————————┘&); printf(&请选择相应操作的序号:&); scanf(&%d&,&ch); if(ch==1)&input();& else&if&(ch==2)&search();& else&if&(ch==3)&exit(); else {
printf(&请输入正确的序号!\n&);
menu(); }}int&checkUser(struct&sysuser&*psu)&{ FILE&* char&usr[30],usr1[30],pwd[30]; int&check=0; strcpy(usr,psu-&username); strcpy(pwd,psu-&password); strcat(usr,&&&); strcat(usr,pwd); if((fp=fopen(&e:\\password.txt&,&r&))==NULL) {
printf(&无法打开文件!\n&);
exit(0); } while(!feof(fp)) {
fgets(usr1,30,fp);&
if(strcmp(usr,usr1)==0)
} } if(fclose(fp)) {
printf(&无法关闭文件!\n&);
exit(0); } return&}void&welcome()&{ system(&color&f0&); struct&sysuser& printf(&请输入用户名:&); scanf(&%s&,su.username); printf(&请输入密码:&); scanf(&%s&,su.password); if(checkUser(&su)==1) {
printf(&\n\n\n&);
menu(); } else {
printf(&用户名或密码输入错误,请重新输入\n&);
welcome(); }}void&main(){ system(&color&f0&); printf(&┌——————————————————————————————————————┐&); printf(&│&欢迎使用学校运动会管理系统&│&); printf(&└——————————————————————————————————————┘&); welcome();}void&save(int&g){ int&i; FILE&* if((fp=fopen(&c:\\xiangqi.txt&,&wb+&))==NULL) {
printf(&无法打开文件。\n\n\n&);
&//打不开就直接退出就行了 } for(i=0;i&g;i++)&//从0开始
if(fwrite(&stu[i],sizeof(struct&Student),1,fp)!=1)
printf(&文件写入错误!\n\n&);
} fprintf(fp,&\n&); fclose(fp);}void&read()&//读取不需要个数{ int&i=0;&//从0开始 FILE&* if((fp=fopen(&c:\\xiangqi.txt&,&rb+&))==NULL) {
printf(&\n\n无法打开文件。\n\n\n&);
&//打不开就直接退出就行了,不然后面的关闭文件函数就会出错的 } while(feof(fp)==0) {
fread(&stu[i],sizeof(struct&Student),1,fp);/*读取文件信息*/
i++; } fclose(fp);}
不行啊,还是保存不了
&for(i=0;i&g;i++)&//从0开始&&&&&&&&if(fwrite(&stu[i],sizeof(struct&Student),1,fp)!=1)&&&&&&&&{&&&&&&&&&&&&printf(&文件写入错误!\n\n&);&&&&&&&&&&&&&&&&&&&&}改为&for(i=0;i&g;i++)&//从0开始&{&&&&&&&&fwrite(&stu[i],sizeof(struct&Student),1,&}试试
都没有写入啊,连文本文件都没有创建
好了,已经测试通过了,你自己看看,以下截图是修改过的地方。以下截图是运行时的截图:
提问者评价
其他类似问题
按默认排序
其他1条回答
自己搞呗,也不难啊,看一下怎么读取文本文件就行了
会的话还会用50分来问?
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求大神帮忙解题啊!!! - 程序语言 - 小木虫 - 学术 科研 第一站
&& 查看话题
求大神帮忙解题啊!!!
必答题 (80分)
1.如何设置当前目录和搜索路径,在当前目录上的文件和在搜索路径上的文件有何区别?(2)
当前目录可以在当前目录浏览器窗口左上方的输入栏中设置,搜索路径可以通过选择操作桌面的file菜单中的Set Path菜单项来完成。在没有特别说明的情况下,只有当前目录和搜索路径上的函数和文件能够被MATLAB运行和调用,如果在当前目录上有与搜索路径上相同文件名的文件时则优先执行当前目录上的文件,如果没有特别说明,数据文件将存储在当前目录上。
2.创建符号变量和符号表达式有哪几种方法?(4)
sym&&创建单个符号变量,syms&&多个符号变量。在创建符号表达式之前,必须把符号表达式所包含的全部符号变量都创建完毕。
3.GUIDE提供哪些常用的控件工具,各有什么功能 ?(5分)
  答:在GUI开发环境中提供了下列五个方便的工具:
   (1)布局编辑器(Layout Editor)—在图形窗口中创建及布置图形对象
   (2)几何排列工具(Alignment Tool)—调整各对象之间的相互几何关系和位置
   (3)属性编辑器(Property Inspector)—查询并设置对象的属性值
   (4)对象浏览器(Object Browser)—获得当前MATLAB窗口中图形对象句柄的分级排列
   (5)菜单编辑器(Menu Editor)—建立和编辑主菜单和图形对象的鼠标右键菜单
4.&&建立不同数据类型的变量:包括双精度的数值型(numeric)、符号型(sym)、结构体(structure)、单元型(cell)、字符串型(char),函数句柄(function handle)、逻辑型(logical),并且采用whos列出各变量名,变量的数组维数,占用字节数,变量的类别。(4分)
5. 求矩阵的秩,迹,特征值和特征向量,并且对矩阵进行LU分解、QR分解及Chollesky分解(3分)。
6. 执行矩阵A和B
下列的运算:A+5*cos(B)、A.*B、 A*B、A./B、B.\A、A/B, B\A,分别解释数组运算和矩阵运算的区别。(4分)
7. 求半径为r的圆的面积和周长,分别采用脚本文件和函数文件进行编写, r值由input指令从键盘给出,数据的输出采用disp指令;并且说明脚本式文件和函数文件的特点。(5分)
8.&&级数求和:
(1) 分别用 for和while循环结构编写程序求和,并且说明for和while区别;(2) 分别采用sum和symsum求和。(5分)
9.&&表1给出x0,y0的一组数据,
x0& & & & 0& & & & 0.1 & & & & 0.2& & & & 0.3& & & & 0.4& & & & 0.5& & & & 0.6& & & & 0.7& & & & 0.8& & & & 0.9& & & & 1.0
y0& & & & -0.4470& & & & 1.9780& & & & 3.1100& & & & 5.2500& & & & 5.0200& & & & 4.6600& & & & 4.0100& & & & 4.5800& & & & 3.4500& & & & 5.3500& & & & 9.2200
(1) 分别采用3阶和11阶多项式拟合表1数据,并且分析是不是阶数越高拟合效果越好;
  (2) 根据已知表1数据组,采用3次样条插值求解x=0:0.25:1的y值;
(3) 图示原始数据、3阶和11阶多项式拟合以及插值结果在一个图中,并标注坐标轴和图例;
  (4)说明插值和拟合的区别。(8分)
采用左除和逆乘法求解两个方程组的解;并解释求解这两个方程的区别(5分)
11. 求解多项式的根,分别采用
(1)多项式求根命令roots;
(2)数值求零命令fzero ;
(3)符号运算命令solve,并将符号变量结果转化为数值解;(5分)
12. 已知y= x.^3-4*exp(x)-sin(x)/0.002,采用符号(diff)和数值微分(diff)和多项式拟合求导(polyfit,polyder),计算函数y在区间中的导数,并且图示这三种方法。(5分)
13. 求方程组的根,分别采用数值运算fsolve和符号运算solve,数值运算的初始值为x0 = ,要求显示符号运算得到结构体的每个元素的具体数值. (5分)
14. 符号矩阵
  (1) 简化符号矩阵然后求行列式、逆矩阵和秩;
  (3)(10分)
15. 椭圆的隐式方程为: ,它的参数方程可以表达为:x=a*cos()&&y=b*sin(),其中a=5,b=3;请用subplot在三个子图区域用不同的方法绘制椭圆曲线,要求为每幅子图形加上标题title和坐标轴标注,其中(1)采用ezplot分别绘制椭圆隐式和参数方程在两个子图区域;(2)当a值由1变化到5时,采用plot绘制5条椭圆曲线在另一个子图区域中,t在范围,使用linspace命令取椭圆100个点,使用legend命令来标明每一条对应的a值曲线的图例。(10分)
二、选答题(必须选4道题,每题5分,总计20分)
1. 符号运算
(1) 分解因式
(2) 化简表达式
(3) 求极限
2. 积分运算
(1)定积分运算:分别采用数值和符号运算
(2) 不定积分运算
已知微分方程采用数值运算ode和符号运算dsolve求解。
绘制(x和y的取值范围均为-2到2)图形,要求采用建立子窗口的方法在同一个图形窗口中绘制出网格图、带等高线的网格图、曲面图和带渲染效果(shading interp)的曲面图,并且每幅子图形加上标题title。
采用GUIDE工具设计椭圆(x=a*cos(t)&&y=b*sin(t))的用户界面, a和b值由编辑框输入,实现在坐标轴上显示椭圆曲线的目的。要求设计一个带有两个编辑框、一个坐标轴、一个按钮和相应的静态文本的图形用户界面,当用鼠标点击按钮时,在坐标轴内画出不同a和b值的椭圆曲线。
6. 初始状态为x=0.06的二阶微分方程,其中u(t)是单位阶跃函数(step),采用simulink建立系统仿真,并用scope模块观察结果。
没人帮忙吗???? :cat30::cat9::cat3::cat1::cat44:
var cpro_id = 'u1216994';
欢迎监督和反馈:本帖内容由
提供,小木虫为个人免费站点,仅提供交流平台,不对该内容负责。欢迎协助我们监督管理,共同维护互联网健康,如果您对该内容有异议,请立即发邮件到
联系通知管理员,也可以通过QQ周知,我们的QQ号为:8835100
我们保证在1个工作日内给予处理和答复,谢谢您的监督。
小木虫,学术科研第一站,为中国学术科研研究提供免费动力
欢迎监督,发现不妥请立即
E-mail: & QQ:8835100求大神给我设计一个关于名字的自我介绍,只要一到三句话,要给人耳目一新的感觉?_百度知道
求大神给我设计一个关于名字的自我介绍,只要一到三句话,要给人耳目一新的感觉?
我有更好的答案
按默认排序
桔是多音字,你是jie还是ju? 如果是桔子的桔的读音的话,下面有这么一个:大家好,我叫赵桔川。赵本山的赵,桔子的桔,四川的川。大家可以这样记住我的名字:赵本山把桔子扔到了四川省。如果是桔梗的桔的读音的话,也可参考上文。这样不算耳目一新,但是却能让大家很快并且深刻地记住你的名字。你在最后甚至还可以幽默地问大家一句话:相信大家到今晚都还不会忘记我的名字吧?
哦你这个名字我真设不出来
想想办法嘛
分不是问题
哥们我要上课去了,老师在催了
想出来在跟我说啊
你叫什么啊?
求大神帮帮忙啊
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求C语言大神帮我注释,越详细越好,就是说明每一句代码的意思,顺便求一段400字总结_百度知道
求C语言大神帮我注释,越详细越好,就是说明每一句代码的意思,顺便求一段400字总结
#include &stdio.h& #include &stdlib.h& #include &ctype.h&
void inputdata(int d[],int num); void Sort(int d[],int num,int m); void sw(int *a,int *b); void hb(int s[],int a[],int j,int b[],int o);
void sw(int *a,int *b) {
*b= //运用指针形成逆转语句,方便下面的排序问题} void Sort(int d[],int num,int m) {
for(i=0;i&i++)
for(j=num-1;j&i;j--)
if(d[j]&d[j-1])
sw(&d[j],&d[j-1]);
if(d[j]&d[j-1])
sw(&d[j],&d[j-1]);
} void hb(int s[],int a[],int j,int b[],int o) {
for(i=0;i&j;i++)
s[i]=a[i];
for(i=j;i&j+o;j++)
s[i]=b[i-j]; } void inputdata(int d[],int num) {
for(i=0;i&i++)
scanf(&%d&,&d[i]);
} } int rFile(FILE *fp,int d[]) {
char cc[10];
ch=getc(fp);
while(ch != EOF && mm==0)
if(isdigit(ch)==0)
cc[kk]='\0';
d[i++]=atoi(cc);
while(isdigit(ch)==0)
ch=getc(fp);
if(ch==EOF)
ch=getc(fp);
} int main() {
int d[20];
int a[20],b[20];
int i,j,o;
int s[20];
FILE *fp1;
FILE *fp2;
//创建新文件
if((fp1=fopen(&a.txt&,&w&))==0)
printf(&无法创建a.txt!&);
if((fp2=fopen(&b.txt&,&w&))==0)
printf(&无法创建a.txt!&);
//输入n个数
inputdata(d,n);
//区分奇偶
for(i=0;i&n;i++)
if(d[i]%2==0)
b[o++]=d[i];
a[j++]=d[i];
//对奇数、偶数分别排序
Sort(a,j,0);
Sort(b,o,1);
//写数据到文件
for(i=0;i&j;i++)
fprintf(fp1,&%d &,a[i]);
for(i=0;i&o;i++)
fprintf(fp2,&%d &,b[i]);
//关闭文件
fclose(fp1);
fclose(fp2);
//打开文件
if((fp1=fopen(&a.txt&,&r&))==0)
printf(&无法创建a.txt!&);
if((fp2=fopen(&b.txt&,&r&))==0)
printf(&无法创建a.txt!&);
j=rFile(fp1,a);
o=rFile(fp2,b);
//对奇数、偶数分别排序
Sort(a,j,1);
Sort(b,o,1);
//输出a
printf(&文件a.txt中数据降序输出:\n&);
for(i=0;i&j;i++)
printf(&%d &,a[i]);
printf(&\n&);
//输出b
printf(&文件b.txt中数据降序输出:\n&);
for(i=0;i&o;i++)
printf(&%d &,b[i]);
printf(&\n&);
//合并a和b
hb(s,a,j,b,o);
Sort(s,o+j,1);
//输出合并数组
printf(&合并文件a.txt和b.txt中数据后,降序输出:\n&);
for(i=0;i&j+o;i++)
printf(&%d &,s[i]);
printf(&\n&);
必须是在今晚9:00之前,否则就没用了
提问者采纳
大哥 你这个实在太多了,我给你注释了一下,总结你自己写一下吧。这个程序大概的意思就是手动输入20个数字,然后分别筛选出奇数和偶数存入两个数组,分别对这两个数组里的元素进行排序,存入到文件a,b,然后再从文件a,b中把文件读取出来吗,再进行降序排序,输出到屏幕。就说这么多了,你理解一下,有啥不懂得可以追问。#include &stdio.h& #include &stdlib.h& #include &ctype.h&
void inputdata(int d[],int num); void Sort(int d[],int num,int m); void sw(int *a,int *b); void hb(int s[],int a[],int j,int b[],int o);
void sw(int *a,int *b) {
//定义中间变量 temp=*a;
//先把前一个数赋值给中间变量 *a=*b;
//再把后一个数赋值给前一个数 *b=
//再把中间变量的值也就是前一个数赋值给后一个数 实现交换
//运用指针形成逆转语句,方便下面的排序问题} void Sort(int d[],int num,int m) {
for(i=0;i&i++)
//外部循环,循环20次 {
for(j=num-1;j&i;j--)
//如果m是0 则对偶数进行排序 {
if(d[j]&d[j-1])
sw(&d[j],&d[j-1]); //如果前一个数比后一个数小,则交换两个数字的位置。 }
//如果m是1 则对奇数进行排序 {
if(d[j]&d[j-1])
//如果前一个数比后一个数大,则交换两个数字的位置。
sw(&d[j],&d[j-1]);
} void hb(int s[],int a[],int j,int b[],int o) {
for(i=0;i&j;i++)
s[i]=a[i];
for(i=j;i&j+o;j++)
s[i]=b[i-j]; } void inputdata(int d[],int num) {
for(i=0;i&i++)
scanf(&%d&,&d[i]);
// 循环输入 num也就是传入进来的n 20个数 } } int rFile(FILE *fp,int d[]) {
char cc[10];
ch=getc(fp);
//从文件中获取一个字符
while(ch != EOF && mm==0)
//如果获取到的字符不是EOF,EOF是文件结尾的意思
if(isdigit(ch)==0)
//如果是数字0-9 {
cc[kk]='\0';
d[i++]=atoi(cc);
//将获取到的字符转换成数字 kk=1;
while(isdigit(ch)==0)
//如果是数字0-9 {
ch=getc(fp);
if(ch==EOF)
ch=getc(fp);
} int main() {
int d[20];
int a[20],b[20];
int i,j,o;
int s[20];
FILE *fp1;
FILE *fp2;
//创建新文件
if((fp1=fopen(&a.txt&,&w&))==0)
//以可写形式打开 a.txt文件 {
printf(&无法创建a.txt!&);
if((fp2=fopen(&b.txt&,&w&))==0)
//以可写形式打开 b.txt文件 {
printf(&无法创建a.txt!&);
//输入n个数
inputdata(d,n);
//调用函数 inputdata 将 d[20] 和 n作为参数传入 //区分奇偶
for(i=0;i&n;i++)
if(d[i]%2==0)
//如果是偶数 存入
b数组 b[o++]=d[i];
a[j++]=d[i];
//如果是奇数 存入
//对奇数、偶数分别排序
Sort(a,j,0);
Sort(b,o,1);
//写数据到文件
for(i=0;i&j;i++)
fprintf(fp1,&%d &,a[i]);
for(i=0;i&o;i++)
fprintf(fp2,&%d &,b[i]);
//关闭文件
fclose(fp1);
fclose(fp2);
//打开文件
if((fp1=fopen(&a.txt&,&r&))==0)
//以只读方式打开文件 {
printf(&无法创建a.txt!&);
if((fp2=fopen(&b.txt&,&r&))==0)
//以只读方式打开文件 {
printf(&无法创建a.txt!&);
j=rFile(fp1,a);
o=rFile(fp2,b);
//对奇数、偶数分别排序
Sort(a,j,1);
Sort(b,o,1);
printf(&文件a.txt中数据降序输出:\n&);
for(i=0;i&j;i++)
printf(&%d &,a[i]);
//将文件a.txt的数据排序后 打印在控制台 }
printf(&\n&);
printf(&文件b.txt中数据降序输出:\n&);
for(i=0;i&o;i++)
printf(&%d &,b[i]);
//将文件b.txt的数据排序后 打印在控制台 }
printf(&\n&);
//合并a和b
hb(s,a,j,b,o);
Sort(s,o+j,1);
//输出合并数组
printf(&合并文件a.txt和b.txt中数据后,降序输出:\n&);
for(i=0;i&j+o;i++)
printf(&%d &,s[i]);
printf(&\n&);
提问者评价
虽然我来不及用上,但还是感谢你的答案!
其他类似问题
按默认排序
其他2条回答
程序员最讨厌的事:写注释和别人不写注释,写文档和别人不写文档
这么麻烦的问题自己解决吧、不会有给你解决的
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁谁能帮我写下C语言代码“输入的四个数字据经过运算后能得到24,数字取值范围是1-10”。。只求运行程序就行了,求大神帮忙!
谁能帮我写下C语言代码“输入的四个数字据经过运算后能得到24,数字取值范围是1-10”。。只求运行程序就行了,求大神帮忙! 100
我写了个最简单的,暴力穷举法,可以看看# include &stdio.h&&# include &string.h&&typedef struct Node{ char ss[5];}char s[100];int n = 0; &int t = 0;int flage = 0;//描述两个数组是一样的double total=0.0;int xx[4];char Str[100][100];//数据交换void swap(char *a, char *b)&{ & &&
& && m = &*a; & && *a = *b; & && *b =&} &void circle_right(char a[],int m,int i){
int j,k;& for(k=1;k&=i-m;k++) {
temp=a[i];
for(j=i;j&m;j--)
a[j]=a[j-1];
a[m]= }}void circle_left(char a[],int m,int i){
int j,k;& for(k=1;k&=i-m;k++) {
temp=a[m];
for(j=m;j&i;j++)
a[j]=a[j+1];
a[i]= }}void perm(int k,char a[],int l)&{ & &&& & &&& & int s1,s2;& & if(k == 1) & {
//将我们现在的组合复制进存储数组中,以备后面进行查询是否有重复
for(i = 0; i & i++)&
Str[t][i] = s[i];
//这里进行比较
for(s1 = 0; s1 & t-1; s1++)//这里比较是否有重复数组
int eq = 1;
for(s2 = 0; s2 &= s2++)//这个用来比较两个数组是否一样
if(Str[t-1][s2] != Str[s1][s2])
if(eq == 1)
flage = 1;
if(flage == 0)
total=xx[0];
for(i = 0; i & i++) &
{ & & & & &&
if(s[i]=='+')
total=total+xx[i+1];
else if(s[i]=='-') &
total=total-xx[i+1];
else if(s[i]=='*')
total=total*xx[i+1];
else if(s[i]=='/') &
total=total/xx[i+1];
if(total==24)//满足条件输出&
printf("[(%d%c%d)%c%d]%c%d=",xx[0],s[0],xx[1],s[1],xx[2],s[2],xx[3],s[3]);
printf("%.0lf",total);
printf("\n");
flage = 0; } & & & & & &
for(i = 0; i & i++) & & & && {
swap(&a[0], &a[i]);&
circle_right(a,1,i);
perm(k-1,&a[1],l); &&
circle_left(a,1,i);
swap(&a[i], &a[0]); & & & & & &&& & &}&}void enumerateysf()//枚举运算符&{ int l,i; string str[20]; strcpy(str[0].ss,"+++"); strcpy(str[1].ss,"---"); strcpy(str[2].ss,"***"); strcpy(str[3].ss,"///"); strcpy(str[4].ss,"++-"); strcpy(str[5].ss,"++*"); strcpy(str[6].ss,"++/"); strcpy(str[7].ss,"--+"); strcpy(str[8].ss,"--*"); strcpy(str[9].ss,"--/"); strcpy(str[10].ss,"**+"); strcpy(str[11].ss,"**-"); strcpy(str[12].ss,"**/"); strcpy(str[13].ss,"//+"); strcpy(str[14].ss,"//-"); strcpy(str[15].ss,"//*"); strcpy(str[16].ss,"+-*"); strcpy(str[17].ss,"+-/"); strcpy(str[18].ss,"+*/"); strcpy(str[19].ss,"-*/"); for(i=0;i&20;i++) {
flage = 0;
strcpy(s,str[i].ss);
l=strlen(s);&& &
perm(l,s,l); & }}main()&{ int i,j,k,l,cnt = 0; int a[4] = {8,2,9,1}; n=0; for(i=0;i&4;i++)//全排列数组a& {
for(j=0;j&4;j++)
for(k=0;k&4;k++)
if(k!=i && k!=j)
for(l=0;l&4;l++)
if(l!=k && l!=j && l!=i)
xx[0]=a[i];xx[1]=a[j];xx[2]=a[k];xx[3]=a[l];
enumerateysf();//枚举运算符&
} } printf("共找到%d组\n",n);}
大神 能加你QQ吗?以后求帮助
的感言:当代劳模!所有人都应该向你学习!
其他回答 (4)
int i,n,j,k;for(i=1;i&=10;i++){
for(n=1;n&=10;n++)
for(j=1;j&=10;j++)
for(k=1;k&=10;k++)
if(i+n+j+k==24)
if(i != n != j != k)
printf(&i=%d,n=%d,j=%d,k=%d时i+n+j+k的值为24&,i,n,j,k);
}}//手机敲的代码,可能有误
printf(&i=%d,n=%d,j=%d,k=%d时i+n+j+k的值为24&,i,n,j,k); 这个你只算了全部相加 我想要的是四则运算四个数字所有的加减乘除的可能
你再复制+的代码,分别改成+-*/后再加在if语句后面就可以了
这样才用列举的方式是不是麻烦了
4数字三个空由4个运算符号
而且我刚才我说漏了一点 就是我们说的运算是连括号也算在其中的
所以要这样IF列举的话
感觉太多了
或许有更简单的办法吧
是电脑开机自检
四则运算应该先考虑除数不为0的情况,用变量bool Flag表示; 用函数cal控制两个数之间的运算 double cal(int a,int b,int operat){if(operat==0)return a+b;if(operat==1)return a-b;if(operat==2)return a*b;if(b==0){Flag=0;return 0;}return a/b;} 接下来在主函数中用三个for循环嵌套改变运算符来调用cal函数即可。
#include &stdio.h&char RPN[7];char operdata[24][4] = {{0,1,2,3},{0,1,3,2},{0,2,1,3},{0,2,3,1},{0,3,1,2},{0,3,2,1},{1,0,2,3},{1,0,3,2},{1,2,0,3},{1,2,3,0},{1,3,0,2},{1,3,2,0},{2,1,0,3},{2,1,3,0},{2,0,1,3},{2,0,3,1},{2,3,1,0},{2,3,0,1},{3,1,2,0},{3,1,0,2},{3,2,1,0},{3,2,0,1},{3,0,1,2},{3,0,2,1}};char oper[64][3]={{-1,-1,-1},{-1,-1,-2},{-1,-1,-3},{-1,-1,-4},{-1,-2,-1},{-1,-2,-2},{-1,-2,-3},{-1,-2,-4},{-1,-3,-1},{-1,-3,-2},{-1,-3,-3},{-1,-3,-4},{-1,-4,-1},{-1,-4,-2},{-1,-4,-3},{-1,-4,-4},{-2,-1,-1},{-2,-1,-2},{-2,-1,-3},{-2,-1,-4},{-2,-2,-1},{-2,-2,-2},{-2,-2,-3},{-2,-2,-4},{-2,-3,-1},{-2,-3,-2},{-2,-3,-3},{-2,-3,-4},{-2,-4,-1},{-2,-4,-2},{-2,-4,-3},{-2,-4,-4},{-3,-1,-1},{-3,-1,-2},{-3,-1,-3},{-3,-1,-4},{-3,-2,-1},{-3,-2,-2},{-3,-2,-3},{-3,-2,-4},{-3,-3,-1},{-3,-3,-2},{-3,-3,-3},{-3,-3,-4},{-3,-4,-1},{-3,-4,-2},{-3,-4,-3},{-3,-4,-4},{-4,-1,-1},{-4,-1,-2},{-4,-1,-3},{-4,-1,-4},{-4,-2,-1},{-4,-2,-2},{-4,-2,-3},{-4,-2,-4},{-4,-3,-1},{-4,-3,-2},{-4,-3,-3},{-4,-3,-4},{-4,-4,-1},{-4,-4,-2},{-4,-4,-3},{-4,-4,-4}};void Swap(int &a, int &b){ int tmp = a = b =}int compute(char *a){ int stack[10], top = -1, i, s1, s2; for(i = 0; i & 7; i++) {
if(a[i] & 0 && a[i] & 11) &stack[++top] = a[i];
s1 = stack[top--];
s2 = stack[top--];
if(s1 & s2) Swap(s1, s2);
switch(a[i]) {
case -1: &stack[++top] = s1 + s2;&
case -2: &stack[++top] = s1 - s2;&
case -3: &stack[++top] = s1 * s2;&
case -4: & if((s1 && s2) && (s1 % s2 == 0)) stack[++top] = s1 / s2;
& else return 0;
} } return (stack[top] == 24);&}void cout(char *a){ int stack[10], top = -1, i, s1, s2; for(i = 0; i & 7; i++) {
if(a[i] & 0 && a[i] & 11) &stack[++top] = a[i];
s1 = stack[top--];
s2 = stack[top--];
if(s1 & s2) Swap(s1, s2);
switch(a[i]) {
case -1: &stack[++top] = s1 + s2;&
printf("%d + %d = %d\t", s1, s2, s1+s2);
case -2: &stack[++top] = s1 - s2;
printf("%d - %d = %d\t", s1, s2, s1-s2);
case -3: &stack[++top] = s1 * s2;
printf("%d * %d = %d\t", s1, s2, s1*s2);
case -4: &if(s1 % s2 == 0) stack[++top] = s1 / s2;
printf("%d / %d = %d\t", s1, s2, s1/s2);
} }}int main(void){ int data[4], i, j, k, int flag = 0; for(i = 0; i & 4; i++) {
scanf("%d", &data[i]); } printf("开始计算,请稍后...\n"); for(i = 0; i & 24; i++) {
RPN[0] = data[operdata[i][0]];
RPN[1] = data[operdata[i][1]];
RPN[3] = data[operdata[i][2]];
RPN[4] = data[operdata[i][3]];
for(j = 0; j & 64; j++)
RPN[2] = oper[j][0];
RPN[5] = oper[j][1];
RPN[6] = oper[j][2];
flag = compute(RPN);
cout(RPN);
printf("\n");
RPN[0] = data[operdata[i][0]];
RPN[1] = data[operdata[i][1]];
RPN[2] = data[operdata[i][2]];
RPN[3] = data[operdata[i][3]]; &&
for(j = 0; j & 64; j++)
RPN[4] = oper[j][0];
RPN[5] = oper[j][1];
RPN[6] = oper[j][2];
flag = compute(RPN);
cout(RPN);
printf("\n");
} } if(!flag) {
printf("计算结束,无更多解法...\n"); } return 0;}调试运行无误满意请采纳,谢谢。
等待您来回答
编程领域专家}

我要回帖

更多关于 求大神ps的后果 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信