做个复杂的东西
语言:最好是c语言要求
1.三则加减运算是他的核心如1+1+2=4 或1+1-1=1 符号不能固定,数字随机
2.前三个数不大于10 结果不能大于20小于0
3无条件循环100个,不能重复
4.询问是否导出,导出放桌面
5.输入答案就显示答案
可以不必全完成
但1.2.3必需完成 本帖最后由 ExiaGN001 于 2023-2-19 11:10 编辑
我就说下思路。
1.符号用随机数生成,1代表+,0代表-
随机数初始化 srand(time(NULL))调用rand()
2./3.
对于第i次生成,做以下操作:
通过rand()%10得到三个参数的值
通过rand()&1得到两个运算符
根据三个参数和运算符计算表达式,看结果是否满足条件
如果不满足条件,直接continue,i不变
否则遍历答案数组前i-1个个元素,检查是否重复(答案数组是100*6的二维数组,6个位置分别是3个参数,两个运算符和一个(正确的)计算结果)
如果有重复,直接continue,i不变
不然i自增1,将这回的结果计入答案数组
4.
如果导出,首先获取用户名(这个要用到winapi部分的函数)
然后用用户名按照这个格式生成桌面路径(仅限Windows)
C:\Users\[用户名]\Desktop
斜杠不分正反,字母不区分大小写
//如果程序就在桌面不用生成桌面路径,直接fopen([文件名],"r");
利用fopen和fprintf输出上文的答案数组即可
记得fclose
5.预先把答案算出来,和输入值比较即可。
#include<bits/stdc++.h>
#include<windows.h>
#include<shlobj.h>
using namespace std;
int ans;//最后的结果
int tmp;//当前查看的结果
/*
ans 和tmp的存储格式
0 1 2 3 4 5
操作数1 运算符1 操作数2 运算符2 操作数3 结果
*/
int cnt=0;
const int maxnum=10,minnum=0;
inline int create_optr()//生成一个运算符
{
return rand()%2;//0代表+ 1代表-
}
inline int create_num()//生成一个操作数
{
return rand()%(maxnum-minnum)+minnum;//maxnum=10 minnum=0
}
string getDesktopPath()//获取桌面位置
{
LPITEMIDLIST pidl;
LPMALLOC pShellMalloc;
char szDir;
if (SUCCEEDED(SHGetMalloc(&pShellMalloc)))
{
if (SUCCEEDED(SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &pidl))) {
// 如果成功返回true
SHGetPathFromIDListA(pidl, szDir);
pShellMalloc->Free(pidl);
}
pShellMalloc->Release();
}
return string(szDir);
}
int get_ans()//根据随机出来的操作数确定答案
{
int tmpans=tmp;
if(tmp)tmpans-=tmp;
else tmpans+=tmp;
if(tmp)tmpans-=tmp;
else tmpans+=tmp;
return tmpans;
}
bool check_dupi()//查重/查合法
{
if(tmp<0||tmp>20)return 0;
int issame;//is_same是关键字,所以没加下划线
for(int i=0;i<cnt;i++)
{
issame=0;
for(int j=0;j<6;j++)
{
issame+=(ans==tmp);
}
if(issame==6)return 0;//只要有一个匹配就返回0
}
return 1;
}
void output()//向终端
{
for(int i=0;i<100;i++)
{
printf("%d %c %d %c %d = %d\n",
ans,(ans?'-':'+'),
ans,(ans?'-':'+'),
ans,ans);
}
}
bool output_desktop()//检查结果
{
string pth=getDesktopPath();
char path;//Windows系统路径长度上限260,开275足够
for(int i=0;i<pth.size();i++)path=pth;
path='\0';
strcat(path,"\problem.txt");
cout<<path<<"\n";
FILE *fp=fopen(path,"w");
for(int i=0;i<100;i++)
{
fprintf(fp,"%d %c %d %c %d = %d\n",
ans,(ans?'-':'+'),
ans,(ans?'-':'+'),
ans,ans);
}
fclose(fp);
char code="start ";
strcat(code,path);
system(code);
}
int main()
{
srand(time(NULL));
while(cnt<100)
{
tmp=create_num();
tmp=create_optr();
tmp=create_num();
tmp=create_optr();
tmp=create_num();
tmp=get_ans();
if(check_dupi())
{
for(int i=0;i<6;i++)
{
ans=tmp;
}
cnt++;
}
}
//output();
cout<<"是否导出(Y/N)?";
char optr;
cin>>optr;
if(optr%32+64=='Y')
output_desktop();
else
;//啥都不干
return 0;
}
完成4.5的有其他东西
4.度盘不限速
5.编程类书籍合计(电子)
5一部随机阿里盘的电影 呃…… 3 做不到
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int randbetween(int n, int m) {
// n下限,m上限,n<=随机数<m
return rand() % (n - m) + m;
}
int randnum() {
return randbetween(0, 11)
}
int calc(int n1, int fh, int n2) {
if (fh == 0) // 加法
return n1 + n2;
else // 减法
return n1 - n2;
}
int main() {
srand((unsigned)time(NULL));
for (int i=0; i<100; i++) {
int f1 = randbetween(0, 2) // 符号
char s1, s2;
if (f1 == 0) s1 = '+';
else s1 = '-';
if (f2 == 0) s2 = '+';
else s2 = '-';
int f2 = randbetween(0, 2) // 符号2
int a = randnum();
int b = randnum();
int c = randnum();
int c1 = calc(a, f1, b);
int c2 = calc(c1, f2, c2);
if (c2 < 21) && (c2 > -1)
printf("%d %c %d %c %d = %d", a, s1, b, s2, c, c2);
}
return 0;
}
////抛砖引玉
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int a,b,c,sg,sum,d,ct=0,i,j;
srand(time(0));
for(i=0,ct=0;i<100;)
{
sum=-1;
while(sum<0||20<=sum)
{
a=rand()%11;
sg=rand()%3;
b=(rand()%11)*(sg?1:-1);
sg=rand()%3;
c=(rand()%11)*(sg?1:-1);
sum=a+b+c;
}
for(j=0;j<ct;j+=1)
{
if(a==a&&b==b&&c==c)break;
}
if(ct==j)
{
a=a,b=b,c=c,sum=a+b+c;
ct+=1;
i+=1;
}
}
for(i=0;i<100;i+=1)printf("%d%s%d%s%d=%d\n",a,b<0?"-\b":"+",b,c<0?"-\b":"+",c,sum);
// scanf("%d",&d);
// if(d==sum)printf("yes");
// else printf("no");
return 0;
}
歌者文明清理员 发表于 2023-2-17 19:45
3 做不到
运行不了,有点问题 ExiaGN001 发表于 2023-2-18 10:13
我就说下思路。
1.符号用随机数生成,1代表+,0代表-
随机数初始化 srand(time(NULL))调用rand()
1小时了,请问好了吗,对啦既然你是svip,换一个好了,听歌软件ios+win+andriod+web四选二如何 匿名者 发表于 2023-2-18 12:13
1小时了,请问好了吗,对啦既然你是svip,换一个好了,听歌软件ios+win+andriod+web四选二如何
再等等 自己的作业自己做,自己的屁股自己擦,让别人写作业还不让别人知道自己是谁?见不得人? Mike_python小 发表于 2023-2-19 10:00
自己的作业自己做,自己的屁股自己擦,让别人写作业还不让别人知道自己是谁?见不得人?
不是作业,{:10_291:}
你请我愿的,我也付出鱼碧了
Mike_python小 发表于 2023-2-19 10:00
自己的作业自己做,自己的屁股自己擦,让别人写作业还不让别人知道自己是谁?见不得人?
编程我都是自己学得,时间本来就不多,五天在学校,在家里还有我弟,我学校都不上信息课的,哪来的作业,要有也是python,怎么可能是c,匿名是因为不好意思,技术差,麻烦不要自以为事,不要随意搞我心态 ExiaGN001 发表于 2023-2-19 09:47
再等等
谢谢 匿名者 发表于 2023-2-19 13:06
谢谢
1~4项已经好了,第五项说的再详细些行吗 本帖最后由 Mike_python小 于 2023-2-19 13:30 编辑
匿名者 发表于 2023-2-19 13:04
编程我都是自己学得,时间本来就不多,五天在学校,在家里还有我弟,我学校都不上信息课的,哪来的作业 ...
https://fishc.com.cn/space-uid-1030543.html
沐雨尘枫
是你吧
匿名是因为不好意思,没有作业
那你写这个程序是为了什么呢?
你自己一点代码都没有,哪怕有一点错误的代码代表了你有思考都行
我自以为是?我哪句话说我自己为是了?
是作业就自己承认,没必要躲躲藏藏,不是作业就自己先思考,放出自己的思考过程
不会的再问大家,这样谁都乐意为你解决的问题,而不是看着你那要求,跟完成任务一样为你解决你的问题或作业 匿名者 发表于 2023-2-19 13:00
不是作业,
你请我愿的,我也付出鱼碧了
恕我直言,我说话可能不太好听,50育碧根本没有实际意义,只是论坛里有一些大佬不图这些,也乐于助人,给你写了。这要放在一些群里,肯定是收费解决的 Mike_python小 发表于 2023-2-19 13:26
https://fishc.com.cn/space-uid-1030543.html
沐雨尘枫
只是单纯的需要
Mike_python小 发表于 2023-2-19 13:29
恕我直言,我说话可能不太好听,50育碧根本没有实际意义,只是论坛里有一些大佬不图这些,也乐于助人,给 ...
这点我赞同 ExiaGN001 发表于 2023-2-19 13:11
1~4项已经好了,第五项说的再详细些行吗
不用了,这是我答应的东西
https://www.aliyundrive.com/s/Wqg3WKuzL7Z
https://www.aliyundrive.com/s/kpmzMoeKKWR
https://wenjiu.lanzoum.com/iSqRW0nra5p 本帖最后由 ExiaGN001 于 2023-2-19 13:58 编辑
匿名者 发表于 2023-2-19 13:46
...
1,3均失效(
页:
[1]
2