C#判断程序是否正在运行
 string path = "";
Process[] ps = Process.GetProcessesByName("程序1");
foreach (Process p in ps)
{
        path = p.MainModule.FileName.ToString();
 if (path == AppDomain.CurrentDomain.BaseDirectory + "程序1.exe")
        {
                MessageBox.Show(null, "不能重复开启!。", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.Exit();//退出程序
                return;
        }
}

有这么一段代码去限制同一目录的程序不能重复开启;
在没打开我的“程序1”的情况下,我用VS调试的时候,运行可以通过;
在没打开我的“程序1”的情况下,我直接点击exe文件运行时,就会弹出提示;
这是为什么呢?

1个回答

             //获取名称为ZLCHSLisComm的所有进程
            Process[] ps = Process.GetProcessesByName("程序1");
            string[] path = new string[ps.Length];
            for (int i = 0; i < ps.Length; i++)
            {
                //获取每个进程的路径
                path[i] = ps[i].MainModule.FileName.ToString();
            }
            //判断路径中是否有重复
            if (IsRepeat(path))
            {
                MessageBox.Show(null, "不能重复开启!", "系统提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.Exit();//退出程序
                return;
            }

已经完成了,只要保证点击exe文件运行时是正确的就好了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C#怎么判断外部exe程序运行结束
具体的内容是 1调用外部程序(已经实现); 2程序导入外部文件(已经实现) 现在的问题是 1如何判断外部exe程序已经运行完毕,但是还没有退出,例如用Kugou听歌,音乐听完了,不再放歌了,但是Kugouo还在,那么如何判断音乐听完了,但是Kugou还没退出的状态。 2在1的基础上把exe程序关闭。
c# 怎么样才能只运行一个实例? 不允许多开
网上的方法都试过了 不行 把程序的名字改了 就又可以多开了 我的想法是打开第一个程序的时候 在进程里面创建一个隐藏的进程 在打开的时候判断下进程存在不存在 程序关闭的时候创建的进程也会立即关闭 或者有什么更好的办法
是否提高了C#应用程序的健壮性同时就降低了CPU的性能?
我是基于DoNetFrameWork4.0写的一个WinForm程序,在测试程序健状性时我在程序多写了几个判断语句,一运行,我靠,CPU性能一下就升到了90%多,太吓人了,用的C#语言写的,我知道C#在DoNetFrameWork中要先编译成"微软公共语言",再编译成"二进制"给CPU执行,我只是在一个if()的里面加了一个或者:即if(||),原文如下:if (((biaozhunJiandanSqlText1021 == stuJiandan102[0]) && (biaozhunJiandanSqlText1022 == stuJiandan102[1]) && (biaozhunJiandanSqlText1023 == stuJiandan102[2]) && (biaozhunJiandanSqlName102 == QuizHelper.JianDanSqlName2)) || ((biaozhunJiandanSqlText1024 == stuJiandan102[0]) && (biaozhunJiandanSqlText1025 == stuJiandan102[1]) && (biaozhunJiandanSqlText1026 == stuJiandan102[2]) && (biaozhunJiandanSqlName102 == QuizHelper.JianDanSqlName2))),程序的性能怎么就大大降低了!我真无语了,微软的东西按理说应该是完美的,这也太坑爹了!安德斯·海尔斯伯格,既然你身为Delphi之父的同时你又是C#之父,你在地球上这么"父",既然你号称在地球上你对汇编语言的理解最深刻,既然你综合了Delphi、VB、C、C++并且借鉴了JAVA的基于DoNetFrameWork的C#语言怎么就还不完美不和谐呢?
c#模拟安装程序,如何在启动前判断系统有无.net4.0?
仿照vs自带的安装向导,模拟了一个安装程序,根据系统位数去下载不同的安装包进行解压并生成桌面快捷方式。 有些客户机器未安装.net4.0,导致运行失败。 如何在程序启动前进行安装.net4.0? (让我用vs自带的安装向导就算了,老板觉得不好看,不愿意用)
C#异步线程回调问题,请大神帮忙
问大神一个关于异步线程回调的问题 程序运行后执行主线程的第一次循环,执行到代码A后,调用线程B异步执行 主线程继续执行 主线程第一次循环执行完后,执行第二次循环, 然后执行到代码A后 判断B线程的执行状态,如果B线程没有完成,则主线程等待B线程执行完成后再继续向下执行 以此反复 我这边写了B线程回调函数中将判断条件设为true,然后在B线程前面对这个条件进行了判断,发现没有用 不知道怎么回事儿 大神帮忙看下怎么做才能实现我想要的效果
日志流输入自动更改位置 C#
两个应用程序A、B,两个程序都有运行日志 A程序做一些业务处理, B程序纯粹负责监控A程序是否运行、重启A程序 B程序每2分钟获取A程序的日志文件修改时间,判断两分钟内是否修改过,没有修改的重启A程序,平时没什么问题,但每三个月之后,A程序就把日志写到B程序的日志文件里了,导致A程序一直重启,然后手动把两个程序关闭启动后就正常了,还有两个程序的日志文件名一样,这是什么原因导致的?
c#服务器段测量数据,多个客户端实时同步显示
我有一台服务器,运行用c#写的程序通过串口连接设备实时采集数据。 我希望从其他任何电脑利用客户端程序实时动态的显示服务器上采集的数据。 如果用数据库实现的话,客户端程序不方便判断哪些数据是新数据,而且效率也很低。 于是想用Socket实现。本人小白啦,对Socket只是有耳闻而已。 在网上查了查资料,好像基本上就是两种模式。 1.Socket广播。 我的理解就是服务器向网内广播地址发送一条消息,路由器会在网内自动转发。网内的客户端被动的接收消息,刷新数据就可以了。 2.服务器打开并监听端口,被动接收客户端的请求,再响应。 但是第一种的做法,我担心当数据采集频率较高,或未来有多台以此种方式实现的服务器时,大量的广播信息会不会对网络造成负担。而且我们公司的内网是多个网段,用多台三层交换机连接到一起的。虽然IP互相都能Ping通,但是不知道广播数据能否转发到其他网段。而且广播貌似用UDP协议,看网上的解释,好像这种协议不能保证数据的先后,但我需要客户端就像心电图一样,显示一个连续的波形。第二种做法的话,需要客户端不停的发送请求,当客户端请求的频率和数据采集的频率不一致时,服务器端还要考虑是否已给给此客户端发送过最新的数据。而且当客户端数量较多的时候,会不会对服务器端程序造成压力,影响数据采集进程。 我理想的模式就是,服务器采集到数据之后,直接将数据发送到某个端口。客户端监听服务器的端口,当服务器端口数据有变化时,就将数据获取并显示出来。 看起来和上面第一种模式有些类似。但是我不希望广播,是通过客户端监听实现。
C#BUg或者自定类不能重复赋值?详细见描述!
首先我自定义了一个类keyword,里面有个类成员 public static int flag { get; set; } 下面是问题: 我在主窗口使用了一个timer控件,判断当falg==1的时候执行timer内的代码。如下 private void timer1_Tick(object sender, EventArgs e) { if (KeyWord.flag==1 { w2.Show(); groupBox1.Controls.Clear(); groupBox1.Controls.Add(w2); KeyWord.flag1 = 0; } } 这里的flag的赋值是在窗体控件里进行的,问题来了。运行程序后第一次执行任务无错误,但是第二次在窗体控件内给flag赋值1后主窗口timer内的事件就没有再执行。
谁会啊,不胜感激。同时运行几个死循环的.py文件,设置pycharm允许同时运行除外,毕竟不利于用户体验。
![图片说明](https://img-ask.csdn.net/upload/201910/11/1570764654_226893.png) ``` import os lst = os.listdir(os.getcwd()) # 获取当前目录下所有的文件名 for c in lst: if os.path.isfile(c) and c.endswith('.py') and c.find("run")== -1: #判断文件名是以.py结尾的,并且去掉run.py文件 print(c) #查看文件 os.system('python {}'.format(c)) #相当于在终端执行文件 python main.py ``` 用这段代码的问题就是,第一个0.py文件运行后,因为是一个死循环的程序,所以后面的文件一直不能运行,而且后面的文件也是死循环的文件。
C语言,程序结构 程序不能正常运行
#include <stdio.h> #include <stdlib.h> #define num 100 #define OK 1 typedef int Status; typedef char DataType; typedef struct node { DataType data; struct node *lchild,*rchild; }BinTNode,*BinTree; int found; BinTNode *p; /*****************建立二叉树*****************/ Status CreateBiTree(BinTree &bt) //1.按照先序遍历次序递建立二叉树 { char ch; printf("ch="); scanf("%c",&ch); getchar(); if (ch==' ') bt=NULL; //程序中直接输入空格停止 else { bt=(BinTNode *)malloc(sizeof(BinTNode)); bt->data=ch; //生成根结点 printf("请输入左子树:\n"); CreateBiTree(bt->lchild); printf("请输入右子树:\n"); //构造左子树 CreateBiTree(bt->rchild); //构造右子树 } return OK; } /*****************中序遍历二叉树*****************/ Status Inorder(BinTree bt) //中序遍历算法 { BinTNode *stack[num]; //定义栈数组 int top=0; //初始化栈 stack[top]=bt; do { while(NULL!=stack[top]) //扫描根结点及其所有的左结点并入栈 { top=top+1; stack[top]=stack[top-1]->lchild; } top=top-1; //退栈 if(top>=0) //判断栈是否为空 { printf("%c",stack[top]->data); //访问结点 stack[top]=stack[top]->rchild; //扫描右子树 } }while(top>=0); return OK; } /*Status Inorder(BinTree bt) //先序遍历算法 { BinTNode *stack[num]; //定义栈数组 int top=0; //初始化栈 stack[top]=bt; do { while(NULL!=stack[top]) //扫描根结点及其所有的左结点并入栈 { top=top+1; printf("%c",stack[top]->data); stack[top]=stack[top-1]->lchild; } top=top-1; //退栈 if(top>=0) //判断栈是否为空 { printf("%c",stack[top]->data); //访问结点 stack[top]=stack[top]->rchild; //扫描右子树 } }while(top>=0); return OK; } */ /*****************求指定节点路径*****************/ BinTree NodePath(BinTree bt, BinTNode *ch) //3.求二叉树指定结点的路径 { typedef enum{FALSE,TRUE}boolean; BinTNode *stack[num];//定义栈 int i,top,tag[num]; boolean find;//定义布尔类型变量 BinTNode *s; find=FALSE;//初始化 top=0; s=bt; do {while(s!=NULL) { top++; stack[top]=s; tag[top]=0; s=s->lchild; } if(top>0) {s=stack[top]; if(tag[top]==1) { if(s==ch) {for(i=1;i<=top;i++) printf("->%c",stack[i]->data); find=TRUE; }else top--; s=stack[top]; } if(top>0&&!find) { if(tag[top]!=1) { s=s->rchild;//扫描右子树 tag[top]=1; } else s=NULL; } } }while(!find&&top!=0); return s; } void FindBT(BinTree bt,DataType x) { if((bt!=NULL)&&!found) { if(bt->data==x) { p=bt; found=1; } else { FindBT(bt->lchild,x); FindBT(bt->rchild,x); } } } BinTNode *Findx(BinTree bt,DataType x) { int found=0; BinTree p=NULL; FindBT(bt,x); return(p); } /*****************求二叉树的深度*****************/ int Depth(BinTree bt) //4.求二叉树的深度 { int h,lh,rh; if (bt==NULL) h=0; else { lh=Depth(bt->lchild); rh=Depth(bt->rchild); if (lh>=rh) h=lh+1; else h=rh+1; } return h; } /*****************求叶子节点的个数*****************/ int Leaf(BinTree bt) //5.求二叉树的叶子结点个数 { if (bt==NULL) return 0; else if (bt->lchild==NULL&&bt->rchild==NULL) return OK; else return Leaf(bt->lchild)+Leaf(bt->rchild); } /*****************调换左右子树*****************/ BinTNode *huhuan(BinTNode *p)//6.将p指针指向的二叉树的左右子树进行互换 {BinTNode *stack[num];//指针类型的堆栈 int k=0; stack[k]=NULL; if(p!=NULL)//交换p结点的左右孩子 { k++; stack[k]=p->lchild; p->lchild=p->rchild; p->rchild=stack[k]; p->lchild=huhuan(p->lchild); p->rchild=huhuan(p->rchild); } return (p); } /*****************主函数*****************/ void main() { BinTree bt; char ch1; int xz=1,sd=0,yz=0; while(xz) { printf(" 建立二叉树并求指定结点路径 \n"); printf("============================\n"); printf(" 1.建立二叉树的存储结构 \n"); printf(" 2.求解二叉树的中序遍历 \n"); printf(" 3.求二叉树指定结点的路径 \n"); printf(" 4.求二叉树的深度 \n"); printf(" 5.求二叉树的叶子结点个数 \n"); printf(" 6.将二叉树左右子树交换 \n"); printf(" 0.退出系统 \n"); printf("============================\n"); printf(" 请选择:(0-6) \n"); scanf("%d",&xz); getchar(); switch(xz) { case 1: printf("请输入根节点:\n"); CreateBiTree(bt); printf( "二叉树的链式存储结构建立完成!\n"); break; case 2:printf("该二叉树的中序遍历序列是:\n"); Inorder(bt); printf( "\n"); break; case 3:printf( "请输入要求路径的结点值:\n" ); ch1=getchar(); p=NULL; found=0; Findx(bt,ch1); if(p!=NULL) NodePath(bt,p); else printf( "没有要求的节点! \n" ); printf( "\n" ); break; case 4:sd=Depth(bt); printf( "该二叉树的深度为:%d \n ",sd ); printf("\n"); break; case 5:yz=Leaf(bt); printf( "该二叉树的叶子节点数为:\n%d \n",yz ); printf( "\n" ); break; case 6: bt=huhuan(bt); printf( "该二叉树的左右结点已交换成功,其中序遍历序列是:\n" ); Inorder(bt); printf( "\n" ); break; } } }
VScode出现{prelaunchtask“g++”已终止,退出代码为1}。
VScode已经正常配置(大概吧。。因为写其他程序并调试时都没有出现问题) 但在调试运行如下程序时出现报错{prelaunchtask“g++”已终止,退出代码为1}。 就是一个简单的判断方形矩阵是否为上三角矩阵的题目 ![图片说明](https://img-ask.csdn.net/upload/202004/05/1586065649_463531.png) ![图片说明](https://img-ask.csdn.net/upload/202004/05/1586065672_426208.png) ![图片说明](https://img-ask.csdn.net/upload/202004/05/1586065963_797427.png) 控制调试台输出如下 ![图片说明](https://img-ask.csdn.net/upload/202004/05/1586065941_987467.png) 而如果不用类来完成就能正常运行 而且在visual studio中也是能正常运行的小白迷茫。。 ``` #define MAXSIZE 6 #include <iostream> using namespace std; bool isUTM(int (*rows)[MAXSIZE]) { for (int i = 0; i < MAXSIZE; i++) { for (int j = 0; j < MAXSIZE; j++) { if (i - j > 0) { if (*(*(rows+i)+j) != 0) return false; } } } return true; } int main(void) { int matrix[MAXSIZE][MAXSIZE] = {{1, 1, 1, 1, 1, 1}, {0, 1, 1, 1, 1, 1}, {0, 0, 1, 1, 1, 1}, {0, 0, 0, 1, 1, 1}, {0, 0, 0, 0, 1, 1}, {0, 0, 0, 0, 0, 1}}; int (*rows)[MAXSIZE] = matrix; if (isUTM(rows)) { cout << "这是一个上三角矩阵!" << endl; } else { cout << "这不是一个上三角矩阵!" << endl; } getchar(); return 0; } ```
.net 程序点击运行之后没有反应,.net 程序无法安装
这两天之前弄的客户端软件在两个用户那边的出现了问题。 用户1:win 8.1 中文版 64bit 用户问题:用户安装软件之后,点击运行之后,毫无反应,也没有报错。 用户2:MAC 电脑,MAC OS 和win10 双系统 用户问题:用户软件安装的时候,要求安装.net 3.0,.net 2.0等程序,但是下载之后, 却报问题0x800f081f. 在我的启动代码部分有很多逻辑校验。 启动代码如下: ```c# using MarketSys.OrderManagement; using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using System.Windows.Forms.VisualStyles; using MarketBL; namespace MarketSys { static class Program { [STAThread] static void Main() { // MessageBox.Show("I'm in"); try { //声明数据库变化类,本地校验码函数集类 DBChangeClass dbChangeFunc = new DBChangeClass(); PINManageFunc pinFunc = new PINManageFunc(); //判断数据库是否需要更改 bool bol_dbEvolTable = dbChangeFunc.existsEvolutionTable(); if (bol_dbEvolTable) { //获取更改的版本信息 bool bol_versionInfoEqual = dbChangeFunc.getVersionInfo(); if (bol_versionInfoEqual) { //判断本地数据库中是否存在本地校验码 bool bol_PINExists = pinFunc.isPinExisted(); if (bol_PINExists) { //如果存在本地校验码,则进入本地校验 LocalVerify pinVerify = new LocalVerify(); pinVerify.ShowDialog(); } else { //如果不存在本地校验,则进入本地校验设置 PINSetForm pinset = new PINSetForm(); pinset.ShowDialog(); } } else { //获取数据库更改列表 List<string> dbList = dbChangeFunc.evolutionList(); //执行数据库更改 dbChangeFunc.evolutionExecute(dbList); return; } } else { //如果不存在数据库更改信息表,则创建 dbChangeFunc.evolTableCreate(bol_dbEvolTable); return; } ////Console.WriteLine("HelloWorld"); ////Console.ReadKey(); //Application.EnableVisualStyles(); //Application.SetCompatibleTextRenderingDefault(false); //Application.Run(new Main()); } catch (Exception ex) { throw new Exception("1" + ex); } //Application.EnableVisualStyles(); //Application.SetCompatibleTextRenderingDefault(false); //Application.Run(new Main()); } } } ```
读取串口数据添加了一个TimeoutException异常处理方法,出现了dll异常
报错信息: 在 System.TimeoutException中第一次偶然出现的"System.dll"类型异常。 之后程序就不在接收数据了,也不出现程序报错,必须重新启动程序,才能继续接收数据。 错误一般会在程序运行1天之后出现假死现象。是不是因为我只是把错误信息记下来了,并没有进行错误处理?我的逻辑是,错误之后,丢弃这一组数据,然后重新进行数据接收。 跪求,本人无法解觉了现在。 相关代码: //开始接收 public void StartReceive() { int temp = 0; while (true) { try { temp = sp.ReadByte(); } catch (TimeoutException ex) { LogTool.WriteEduAppLog(ex.Message, ex.StackTrace); } } //将报错相关信息写入本地的log文档 public class LogTool { //当前程序的日志文件目录 static string strAppLofDir = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + "logInfo.txt"; public static void WriteEduAppLog(string ErrorReason, string StackTrace) { WriteLog(ErrorReason, StackTrace, "EduApp.log"); } private static void WriteLog(string ErrorReason, string StackTrace, string logFileName) { //判断有没有日志目录,没有就创建 DirectoryInfo directoryInfo = new DirectoryInfo(strAppLofDir); if (!directoryInfo.Exists) directoryInfo.Create(); StringBuilder logInfo = new StringBuilder(""); string currentTime = System.DateTime.Now.ToString("[yyyy-MM-dd HH:mm:ss]"); logInfo.Append("\n").Append(currentTime).Append(":").Append(ErrorReason).Append("\n").Append(StackTrace); System.IO.File.AppendAllText(strAppLofDir + logFileName, logInfo.ToString()); } }
C语言怎样编写程序运行完后,不自动结束,而是返回程序的开始的主菜单?
我的程序运行完一个功能后按任意键就退出了,而不是返回主菜单 代码如下,应该怎么改?(具体一点,菜鸟一个)多谢! #include<stdio.h> #include<stdlib.h> #include<string.h> #include <windows.h> #include<conio.h> #define LENTEL sizeof(tel) #define ID struct tel struct tel { char name[15]; char tele[11]; char style[15]; char mail[20]; ID * next; }; ID *id = NULL; /*读取telephone.txt文件中的内容创建学生链表*/ ID* create() { ID *head; ID *p1,*p2; p2 = (ID*)malloc(LENTEL); head = p2; FILE *fp; if((fp = fopen("telephone.txt","r")) == NULL) { printf("联系人文件打开错误,请将telephone.txt放置与程序同一目录下!\n"); exit(0); } while(!feof(fp)) { p1 = (ID*)malloc(LENTEL); fscanf(fp,"%s%s%s%s",p1->name,p1->tele,p1->style,p1->mail); p1->next = NULL; p2->next = p1; p2 = p1; } fclose(fp); return head; } ID* findbyname(char name[]) { ID* p = id; ID* temp = NULL; while (p!=NULL) { if(strcmp(name,p->name) == 0) { temp = p; break; } else { p = p->next; } } return temp; } ID* findbytele(char tele[]) { ID* p = id; ID* temp = NULL; while (p!=NULL) { if(strcmp(tele,p->tele) == 0) { temp = p; break; } else { p = p->next; } } return temp; } /*判断这个联系人是否存在*/ bool Istel(char name[]) { ID *p = id->next; bool flag = false; while (p != NULL) { if(strcmp(p->name,name) == 0) { flag = true; } p=p->next; } return flag; } int add() { menu(); ID *newtel = NULL; ID *p = id; char tel_name[15]; char tel_tele[11]; char tel_style[15]; char tel_mail[20]; printf("\n------- 请输入学生基本信息 --------\n"); printf("姓名 电话 类别 邮箱\n"); printf("--------------------------------------\n"); scanf("%s%s%s%s",tel_name,tel_tele,tel_style,tel_mail); if(!Istel(tel_name)) { newtel = (ID*)malloc(LENTEL); strcpy(newtel->name,tel_name); strcpy(newtel->tele,tel_tele); strcpy(newtel->style,tel_style); strcpy(newtel->mail,tel_mail); newtel->next = NULL; for(p=p->next; p->next!=NULL; p=p->next); p->next = newtel; printf("\n联系人已添加成功!\n"); } else { printf("\n该联系人姓名已存在!\n"); } getch(); return 0; } void Print_Inquire_All() { void menu_print_out(); ID *p1 = id->next; menu_print_out(); while (p1!=NULL) { printf("%s\t%s\t%s\t%s\n",p1->name,p1->tele,p1->style,p1->mail); p1 = p1->next; } system("pause"); } void menu_print_out() { printf("\n---------------------------------\n"); printf("\n---------------------------------\n"); } /*主菜单*/ void menu(void) { void ReadBack(); printf(" ╭════════╮ \n"); printf("╭══════╣通讯管理系统V1.0╠══════╮\n"); printf("║ ╰════════╯ ║\n"); printf("║ 【1】添加数据 【3】退出系统 ║\n"); printf("║ ║\n"); printf("║ 【2】查询数据 ************* ║\n"); printf("║ ║\n"); printf("╰══════════════════════╯\n"); printf("◎请输入功能前的序号进入相应的工具:【 】\b\b"); int a = 0; a = getchar(); while(a!='1'&&a!='2'&&a!='3') { printf("error! please input the right number!\n"); putchar('\a'); getchar(); printf("◎请重新输入功能前的序号进入相应的工具:【 】\b\b"); a = getchar(); } switch(a) { case '1': add(); break; case '2': Print_Inquire_All(); case '3': ReadBack(); exit(0); break; } getchar(); } /*退出程序时将数据写回telephone.txt进行更新*/ void ReadBack() { FILE *TEL = fopen("telephone.txt","w"); ID *te = id->next; while (te != NULL) { fwrite((char*)&id,sizeof(ID),1,TEL); te = te->next; } fclose(TEL); } void Lunch() { id = create(); menu(); } void main() { SetConsoleTitle("C语言通讯录管理系统"); Lunch(); }
C语言 程序中想要调用grade_panduan函数用于结构体类型数组来判断成绩是否合理 但总是显示错误 printf("高等数学:"); scanf("%d",&ST[i].math); int grade_panduan(int ST[i].math);
#include<stdio.h> #include<string.h> #define ST_NUM 2//学生数 在运行开始前修改 //int number panduan(char b); int grade_panduan(int a); typedef struct { char num[10];//学号 char name[9];//姓名 int xuefen;//获得学分 int math;//高等数学成绩 int pe;//大学体育成绩 int chinesehistory;//中国近代史成绩 int daolun;//软件技术导论成绩 int english;//大学英语 int c_program;//C语言程序设计 float average;//平均分 }student; student ST[ST_NUM]; void main() { int i,j; printf("请输入%d个学生的信息;\n",ST_NUM); for(i=0;i<ST_NUM;i++) { printf("请输入学号:"); scanf("%s",&ST[i].num); printf("姓名:"); scanf("%s",&ST[i].name); printf("高等数学:"); scanf("%d",&ST[i].math); int grade_panduan(int ST[i].math); printf("大学体育:"); scanf("%d",&ST[i].pe); printf("中国近代史纲要:"); scanf("%d",&ST[i].chinesehistory); printf("软件技术导论成绩:"); scanf("%d",&ST[i].daolun); printf("大学英语:"); scanf("%d",&ST[i].english); printf("C语言成绩:"); scanf("%d",&ST[i].c_program); } for(i=0;i<ST_NUM;i++) { ST[i].xuefen=5*(ST[i].math>=60)+(ST[i].pe>=60)+2*(ST[i].chinesehistory>=60)+2*(ST[i].daolun>=60)+4*(ST[i].english>=60)+4*(ST[i].c_program>=60); ST[i].average=(ST[i].math+ST[i].pe+ST[i].chinesehistory+ST[i].english+ST[i].c_program)/6; } printf("学号\t姓名\t"); printf("学分\t数学\t体育\t中国近代史纲要\t导论\t大学英语 C语言\t平均分\n"); for (i=0;i<ST_NUM;i++) { printf("%s\t%s\t",ST[i].num,ST[i].name); printf("%d\t",ST[i].xuefen); printf("%d\t",ST[i].math); printf("%d\t",ST[i].pe); printf("%d ",ST[i].chinesehistory); printf("%d\t",ST[i].daolun); printf("%d\t",ST[i].english); printf("%d\t",ST[i].c_program); printf("%f\n",ST[i].average); } } int grade_panduan(int a) { if(0<=a<=100) return 1; else { printf("成绩输入错误"); } return 0; }
有符号加法,无符号减法溢出处理的C程序,并运用条件编译指令。。
这是我们老师布置的实验题,请教大神。。 实验名称:跨系统的整型数据类型运算 实验目的:理解不同系统之间存在数据类型的不兼容,理解C语言中为不同系统设计统一数据类型头文件,比如stdint.h。 实验内容: 1、编码实现一个**.c 和**.h两个文件,这**.C中的函数可以让其它程序能过包含**.h引用。“**”根据个人喜好命名。 2、只在小端的系统上运行程序; 3、在**.c中实现以下功能的函数, 函数1: int32_t sat_add(int32_t x, int32_t y, int32_t* flag) 带溢出判断的有附号加法,正溢出时*flag返回TMax, 负溢出时返回TMin;没有溢出时函数返回运算结果, *flag返回NULL 函数2: uint32_t sat_sub(uint32_t x, uint32_t y, int32_t* flag) 无符号减法,带溢出判断的函数,只要溢出, *flag返回-1;没有溢出,*flag返回NULL, 函数返回运算结果; 4、在**.h中声明函数;请使用条件编译指令 #ifdef #define, #else, #ifelse, #endif 来防止头文件被多次重复包含 5、请学习使用“extern”关键字。百度上有。使得程序在C++中也能被调用。
编译报错为[Error] ld returned 1 exit status,但经检查无在运行的程序
//【日期】黑色星期五 #include "stdio.h" #include <stdlib.h> #include "math.h" extern int a; int fa(int b) //判断为星期几的函数,返回值x {int c=13,x,y=0; if(b>12||b<1){ printf("month is error.\n"); goto out; } if(a<=1900){ printf("year is error.\n"); goto out; } if(((b==1||b==3||b==5||b==7||b==8||b==10||b==12)&&c>31)||(((a%4==0&&a%100!=0)||(a%400==0))&&b==2&&c>29)||((a%4!=0||a%100==0)&&c>28)||((b==6||b==4||b==9||b==11)&&c>31)||(c<1)){ printf("day is error.\n"); goto out; } switch(b) { case 1:x=c%7+1;break; case 2:x=(31+c)%7+1;break; case 3:x=(31+28+c)%7+1;break; case 4:x=(31+28+31+c)%7+1;break; case 5:x=(31+28+31+30+c)%7+1;break; case 6:x=(31+28+31+30+31+c)%7+1;break; case 7:x=(31+28+31+30+31+30+c)%7+1;break; case 8:x=(31+28+31+30+31+30+31+c)%7+1;break; case 9:x=(31+28+31+30+31+30+31+31+c)%7+1;break; case 10:x=(31+28+31+30+31+30+31+31+30+c)%7+1;break; case 11:x=(31+28+31+30+31+30+31+31+30+31+c)%7+1;break; case 12:x=(31+28+31+30+31+30+31+31+30+31+30+c)%7+1;break; } if(a>2013)x+=(a-2013)/4+(a-2013); if(a<2013) { x-=(2016-a)/4+(2013-a)-7; x+=7*((2015-x)/7); } if(x>=7)x=x%7; out: return x; } //主函数判断某一年的13号是不是为星期五 int main() { int fa(int b) ; int i=0,j[10],b,s; scanf("%d",&a); for(b=1;b<13;b++){ if(fa(b)==5){ j[i]=b; i++; } } s=i; printf("There are %d Black Fridays in year %d.\n",i,a); printf("They are:\n"); for(i=0;i<s;i++){ printf("%d/%d/13\n",a,j[i]); } } ``` ```
C语言 数值模拟 LU分解法,求答疑
我用这一段C语言代码做LU分解法,请问当x2为什么等于一个这么小的数,而不是直接为0。有什么办法解决么? ``` //作品:多元一次方程组的计算 //作者:与你看日出 //日期:2009年4月25日 星期六 //说明:输出值只能是小数(最多六位),如x=1.876546 //Han: 初始设的最多未知数的个数,运行程序后只能比它的个数小 //hang:计算中途中自己改变的未知数的个数 //JUZHEN:初始的示例矩阵 #include <stdio.h> #include <math.h> #define Han 200//(可自设)多元一次方程组有n行n+1列(多的一列是等号右边的值),给出行数就能确定矩阵, #define JUZHEN {1,1,1,1,5},{1,2,-1,4,-2},{2,-3,-1,-5,-2},{3,1,2,11,0}//示例一个 main(){ int i,j,k,m,n,t,cf,hang=4; float temp; float AA[Han][Han+1]={JUZHEN};//定义所要计算的数组 do {//判断是否重试 for(i=0;i<hang;i++)//输出所定义的数组 { printf("\n"); for(j=0;j<hang+1;j++) { printf("%g\t",AA[i][j]); } } printf("\n"); printf("是否自己输入?是:1;否:0\n"); scanf("%d",&t); if(t==1)//判断是否自己输入数组 { printf("输入未知数(行数,其中列数=行数+1)的个数"); scanf("%d",&hang); for(i=0;i<hang;i++)//输入所定义的数组 { for(j=0;j<hang+1;j++) { printf("第%d行第%d列的数为:",i+1,j+1); scanf("%f",&AA[i][j]); } } } for(k=0;k<hang;k++)//这个大循环将数组的左下角转化为0 { while(AA[k][k]==0)//如果第K行K列的那个数为0,则加和重组一行。 { for(m=k+1;m<hang;m++) for(n=k;n<hang+1;n++) { AA[k][n]+=AA[m][n]; } } for(i=k;i<hang;i++)//将第K列下面变为1 { temp=AA[i][k]; for(j=k;j<hang+1;j++)//将每列变为1 { AA[i][j]/=temp; } } for(i=k+1;i<hang;i++)//将下面的数列与上面的数列相减使其下面为0 { for(j=0;j<hang+1;j++) { AA[i][j]-=AA[k][j]; } } } for(k=hang-2;k>=0;k--)//这个大循环将数组的右上角转化为0 { for(i=k+1;i<hang+1-1;i++)//将第i列上面变为0 { AA[k][hang+1-1]-=AA[k][i]*AA[i][hang+1-1]; AA[k][i]=0; } } for(i=0;i<hang;i++)//输出该矩阵(也就是多元一次方程组)的解 { printf("\n"); for(j=0;j<hang+1;j++) { printf("%g\t",AA[i][j]);![图片说明](https://img-ask.csdn.net/upload/202003/29/1585452095_251252.jpg) } } printf("\n未知数的值为:\n"); for(i=0;i<hang;i++)//输出该矩阵(也就是多元一次方程组)的解 { printf("x(%d)=\t%g\n",i+1,AA[i][hang+1-1]); } printf("\n"); printf("是否再试一次?是:1;否:0\n"); scanf("%d",&cf); } while(cf==1);//判断是否重试 } ``` ![图片说明](https://img-ask.csdn.net/upload/202003/29/1585452117_378517.png)这是运行结果 ![图片说明](https://img-ask.csdn.net/upload/202003/29/1585452157_58952.jpg)这是手算精确解
哥德巴赫猜想,c++,判断条件求助
程序体如下: #include <iostream> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int div(int a) ; int main(int argc, char** argv) { int a,b; for(a=4;a<=2000;a+=2){ for(b=2;b<a;b++) if(div (b)!=0) if(div(a-b)!=0) { cout<<a<<"="<<b<<"+"<<a-b<<endl; break; } } return 0; } int div(int a) { int c; if(a==2) return 1; if((a%2)==0) return 0; for(c=3;c<a;c+=2) if(a%c==0) return 0; return 1; } 想请教一下如果为什么在return 1;前加一个else程序就会运行出错呢?
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
我在支付宝花了1分钟,查到了女朋友的开房记录!
在大数据时代下,不管你做什么都会留下蛛丝马迹,只要学会把各种软件运用到极致,捉奸简直轻而易举。今天就来给大家分享一下,什么叫大数据抓出轨。据史料证明,马爸爸年轻时曾被...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
使用 Python 和百度语音识别生成视频字幕
文章目录从视频中提取音频根据静音对音频分段使用百度语音识别获取 Access Token使用 Raw 数据进行合成生成字幕总结 从视频中提取音频 安装 moviepy pip install moviepy 相关代码: audio_file = work_path + '\\out.wav' video = VideoFileClip(video_file) video.audio.write_...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
立即提问