c++编程题,求大神解答............谢谢啦...........

在一个数组中首先判断里的自符是否为回文字符,如果是在按其长度排序,若相同长度的则按ASCII码排序(用c++)求大神解救.......

suannai0314
鹳狸媛 楼主的这个问题解决了么?下边的答案能解决问题么?如果可以麻烦点击答案旁的√采纳哦~如果没有也可以将自己的答案贴上然后进行采纳的。
大约 6 年之前 回复

1个回答

花了一小时弄的,,,亲测。

 #include<iostream>
    using namespace std;
    bool judge(char *str);
    void sort(char *Selected[],int n);
    int Length(char *str);
    void print(char *Selected[],int n);
    int main()
    {
         const int N=6;
         char *p[N]={"f3dfg","1234321","232","sdfds","asdsa","asfxx"};
         char *Selected[N];
         int n=0;
         int i=0;
         for(i=0;i<N;i++)
         {
            if(judge(p[i])==false)
            {
                cout<<p[i]<<"不是回文字符!"<<endl;
            }
            else
            {
                cout<<p[i]<<"是回文字符!"<<endl;
                Selected[n]=p[i];
                n++;
            }
         }
         sort(Selected,n);
         print(Selected,n);
         return 0;
    }
    //判断字符串是否为回文字符函数
    bool judge(char *str)
    {
        bool flat=true;
        int acount=0;
        for(int i=0;*(str+i)!='\0';i++)
        {
            acount++;
        }
        for(int i=0;i<=(acount-1)/2;i++)
        {
            if(*(str+i)!=*(str+(acount-1)-i))
            {
                flat=false;
            }
        }
        return flat;
    }
    //排序函数
    void sort(char *Selected[],int n)
    {
        char* temp;
        int i,j,k;
        for(i=0;i<n-1;i++)
        {
            k=i;
            for(j=i+1;j<n;j++)
                if(Length(Selected[k])>Length(Selected[j]))k=j;
            if(k!=i)
            {temp=Selected[i];Selected[i]=Selected[k];Selected[k]=temp;}
        }
        for(i=0;i<n-1;i++)
        {
            k=i;
            for(j=i+1;Length(Selected[j-1])==Length(Selected[j]);j++)
                if(strcmp(Selected[k],Selected[j]))k=j;
            if(k!=i)
            {temp=Selected[i];Selected[i]=Selected[k];Selected[k]=temp;}
        }
    }
    //计算字符串长度的函数
    int Length(char *str)
    {
        int acount=0;
        for(int i=0;*(str+i)!='\0';i++)
        {
            acount++;
        }
        return acount;
    }
    //输出函数
    void print(char *Selected[],int n)
    {
        int i;
        for(i=0;i<n;i++)
        {
            cout<<Selected[i]<<endl;
        }
    }
tangqingyun
tangqingyun 非常感谢
大约 6 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
c++编程题,求大神解答............谢谢啦...........
在一个数组中首先判断里的自符是否为回文字符,如果是在按其长度排序,若相同长度的则按ASCII码排序(用c++)求大神解救.......
c语言编程问题 求大神解答
Maximum number • Write a program that outputs maximum and minimum number in 10 random numbers • Range of the random number is 1-1000 • Use the for loop 例子) 400 509 392 949 667 606 364 338 120 441 Maximum number is 996 Minimum number is 120 ![图片说明](https://img-ask.csdn.net/upload/201510/04/1443958116_527706.jpeg)
c语言编程 求大神 求解答
• Write a program that outputs a diamond shape • Use ‘*’, ‘ ‘, and new line character(‘\n’) • Use the for statement • The first line has four ‘ ‘ and one ‘*’ • The second line has three ‘ ‘ and three ‘*’ • The third line has two ‘ ‘ and five ‘*’ • The fourth line has one ‘ ‘ and seven ‘*’ • The fifth line has nine ‘*’, and the following line is in reverse![图片说明](https://img-ask.csdn.net/upload/201509/30/1443592257_477647.png)
请教C编程题,本人初学者,求大神解答,万分感谢
求大侠帮忙:C语言程序设计---编程题说明:以下所有题目程序应是非递归的) 1. 编写一个函数,输出整数m的全部素数因子。例如,m=120时,素数因子为:2,2,2,3,5 2. 请编写程序判断一个字符串是否是回文。若是回文,函数返回值为1,否则返回值为0.(回文是顺读和倒读都一样的字符串)。要求: 1) 编写sub()判断一字符串是否为回文 2) 在主函数中完成数据的输入与结果的输出 3.起泡排序是把大的元素向下移,也可以将小的元素向上移,请给出下移和上移过程交替的起泡排序程序,即双向起泡排序程序(一趟冒泡排序排好一个大数和一个小数)。假设元素采用顺序存储。要求: 1) 编写函数sort()实现排序。 2) 在主函数中完成数据的输入与结果的输出 4.N个学生M门课,所有学生的各门课程成绩已存入文件f1.dat,请计算每个学生的总分,并按总分降序的次序将每个学生名次、各门课程得分及总分输出到文件f2.dat。要求:在按总分求学生名次时,不得对学生原始数据排序。 5.编程实现将给定的一组整数采用选择排序法按由小到大的顺序排序。要求: 1) 编写函数create()根据已知整数数组构造一个单链表,假设结点只有一个整数数据域。 2) 编写函数sort()采用选择排序方法对已知链表进行排序。 3) 在主函数中完成数据的输入与结果的输出。
c语言编程问题求大神解答!
军训时,要从40个学生中抽取16人组成方队。抽取规则是,40个学生围成一圈,按顺序从1到40编号。从第一个学生开始报数,报数3的学生被抽中,下一个学生从1开始重新报数,报数3的学生被抽中。如此循环,直到选中16人为止。请编写程序,输出被选中学生的编号。 用c语言写 c++还没学。
C编程题考题请教大神帮忙解答,非常感谢
求大侠帮忙:C语言程序设计---编程题(以下所有题目程序应是非递归的) 1. 程序实现任意两个字符串s1、s2的比较。要求: 1) 字符串的比较写一函数sub()实现,不得调用标准库函数strcmp; 2) 在主函数中完成数据的输入与结果的输出。 2. 如果整数A的全部因子(包括1,不包括A本身)之和等于B;且整数B的全部因子(包括1,不包括B本身)和等于A,则将整数A和B称为亲密数对。编程求5000以内的全部亲密数对。 3. 程序实现将无序整数数组压缩成有序数组,即去掉数组中重复出现的元素,并将不重复的元素按从小到大的顺序存放于数组前K个元素中,其中K是原数组中互不相等的元素个数。例如: 原数组:4 2 7 10 4 7 1 6 2 压缩后:1 2 4 6 7 10 (k=6) 要求:本题在原数组上进行压缩和排序,不得引进另一个数组。 4._ _已知C:\book\bk__list.dat文件中存有多种图书信息,每种图书信息包含二个内容:书名和库存量。请编程通过检查全部库存量,在C盘boo_k目录下建立一个新的文件:bk_re.dat,它包括所有库存量小于30的图书名称和库存量,并在屏幕上显示所有库存量小于30的图书名称和库存量。要求: 1) 编写一个函数实现检查库存量,建立新文件bk_re.dat; _2) 在主函数输出结果 5. 编程实现将一个带头结点的整数链表分成一个奇数链表和一个偶数链表。要求: 1) 利用原链表中的结点空间作为这二个链表的结点空间,表头结点可以开辟新的空间 2) 结点的数据域只有一个整数域 3) 单链表的建立写一函数create()实现 4) 构造奇数和偶数链表的过程写一函数sub实现 5) 输出结果写一函数output实现 6) 主函数调用这三个函数完成程序功能 _
c++编程,,跪求大神解答
#include<iostream> using namespace std; template<class datatype> struct BiNode { BiNode<datatype> *lchild; datatype data; BiNode<datatype> *rchild; }; template<class datatype> struct element { BiNode<datatype> *ptr; int flag; }; BiNode<char> *first,*bt,*q,*temp,stack[20],queue[20]; element<char> s[20]; int count=0; template<class datatype> class BiTree { void creat(BiNode<datatype> *bt) { char ch; cin>>ch; if(ch=='#') bt=NULL; else { bt==new BiNode<datatype>; bt->data=ch; creat(bt->lchild); creat(bt->rchild); } } void preorder(BiNode<datatype> *bt) { int top=-1; while(bt!=NULL || top!=-1) { while(bt!=NULL) { cout<<bt->data; stack[++top]=*bt; bt=bt->lchild; } if(top!=-1) { bt=&stack[top--]; bt=bt->rchild; } } } void inorder(BiNode *bt) { int top=-1; while(bt!=NULL || top!=-1) { while(bt!=NULL) { stack[++top]=*bt; bt=bt->lchild; } if(top!=-1) { bt=&stack[top--]; cout<<bt->data; bt=bt->rchild; } } } void postorder(BiNode *bt) { int top=-1; while(bt!=NULL || top!=-1) { while(bt!=NULL) { top++; s[top].ptr=bt; s[top].flag=1; bt=bt->lchild; } while(top!=-1 && s[top].flag==2) { bt=s[top--].ptr; cout<<bt->data; if(top==-1); bt=NULL; } if(top!=-1) { s[top].flag=2; root=s[top].ptr->rchild; } } } void levelorder(BiNode *bt) { int front,rear; front=rear=0; if(bt==NULL) return; queue[++rear]=*bt; while(front!=rear) { q=&queue[++front]; cout<<q->data; if(q->lchild!=NULL) queue[++rear]=*(q->lchild); if(q->rchild!=NULL) queue[++rear]=*(q->rchild); } } void dgpreorder(BiNode *bt) { if(bt==NULL) return; else { cout<<bt->data; dgpreorder(bt->lchild); dgpreorder(bt->rchild); } } void dginorder(BiNode *bt) {if(bt==NULL) return; else { dginorder(bt->lchild); cout<<bt->data; dginorder(bt->rchild); } } void dgpostorder(BiNode *bt) { if(bt==NULL) return; else { dgpostorder(bt->lchild); dgpostorder(bt->rchild); cout<<bt->data; } } void countleaf(BiNode *bt,int &count) { if(bt!=NULL) { if(bt->lchild==NULL && bt->rchild==NULL) count++; countleaf(bt->lchild,count); countleaf(bt->rchild,count); } } void main() { BiTree<char> my; cout<<"请依次输入拓展二叉树的前序遍历序列:"<<endl; my.creat(bt); first=bt; cout<<"以下为非递归算法的各种遍历序列:"<<endl; cout<<"二叉树的前序遍历序列为:"<<endl; my.preorder(first); cout<<"二叉树的中序遍历序列为:"endl; my.inorder(first); cout<<"二叉树的后序遍历序列为:"<<endl; my.postorder(first); cout<<"二叉树的层序遍历序列为:"<endl; my.levelorder(first); cout<<"以下为递归算法的各种遍历序列:"<<endl; cout<<"二叉树的前序遍历序列为:"<endl; my.dgpreorder(first); cout<<"二叉树的中序遍历序列为:"<<endl; my.dginorder(first); cout<<"二叉树的后序遍历序列为:"<<endl; my.dgpostorder(first); my.countleaf(first,count); cout<<"叶子结点的个数:"<<count<<endl; cout<<endl; } }; 总是出现这两个错误,请问要怎么解决?? LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Debug/bitree.exe : fatal error LNK1120: 1 unresolved externals 执行 link.exe 时出错.
一道C语言编程题,本人初学者,求大神解答
编写程序实现功能:数据文件story.txt是一篇英文小故事,请先统计其中26个字母的出现次数。 要求一:再根据用户要求,输出某个字母的出现次数,直到用户输入#为止。 要求二:请输出出现频率最高的三个字母和它们的出现次数。
悬赏40分 全英文的介绍的简单的两个c语言编程 求大神帮忙解答
![图片说明](https://img-ask.csdn.net/upload/201509/30/1443617157_583325.png)![图片说明](https://img-ask.csdn.net/upload/201509/30/1443617193_544445.png)![图片说明](https://img-ask.csdn.net/upload/201509/30/1443617080_780291.png) ![图片说明](https://img-ask.csdn.net/upload/201509/30/1443617138_911164.png)
一道C语言编程题,初学者刚入门,求大神解答
输入若个正整数,输入0停止,将这些整数按顺序构造为一个新的整数。假设新的整数不超出整数的最大范围。 例如:输入:74 3 904 0 输出:743904
opencv3新手编程求助,跪求大神解答
代码如下: #include<iostream> #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> using namespace std; using namespace cv; bool MultiChannelBlending(); int main(){ if (MultiChannelBlending()){ cout << endl << "尼玛真费劲!"; } waitKey(); return 0; } bool MultiChannelBlending(){ Mat srcimage; Mat logoimage; vector<Mat> channels; Mat imageBlueChannel; srcimage = imread("ray.jpg"); logoimage = imread("灰度图.jpg",0); if (!srcimage.data){ printf("srcimage读取错误"); return false; }; if (!logoimage.data){ printf("logo读取错误"); return false; }; split(srcimage, channels); imageBlueChannel = channels.at(0); addWeighted(imageBlueChannel(Rect(200, 100, logoimage.cols, logoimage.rows)), 1.0, logoimage, 0.5, 0, imageBlueChannel(Rect(200, 100, logoimage.cols, logoimage.rows))); merge(srcimage, channels); namedWindow("原画+logo蓝色通道"); imshow("原画+logo蓝色通道", srcimage); return true; } 小弟在练习opencv,但是运行后会出现这样的问题:0x1011B40E (opencv_world300.dll) (多通道图像混合.exe 中)处有未经处理的异常: 0xC0000005: 写入位置 0x0020002C 时发生访问冲突。 百思不得其解,求助大神!
矩阵乘法错误 (Python3.7; jupyter notebook 6.0.0; numpy 1.16.4)该怎么办?
本人六年级小学生,很想进军人工智能领域,于是搞了本《Python神经网络编程》来看(图1),安装搭建了jupyter,可是在训练神经网络(更新权重那一步)的时候出了问题,也不只是怎么回事,打了ipdb断点,一查,阵矩大小、形状都没有问题,可是jupyter一直报错矩阵无法相乘,求大神解答(更多信息见正文) ![《Python神经网络编程》](https://img-ask.csdn.net/upload/202001/22/1579668143_1165.jpg) 先贴一下错误信息: > ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 3 is different from 5) 我百度了一下,这个好像是阵矩1的行与阵矩2的列不相同,我再次断点调试,各种一番捯饬,最后……额还是没找出问题…… 再贴一下诡异的jupyter运行截图: ![运行截图](https://img-ask.csdn.net/upload/202001/22/1579680986_443189.png) 图中可以看到框1是将要执行的语句,但是上一句打了ipdb断点,之后我在断点环境下执行了代码,结果成功了!!!成功了!!!可是我按下c之后就又报错了!!!求教啊,神马蛇皮走位?于是我再把断点去掉,又是同样的报错,放到导出py文件后本地执行也报错,神马情况??? 再贴一下train函数截图: ![图片说明](https://img-ask.csdn.net/upload/202001/22/1579680754_198010.png) 最后附上全部代码,方便大家解答: ```python import numpy import scipy.special # 神经网络 class Network: """神经网络类""" def __init__(self, nodes, l_rate): """神经网络初始化方法""" self.nodes = nodes self.lr = l_rate self.layer_num = len(nodes) self.weight_num = self.layer_num -1 self._init_layers() self._init_weights() self.activ = scipy.special.expit def _init_layers(self): """初始化所有神经层""" self.layers = [None for _ in range(self.layer_num)] for i in range(self.layer_num): # 本层的神经数 node_num = self.nodes[i] # 初始化本层神经,用0填充 self.layers[i] = numpy.zeros((node_num,)).T def _init_weights(self): """初始化所有权重""" self.weights = [None for _ in range(self.weight_num)] for i in range(self.weight_num): # 初始化本层权重,用[1/三√下一层神经数)]的正态分布填充 # 参数:1.正态分布中心 2.[1/(√下一层神经数)] 3.权重阵矩大小 self.weights[i] = numpy.random.normal(0.0, pow(self.nodes[i+1], -0.5), (self.nodes[i+1], self.nodes[i])) def query(self, inputs): """查询神经网络的结果""" assert len(inputs) is self.nodes[0] for i in range(self.layer_num): # 如果第是一遍遍历,将最后一次结果设为输入值 if i is 0: self.layers[0] = numpy.array(inputs, ndmin=2).T continue # 本轮神经计算值 self.layers[i] = self.weights[i - 1] @ self.layers[i - 1] self.layers[i] = self.activ(self.layers[i]) return self.layers[-1] def train(self, inputs, targets): """对神经网络进行训练""" assert len(targets) is self.nodes[-1] last_result = self.query(inputs) for i in reversed(range(self.weight_num)): if i is self.weight_num-1: errors = numpy.array(targets, ndmin=2).T - last_result else: errors = self.weights[i + 1] @ errors import ipdb; ipdb.set_trace() # 问题出在这一行↓↓↓ self.weights[i] += self.lr *((errors * self.layers[i+1] * (1.0 - self.layers[i+1])) @ self.layers[i].T) if __name__ == '__main__': nw = Network((3, 5, 5, 3), 0.01) for _ in range(10000): nw.train([1, 1, 1], [1, 1, 1]) results = nw.query([1, 1, 1]) print(results) ```
一道编程题用c语言实现这些功能时间有限1天时间求大神解答
有用户空间100kb,并规定作业的相应程序浇入内存连续区域,并不能被移动。作业与进程均采用sjf算法。输入为一组作业的进入时间,需要的内存容量(不超过100k)和运行时间。 要求: (1)按时间顺序给出每个作业的执行顺序,开始时间和结束时间,以及发生调度时内存各分区的状态; (2)计算这组作业的平均周转时间和平均带权周转时间; (3)实现作业一级调度和进程一级调度,包括调度算法和数据结构; (4)实现动态分区内存管理,包括内存分配,内存回收和空闲块的合并; (5)实现内存分配的最先适应法,并实现最佳或者最差适应法中的一种;
我这代码怎么输出个0.0?求大神解答
#include<stdio.h> #include<stdlib.h> #include<string.h> static int stnum; char hint[80]="请按提示输入!"; struct Score { double yuwen,math,english,tiyu,sum; }; struct Student { char num[10],name[20],sex[10]; int age; struct Score score; }stu[5]; void printstudent(int i) { printf("%s\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].num,stu[i].name,stu[i].sex,stu[i].score.yuwen,stu[i].score.math, stu[i].score.english,stu[i].score.tiyu,stu[i].score.sum); } void sethint(const char *s) { strcpy(hint,s); } void printline() { int i; for(i=0;i<80;i++) putchar('*'); } void printtitle(const char *title) { int i; int length=strlen(title); putchar('*'); for(i=0;i<(80-2-length)/2;i++) putchar(' '); printf("%s",title); for(i=i+length-1;i<=80-4;i++) putchar(' '); putchar('*'); } void menu() { printline(); printtitle("学生成绩管理系统"); printline(); printtitle("输入指令,执行相应操作"); printtitle("1.学生信息的录入 2.学生信息的查询"); printtitle("3.学生信息的删除 4.学生信息的排序"); printtitle("5.学生信息的修改 6.学生信息的保存"); printtitle("7.学生信息的显示 8.退出系统"); printline(); printtitle(hint); printline(); } void modelmenu(const char *s) { printline(); printtitle(s); printline(); } void input() { int i=0; char l; system("cls"); modelmenu("录入学生成绩"); i=stnum; printf("已经输入了%d个学生的信息!",i++); printf("\n输入第%d个学员学号:",i); scanf("%s",stu[i].num); getchar(); printf("\n输入第%d个学员姓名:",i); scanf("%s",stu[i].name); getchar(); printf("\n输入第%d个学员性别:",i); scanf("%s",stu[i].sex); getchar(); printf("\n输入第%d个学员年龄:",i); scanf("%d",&stu[i].age); getchar(); printf("\n输入第%d个学员语文成绩:",i); scanf("%lf",&stu[i].score.yuwen); getchar(); printf("\n输入第%d个学员数学成绩:",i); scanf("%lf",&stu[i].score.math); getchar(); printf("\n输入第%d个学员英语成绩:",i); scanf("%lf",&stu[i].score.english); getchar(); printf("\n输入第%d个学员体育成绩:",i); scanf("%lf",&stu[i].score.tiyu); getchar(); stu[i].score.sum+=stu[i].score.yuwen+stu[i].score.math+ stu[i].score.english+stu[i].score.tiyu; printstudent(i); stnum++; printf("是否继续输入?(Y/N):"); scanf("%c",&l); if(l=='n'||l=='N') return; else if(l=='Y'||l=='y') { system("cls"); input(); } } void search() { int i=0,flag=1; char str[20],l; system("cls"); modelmenu("查询学生信息"); printf("请输入要查找的学员学号:"); scanf("%s",str); getchar(); for(i=0;i<5;i++) if((strcmp(str,stu[i].num))==0) { printstudent(i); flag=0; } if(flag==1) printf("无此学号!\n"); printf("是否继续查询?(Y/N):"); scanf("%c",&l); if(l=='n'||l=='N') return; else system("cls"); } void del() { int i,j,flag=1; char str[20],l; system("cls"); modelmenu("删除学生信息"); printf("请输入要删除的学员学号:"); scanf("%s",str); getchar(); for(i=0;i<5;i++) if((strcmp(str,stu[i].num))==0) { printstudent(i); for(j=i;j<5;j++) stu[j]=stu[j+1]; flag=0; printf("删除成功!\n"); stnum--; } if(flag==1) printf("没有这个学生!\n"); printf("是否继续删除?(Y/N):"); scanf("%c",&l); if(l=='n'||l=='N') return; else { system("cls"); del(); } } void modi() { int i=0,flag=1; char str[20],l; system("cls"); modelmenu("修改学生信息"); printf("请输入要修改的学员学号:"); scanf("%s",str); getchar(); for(i=0;i<5;i++) if((strcmp(str,stu[i].num))==0) break; if(i!=5) { printline(); printstudent(i); printline(); printf("\n请输入修改内容\n"); printf("请修改学生学号"); scanf("%s",stu[i].num); getchar(); printf("请修改学生姓名"); scanf("%s",stu[i].name); getchar(); printf("请修改学生性别"); scanf("%s",stu[i].sex); getchar(); printf("请修改学生年龄"); scanf("%d",&stu[i].age); getchar(); printf("请修改学生语文成绩"); scanf("%lf",&stu[i].score.yuwen); getchar(); printf("请修改学生数学成绩"); scanf("%lf",&stu[i].score.math); getchar(); printf("请修改学生英语成绩"); scanf("%lf",&stu[i].score.english); getchar(); printf("请修改学生体育成绩"); scanf("%lf",&stu[i].score.tiyu); getchar(); printf("修改后的学生信息为:\n"); printline(); printstudent(i); printline(); } else printf("没有这个学生!\n"); printf("是否继续修改?(Y/N):"); scanf("%c",&l); if(l=='n'||l=='N') return; else { system("cls"); modi(); } } void sort() { struct Student t; int i,k,p,x,flag=1; double sum[5],g; system("cls"); sethint("排序完成"); menu(); for(i=0;i<5;i++) sum[i]=stu[i].score.yuwen+stu[i].score.math+ stu[i].score.english+stu[i].score.tiyu; for(k=0;k<4;k++) { x=k; for(p=k+1;p<5;p++) if(sum[x]>sum[p]) { x=p; g=sum[k]; sum[k]=sum[x]; sum[x]=g; t=stu[k]; stu[k]=stu[x]; stu[x]=t; } } } void save() { FILE *fp; int i; fp=fopen("c:\\student.txt","w"); system("cls"); sethint("保存成功"); menu(); fprintf(fp,"学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t体育\t总分\n"); for(i=5;i>0;i--) if(stu[i].age!=0) fprintf(fp,"%s\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].num,stu[i].name,stu[i].sex,stu[i].score.yuwen,stu[i].score.math, stu[i].score.english,stu[i].score.tiyu,stu[i].score.sum); fclose(fp); } void print() { int i; system("cls"); modelmenu("显示全部学生的信息"); printf("学号\t姓名\t性别\t年龄\t语文\t数学\t英语\t体育\t总分\n"); for(i=5;i>0;i--) if(stu[i].age!=0) printf("%s\t%s\t%s\t%d\t%.1f\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].num,stu[i].name,stu[i].sex,stu[i].score.yuwen,stu[i].score.math, stu[i].score.english,stu[i].score.tiyu,stu[i].score.sum); while(1) { char l; printf("是否返回主菜单?(Y/N):"); scanf("%c",&l); getchar(); if(l=='Y'||l=='y') return; } } void main() { int as; system("color f5"); do { menu(); printf("Input>"); sethint("请按提示输入!"); scanf("%d",&as); getchar(); if(as<1||as>8) as=0; switch(as) { case 0: sethint("输入错误,请重新输入!"); break; case 1: input(); break; case 2: search(); break; case 3: del(); break; case 4: sort(); break; case 5: modi(); break; case 6: save(); break; case 7: print(); break; case 8: break; default:menu(); } system("cls"); } while(as!=8); } ![图片说明](https://img-ask.csdn.net/upload/201511/02/1446468067_770453.jpg)
学生求大神解答:使用栈编程一个计算器程序,但输出结果只有8位负数如-33686016,是出了什么问题?
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <string> using namespace std; #define MAXSIZE 1000 typedef struct { int in; }IN; typedef struct { IN* base; IN* top; int stacksize; }SqStack;//构造栈元素 void InitStack(SqStack& s)//构造空栈s函数 { s.base = (IN*)malloc(MAXSIZE * sizeof(IN)); s.top = s.base; s.stacksize = MAXSIZE; } //入栈函数 void push(SqStack& s, int e) { s.top->in = e;//将e压入栈顶 s.top++;//top上移 } //出栈函数 int pop(SqStack& s) { s.top--; return s.top->in; } //获取栈顶元素 int Gettop(SqStack& s) { return (s.top - 1)->in; } //计算函数 void ope(SqStack& A, SqStack& B) { int a, b, s = 0; char c; a = pop(A); b = pop(A); c = pop(B); switch (c) { case '+':s = b + a; break; case '-':s = b - a; break; case '*':s = b * a; break; case '/':s = b / a; break; } push(A, s); } //比较计算符优先级 char pre(char a, char b) { if (b == '(') return '0';//为(直接入栈 else { if (a == '(') { if (b == ')') return '1';//左右括号相遇,左括号出栈 else return '2';//左括号右侧第一个运算符入栈 } else if (a == '*' || a == '/') { if (b == ')') return '3';//括号之间有尚未完成的运算符 else if (b == '*'|| b == '/') return '='; else return '>'; } else if (a == '+' || a == '-') { if (b == '+'||b == '-') return '='; else if (b == ')') return '3'; else return '<'; } } } int main() { SqStack num, sig;//构造两个栈,num:数字;;sig:运算符 InitStack(num); InitStack(sig); push(sig,'#'); //做栈底标记 char ch, c[10] = { '\0' };//ch存得到的字符,,c[50]将数字字符成串 int x=0,j=0; //x存储存c[50]转化的整形数字,j标记存c[50] int t = 0; ch = getchar();//读入第一个字符 for (; ch != '='; ch = getchar()) //用for循环进行输入,输入等号时结束,一次循环只处理一个字符 { if ('0' <= ch && ch <= '9') { c[j] = ch; //储存连续的数字字符 j++; t = 1; } else { if (t == 1) { //防止同时输入两个运算符使数与运算符匹配错位 c[j] = '\0'; x = atoi(c); j = 0; t = 0; push(num, x); } int f = 0; //循环标记 while (f == 0) { if (Gettop(sig) == '#') { //ch前无运算符,直接入栈 push(sig, ch); break; } else { switch (pre(Gettop(sig), ch)) { case'0':push(sig, ch); f = 1; break;//ch位左括号,直接入栈 case '1':pop(sig); f = 1; break;//左右括号相遇,出括号,终止循环 case '2':push(sig, ch); f = 1; break;;//左括号右侧第一个运算符入栈 case '3':ope(num, sig); break;//括号之间有尚未完成的运算符 case '>':ope(num, sig); break;//若gettop(sig)之前有与ch同级运算符则继续比较,不终止比较循环 case '<':push(sig, ch); f = 1; break; case '=':ope(num, sig); break; }//switch }//else }//while }//else }//for for (;;){ //完成=前剩余运算 ope(num, sig); if (Gettop(sig) == '#') { cout << pop(num); break; } } return 0; }
关于字节对齐的问题求大神解答
最近在看《UNIX网络编程》,发现一个问题,始终无法解决,请大神帮忙答疑解惑。 我们知道,通常情况下,结构体是有对齐的需求的,我在win32下用gcc,int大小是4, char大小是1,默认采用自然对齐,定义了两个结构体和一个字符数组: ``` typedef struct { char a1; char a2; char a3; }A; typedef struct { int b1; int b2; }B; char buff[1024] = {0}; ``` 很明显,char是1字节对齐,A是1字节对齐,sizeof(A) = 3, B是4字节对齐. sizeof(B) = 8; 在《UNIX网络编程》一书中,经常有类似于下面的这种做法: ``` A* a = (A*)buff; XXXXXXXXX; //对a进行操作 B* b = (B*) (buff +sizeof(A)); b->b1......; b->b2......; //对b进行操作 ``` 我之前对字节对齐的理解是这样的:char\*强转成A\*没有问题,因为他们都只要求起始地址是1的整数倍,但是强转成B\*似乎会出问题。假设buff本身恰好处于4的整数倍的地址(貌似有些系统默认栈内存起始都是4对齐),那么这样一来buff +sizeof(A)就一定不能满足是4的整数倍,从而使得强转后的指针b无法满足B的对齐条件(B是4字节对齐所以B的首地址必须是4 的整数倍),这个时候使用b->b1或者b->b2这样的方式访问数据似乎就会有一些问题。 看到网上有些资料说,这种情况在x86上是允许的,只是会使存取效率降低,而在ARM上会导致错误。我本人之前在ARM上也踩过类似的坑,所以对这个特别关注。不过我感觉Steven大神的代码不应该有问题的,所以有些怀疑自己之前所理解的内容。不知为各位大神对此有什么见解呢?
求大神 编写猜单词c语言程序
c语言编程 某懵逼大学生 实验周![图片](https://img-ask.csdn.net/upload/201606/13/1465789532_637154.jpg)![图片](https://img-ask.csdn.net/upload/201606/13/1465789623_151856.jpg)
求大神来解答啊,关于C#socket编程的问题
需求描述: 使用C#开发一个服务端使用的是wpf项目,该服务端为手机客户端提供不同的访问URL,根据手机端访问服务器所使用的URL不同做出不同的回应,当然什么URL做出什么回应是由协商好的API决定的。 问题描述: 问题一:如何提供可以访问服务器同一端口的不同URL???我该怎么监听? 问题二:当有连接请求的时候我怎么指导手机端是使用了什么URL访问的??我能获取到URL吗?用什么方法? 问题三:以上问题解决方案能够在socket编程中解决吗?
提示越界,求大神帮忙解答下
小弟刚开始接触编程,下面程序提示越界,希望论坛里的大神能帮忙解答下 #include <iostream> #include <vector> using namespace std; int main() { vector<int> a; int b,c=0; while(cin>>b) { a.push_back(b); } for(vector<int>::iterator iter1=a.begin();iter1!=a.end()-1;iter1++) { vector<int>::iterator iter2=iter1+1; vector<int>::iterator iter3=iter1; while(iter3>=0 && *(iter2)>*(iter3)) { c=*(iter2); *(iter2)=*(iter3); *(iter3)=c; iter3--; iter2--; } } for(vector<int>::iterator iter=a.begin();iter!=a.end();iter++) { cout<<*iter<<" "; } return 0; }
有关BC菜鸟问题求大神解答
现在在做C课设,所以求助大神在BC编程中如何引用图片?还有,怎么用C直接画图?表示对这些基础不懂。。。
130 个相见恨晚的超实用网站,一次性分享出来
相见恨晚的超实用网站 持续更新中。。。
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱 极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件, 选择安装到U盘(按照操作无需更改) 三、重启进入pe系统 1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12) 选择需要启...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Linux(服务器编程):15---两种高效的事件处理模式(reactor模式、proactor模式)
前言 同步I/O模型通常用于实现Reactor模式 异步I/O模型则用于实现Proactor模式 最后我们会使用同步I/O方式模拟出Proactor模式 一、Reactor模式 Reactor模式特点 它要求主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将时间通知工作线程(逻辑单元)。除此之外,主线程不做任何其他实质性的工作 读写数据,接受新的连接,以及处...
HAL 硬件抽象层介绍
和你一起终身学习,这里是程序员Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:和你一起终身学习,这里是程序员 Android本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:一、HAL 概述一、HAL 概述HAL定义了供硬件供应商实施的标准接口,该接口使Android无需考虑底层驱动程序的实现。使用HA...
加快推动区块链技术和产业创新发展,2019可信区块链峰会在京召开
11月8日,由中国信息通信研究院、中国通信标准化协会、中国互联网协会、可信区块链推进计划联合主办,科技行者协办的2019可信区块链峰会将在北京悠唐皇冠假日酒店开幕。   区块链技术被认为是继蒸汽机、电力、互联网之后,下一代颠覆性的核心技术。如果说蒸汽机释放了人类的生产力,电力解决了人类基本的生活需求,互联网彻底改变了信息传递的方式,区块链作为构造信任的技术有重要的价值。   1...
8年经验面试官详解 Java 面试秘诀
作者 |胡书敏 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 本人目前在一家知名外企担任架构师,而且最近八年来,在多家外企和互联网公司担任Java技术面试官,前后累计面试了有两三百位候选人。在本文里,就将结合本人的面试经验,针对Java初学者、Java初级开发和Java开发,给出若干准备简历和准备面试的建议。 Java程序员准备和投递简历的实...
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的回答,对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalking,作者吴晟、刘浩杨 等等 仓库地址: apache/skywalking 更...
致 Python 初学者们!
作者| 许向武 责编 | 屠敏 出品 | CSDN 博客 前言 在 Python 进阶的过程中,相信很多同学应该大致上学习了很多 Python 的基础知识,也正在努力成长。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 Python 这门编程语言,从2009年开始单一使用 Python 应对所有的开发工作,直至今...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
使用 Angular 打造微前端架构的 ToB 企业级应用
这篇文章其实已经准备了11个月了,因为虽然我们年初就开始使用 Angular 的微前端架构,但是产品一直没有正式发布,无法通过生产环境实践验证可行性,11月16日我们的产品正式灰度发布,所以是时候分享一下我们在使用 Angular 微前端这条路上的心得(踩过的坑)了额,希望和 Angular 社区一起成长一起进步,如果你对微前端有一定的了解并且已经在项目中尝试了可以忽略前面的章节。 什么是微前...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
拿下微软、Google、Adobe,印度为何盛产科技圈 CEO?
作者 | 胡巍巍 出品 | CSDN(ID:CSDNnews) 世界500强中,30%的掌舵人,都是印度人。 是的,你没看错。这是近日《哈佛商业评论》的研究结果。 其中又以微软CEO萨提亚·纳德拉(Satya Nadella)、和谷歌CEO桑达尔·皮查伊(Sundar Pichai,以下简称劈柴)最为出名。 微软CEO萨提亚·纳德拉(Satya Nadella) 其他著名印度...
Linux(内核剖析):19---中断总体概述
一、为什么要引入中断? 任何操作系统内核的核心任务,都包含有对连接到计算机上的硬件设备进行有效管理,如硬盘、蓝光碟机、键盘、鼠标、3D 处理器,以及无线电等。而想要管理这些设备,首先要能和它们互通音信才行。众所周知,处理器的速度跟外围硬件设备的速度往往不在一个数量级上,因此,如果内核采取让处理器向硬件发出一个请求,然后专门等待回应的办法,显然差强人意。既然硬件的响应这么慢,那么内核就应该在此期间...
程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
深度学习笔记------卷积神经网络
深度学习笔记------卷积神经网络
一文带你入门Linux
文章目录1.1 Linux的概述:1.1.1 什么是Linux:1.1.1.1 学习Linux之前先了解Unix1.1.1.2 Linux的概述:1.1.1.3 Linux的历史:1.1.1.4 Linux系统的应用:1.1.1.5 Linux的版本1.1.1.6 Linux的主流版本1.2 Linux的安装:1.2.1 虚拟机安装:1.2.1.1 什么是虚拟机1.2.1.2 安装VmWare1....
普通三本毕业,我怎么一路艰辛进入阿里的
英雄不问出处? 自古以来就有这样一句话,真的英雄不问出处吗?这句话太挫了。普通三本院校的我,大四的时候居然都不知道什么是校招,所以出处太重要了。这也是没有机会参加阿里校招的原因,毕竟校招门槛比社招还是要低的,最重要的是校招进入阿里能让你的起点比别人更高。 有幸可以社招进入阿里,了解了校招的思路,赶紧介绍给学弟们,现在我们三本院校的小学弟今年居然有 3 个人通过了阿里的校招。下面我也把这份宝贵的经...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
强烈推荐10本程序员在家读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
疫情数据接口api
返回json示例 { "errcode":0,//0标识接口正常 "data":{ "date":"2020-01-30 07:47:23",//实时更新时间 "diagnosed":7736,//确诊人数 "suspect":12167,//疑是病例人数 "death":170,//死亡人数 "cur...
智力题(程序员面试经典)
NO.1  有20瓶药丸,其中19瓶装有1克/粒的药丸,余下一瓶装有1.1克/粒的药丸。给你一台称重精准的天平,怎么找出比较重的那瓶药丸?天平只能用一次。 解法 有时候,严格的限制条件有可能反倒是解题的线索。在这个问题中,限制条件是天平只能用一次。 因为天平只能用一次,我们也得以知道一个有趣的事实:一次必须同时称很多药丸,其实更准确地说,是必须从19瓶拿出药丸进行称重。否则,如果跳过两瓶或更多瓶药...
疫情防控,开发者集结出战!
作者 | 屠敏出品 | CSDN(ID:CSDNnews)2020 年伊始,病毒肆虐,人心惶惶。截止北京时间 1 月 31 日 15 时 30 分,全国确诊新型冠状病毒肺炎的数字已达到了...
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问