CPP文件

合集下载

信息管理系统CPP文件

信息管理系统CPP文件

#include<stdio.h>#include<string.h>#include<stdlib.h>int m; //全局变量存放学生个数struct student //定义结构体{char id[10];char name[10];float Chinese;float English;float Math;};//变量声明void luru(struct student message[100]);void xianshi(struct student message[100]);void paixu(struct student message[100]);void save(struct student message[100]);void xiugai(struct student message[100]);void tongji(struct student message[100]);//主函数int main(){struct student message[100]; //定义结构体数组存放数据int xuan;printf("1.成绩录入\t2.成绩显示\t3.成绩保存\n4.成绩排序\t5.成绩修改\t6.成绩统计\n7.退出系统\n");while(1){printf("请选择功能选项:");scanf("%d",&xuan); //输入功能选项while(xuan>7||xuan<1) //输入了非功能选项的代号则重新输入{printf("输入错误,请从新输入:");scanf("%d",&xuan);}switch(xuan) //调用各函数实现各个功能选项,并递归调用主菜单函数{case 1:luru(message);break;case 2:xianshi(message);break;case 3:save(message);break;case 4:paixu(message);break;case 5:xiugai(message);break;case 6:tongji(message);break;case 7:exit(0); //退出系统}}}void luru(struct student message[100]) /*录入信息*/{ int i,ch;FILE *fp;if((fp=fopen("information.txt","wb"))==NULL){printf("不能打开此文件!\n");exit(0);}printf("请输入学生个数:");scanf("%d",&m);for(i=0;i<m;i++){printf("请输入学号:");scanf("%s",message[i].id);printf("请输入姓名:");scanf("%s",message[i].name);printf("请输入语文成绩:");scanf("%f",&message[i].Chinese);printf("请输入英语成绩:");scanf("%f",&message[i].English);printf("请输入数学成绩:");scanf("%f",&message[i].Math);}printf("录入结束!!\n");printf("按任意键继续");ch=getchar(); //接受回车字符ch=getchar(); //按任意键继续运行程序printf("1.成绩录入\t2.成绩显示\t3.成绩保存\n4.成绩排序\t5.成绩修改\t6.成绩统计\n7.退出系统\n");}void xianshi(struct student message[100]) /*显示信息*/{int i,ch;FILE *fp; //课本335,…………定义一个指向文件的指针变量fpfp=fopen("information.txt","r");//fscanf(fp1,"%d",&m);//课本344,fscanf,fprintf函数的读写对象不是终端而是文件,//调用方式:fscanf(文件指针,格式字符串,输出列表);for(i=0;i<m;i++)fread(&message[i],sizeof(struct student),1,fp);//课本345printf("学号\t姓名\t语文\t英语\t数学\n");for(i=0;i<m;i++){printf("%s\t%s\t%3.1f\t%3.1f\t%3.1f\n",message[i].id,message[i].name,message[i].Chinese,message[i].English,message[i].Math);}printf("按任意键继续");ch=getchar();ch=getchar();printf("1.成绩录入\t2.成绩显示\t3.成绩保存\n4.成绩排序\t5.成绩修改\t6.成绩统计\n7.退出系统\n");}void paixu(struct student message[100]) /*成绩排序*/{FILE *fp;int i,j,ch;fp=fopen("information.txt","r");for(i=0;i<m;i++)fread(&message[i],sizeof(struct student),1,fp);struct student t; //定义一个中间变量以便学生数据的相互交换printf("语文成绩排序如下:\n");for(i=0;i<m;i++)for(j=i+1;j<m;j++)if(message[i].Chinese<message[j].Chinese){t=message[i];message[i]=message[j];message[j]=t;}xianshi(message);printf("数学成绩排序如下:\n");for(i=0;i<m;i++)for(j=i+1;j<m;j++)if(message[i].Math<message[j].Math){t=message[i];message[i]=message[j];message[j]=t;}xianshi(message);printf("英语成绩排序如下:\n");for(i=0;i<m;i++)for(j=i+1;j<m;j++)if(message[i].English<message[j].English){t=message[i];message[i]=message[j];message[j]=t;}xianshi(message);//还原为学号排序for(i=0;i<m;i++)for(j=i+1;j<m;j++)if(message[i].id>message[j].id){t=message[i];message[i]=message[j];message[j]=t;}printf("按任意键继续");ch=getchar();ch=getchar();printf("1.成绩录入\t2.成绩显示\t3.成绩保存\n4.成绩排序\t5.成绩修改\t6.成绩统计\n7.退出系统\n");}/*文件保存*/void save(struct student message[100]){FILE *fp;int ch,i;if((fp=fopen("information.txt","wb"))==NULL) //新建一个文件{printf("不能打开文件!\n");}for(i=0;i<m;i++) //把已录入的学生数据写到文件中if(fwrite(&message[i],sizeof(struct student),1,fp)!=1)printf("file write error\n");//新建一个文件存放全局变量m,即学生个数fclose(fp);//关闭文件printf("文件保存完毕!");printf("按任意键继续");ch=getchar();ch=getchar();printf("1.成绩录入\t2.成绩显示\t3.成绩保存\n4.成绩排序\t5.成绩修改\t6.成绩统计\n7.退出系统\n");}void xiugai(struct student message[100]) /*成绩修改*/{FILE *fp;int i,k,ch;fp=fopen("information.txt","r");for(i=0;i<m;i++)fread(&message[i],sizeof(struct student),1,fp);char c,a[10]="111111",b[10],num[100]; //设初始密码为111111printf("请输入密码(111111):\n");scanf("%s",&b);while(strcmp(a,b)!=0){printf("密码错误,请重新输入:");scanf("%s",&b);}printf("请输入要修改成绩的学生的学号:");scanf("%s",&num);for(i=0;i<m;i++){if(strcmp(num,message[i].id)==0) //比较学号,相同则修改该学号对应学生的成绩{printf("请输入该生语文成绩:");scanf("%f",&message[i].Chinese);printf("请输入该生数学成绩:");scanf("%f",&message[i].Math);printf("请输入该生英语成绩:");scanf("%f",&message[i].English);}}printf("1.继续修改.\n2.返回主菜单.\n请选择:");c=getchar();scanf("%d",&k);if(k==1)xiugai(message);printf("按任意键继续");ch=getchar();ch=getchar();printf("1.成绩录入\t2.成绩显示\t3.成绩保存\n4.成绩排序\t5.成绩修改\t6.成绩统计\n7.退出系统\n");}void tongji(struct student message[100]) /*成绩统计*/{int i,j,n1=0,n2=0,n3=0,ch;float a=0,b=0,c=0;FILE *fp;fp=fopen("information.txt","r");for(i=0;i<m;i++)fread(&message[i],sizeof(struct student),1,fp);struct student t;printf("统计情况如下:\n");for(i=0;i<m;i++) /*冒泡法求最大值,即求各科成绩最高*/for(j=i+1;j<m;j++)if(message[i].Chinese<message[j].Chinese){t=message[i]; //结构体数组元素整体代换,即学生数据整体代换message[i]=message[j];message[j]=t;}printf("语文成绩最高的学生信息为:\n");printf("学号\t姓名\t语文\t英语\t数学\n");printf("%s\t%s\t%3.1f\t%3.1f\t%3.1f\t\n",message[0].id,message[0].name,message[0].Chinese, message[0].English,message[0].Math);for(i=0;i<m;i++)for(j=i+1;j<m;j++)if(message[i].Math<message[j].Math){t=message[i];message[i]=message[j];message[j]=t;}printf("数学成绩最高的学生信息为:\n");printf("学号\t姓名\t语文\t英语\t数学\n");printf("%s\t%s\t%3.1f\t%3.1f\t%3.1f\t\n",message[0].id,message[0].name,message[0].Chinese, message[0].English,message[0].Math);printf("英语成绩排序如下:\n");for(i=0;i<m;i++)for(j=i+1;j<m;j++)if(message[i].English<message[j].English){t=message[i];message[i]=message[j];message[j]=t;}printf("英语成绩最高的学生信息为:\n");printf("学号\t姓名\t语文\t英语\t数学\n");printf("%s\t%s\t%3.1f\t%3.1f\t%3.1f\t\n",message[0].id,message[0].name,message[0].Chinese, message[0].English,message[0].Math);for(i=0;i<m;i++) /*求平均分*/{a=a+message[i].Chinese;b=b+message[i].Math;c=c+message[i].English;}a=a/m;b=b/m;c=c/m;printf("语文平均分为:%3.2f\n数学平均分为:%3.2f\n英语平均分为:%3.2f\n",a,b,c);for(i=0;i<m;i++) /*求超过平均分的同学数量*/{if(message[i].Chinese>a)n1=n1+1;if(message[i].Math>b)n2=n2+1;if(message[i].English>b)n3=n3+1;}printf("超过语文成绩平均分的同学有%d位\n超过数学成绩平均分的同学有%d位\n超过英语成绩平均分的同学有%d位\n",n1,n2,n3);printf("按任意键继续");ch=getchar();ch=getchar();printf("1.成绩录入\t2.成绩显示\t3.成绩保存\n4.成绩排序\t5.成绩修改\t6.成绩统计\n7.退出系统\n");}。

一个工程有.cpp,.h等很多文件,他们是怎么连接在一起的?

一个工程有.cpp,.h等很多文件,他们是怎么连接在一起的?

一个工程有.cpp,.h等很多文件,他们是怎么连接在一起的?可以有多个CPP,但CPP的名字不能相同,因为编译的OBJ的文件是以CPP为单位。

不同CPP文件的函数可以通过声明的方式使用,通常声明放在H文件里,而想引用其它CPP文件的变量可以使用extern 这个也通常放在H文件通过#include的方式加载可以有多个.cpp,甚至是多个.cpp,.c混合都是没有问题的,多个cpp时最好使用预编译头,也是就建立console工程的时候不选空工程,简单例程或HELLO WORLD程序,自己添加cpp代码文件时,确保在文件的头部写上#include 就可以了------解决方案--------------------------------------------------------每个.cpp文件作为一个编译单元,被编译成一个目标文件(.obj),它用目标语言来描述.cpp的内容。

然后,用一个链接器将所有的目标文件链接起来,形成一个.exe文件。

换句话说,在第一阶段,每个.cpp都是独立编译的,互不干涉(当然可以使用公用的.h文件)。

在最后链接时才归并在一起。

所有在.exe中的实际地址,都是在链接时生成的。

比如说,a.cpp中调用了一个函数fun(),b.cpp中实现了函数fun()。

那么a.cpp编译成a.o时,会建立一个地址表,一种有一项 a_fun_address,用于调用函数fun()时的跳转地址。

但是,这个地址在a.o中是不知道的,因此它声明需要这个地址,然后在调用fun()初写:call [a_fun_address] // 此处是调用fun的伪目标语言而b.o中则从它的b_fun_address处开始写fun的实现。

如:b_fun_address:XXXX // 此处是实现fun的伪目标语言然后在链接时,链接器将fun的实现(b_fun_address开始的目标代码)确定到某个地址上,并将这个地址回写到a_fun_address上。

C语言中头文件和cpp文件解析

C语言中头文件和cpp文件解析

C语⾔中头⽂件和cpp⽂件解析回到cpp⽂件与头⽂件各写什么内容的话题上:理论上来说cpp⽂件与头⽂件⾥的内容,只要是C语⾔所⽀持的,⽆论写什么都可以的,⽐如你在头⽂件中写函数体实现,任何⼀个cpp⽂件包含此头⽂件就可以将这个函数编译成⽬标⽂件的⼀部分(编译是以cpp⽂件为单位的,如果不在任何cpp⽂件中包含此头⽂件的话,这段代码就形同虚设),你可以在cpp⽂件中进⾏函数声明、变量声明、结构体声明,这也不成问题那为何⼀定要分成头⽂件与cpp⽂件呢?⼜为何⼀般都在头件中进⾏函数、变量声明,宏声明,结构体声明呢?⽽在cpp⽂件中去进⾏变量定义,函数实现呢??原因如下: 1.如果在头⽂件中实现⼀个函数体,那么如果在多个cpp⽂件中引⽤它,⽽且⼜同时编译多个cpp⽂件,将其⽣成的⽬标⽂件连接成⼀个可执⾏⽂件,在每个引⽤此头⽂件的cpp⽂件所⽣成的⽬标⽂件中,都有⼀份这个函数的代码,如果这段函数⼜没有定义成局部函数,那么在连接时,就会发现多个相同的函数,就会报错,函数重复定义。

2.如果在头⽂件中定义全局变量,势必会对此全局变量赋初值,那么在多个引⽤此头⽂件的cpp⽂件中同样存在相同变量名的拷贝,关键是此变量被赋了初值,所以编译器就会将此变量放⼊DATA段,最终在连接阶段,会在DATA段中存在多个相同的变量,它⽆法将这些变量统⼀成⼀个变量,统⼀变量的意思也就是仅为此变量分配⼀个空间,⽽不是多份空间。

但是对于声明⼀个变量,这个变量在头⽂件没有赋初值,编译器就会将之放⼊BSS段,连接器会对BSS段的多个同名变量仅分配⼀个存储空间。

3.如果在cpp⽂件中声明宏、结构体、函数等,那么我要在另⼀个cpp⽂件中引⽤相应的宏、结构体、函数,就必须再做⼀次重复的⼯作(意思是说如果不去#include),如果我改了⼀个cpp⽂件中的⼀个声明,那么⼜忘了改其它cpp⽂件中的声明,这不就出了⼤问题了,程序的逻辑就变成了你不可想象的了,如果把这些公共的东东放在⼀个头⽂件中,想⽤它的cpp⽂件就只需要引⽤⼀个就OK了这样岂不⽅便,要改某个声明的时候,只需要动⼀下头⽂件就⾏了。

C++头文件与源文件

C++头文件与源文件

C++中的头文件和源文件一、C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。

其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称作C++头文件,里面放的也是C++的源代码。

C+ +语言支持“分别编译”(separate compilation)。

也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的.cpp文件里。

.cpp文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链接(link)就行了。

比如,在文件中定义了一个全局函数“void a() {}”,而在文件中需要调用这个函数。

即使这样,文件和文件并不需要相互知道对方的存在,而是可以分别地对它们进行编译,编译成目标文件之后再链接,整个程序就可以运行了。

这是怎么实现的呢?从写程序的角度来讲,很简单。

在文件b.cpp中,在调用“void a()”函数之前,先声明一下这个函数“void a();”,就可以了。

这是因为编译器在编译的时候会生成一个符号表(symbol table),像“void a()”这样的看不到定义的符号,就会被存放在这个表中。

再进行链接的时候,编译器就会在别的目标文件中去寻找这个符号的定义。

一旦找到了,程序也就可以顺利地生成了。

注意这里提到了两个概念,一个是“定义”,一个是“声明”。

简单地说,“定义”就是把一个符号完完整整地描述出来:它是变量还是函数,返回什么类型,需要什么参数等等。

而“声明”则只是声明这个符号的存在,即告诉编译器,这个符号是在其他文件中定义的,我这里先用着,你链接的时候再到别的地方去找找看它到底是什么吧。

定义的时候要按C++语法完整地定义一个符号(变量或者函数),而声明的时候就只需要写出这个符号的原型了。

需要注意的是,一个符号,在整个程序中可以被声明多次,但却要且仅要被定义一次。

CPP 文件操作大全

CPP 文件操作大全

基于C的文件操作在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。

一、流式文件操作这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedef struct {int level; /* fill/empty level of buffer */unsigned flags; /* File status flags */char fd; /* File descriptor */unsigned char hold; /* Ungetc char if no buffer */int bsize; /* Buffer size */unsigned char _FAR *buffer; /* Data transfer buffer */unsigned char _FAR *curp; /* Current active pointer */unsigned istemp; /* Temporary file indicator */short token; /* Used for validity checking */} FILE; /* This is the FILE object */FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表函数功能fopen() 打开流fclose() 关闭流fputc() 写一个字符到流中fgetc() 从流中读一个字符fseek() 在流中定位到指定的字符fputs() 写字符串到流fgets() 从流中读一行或指定个字符fprintf() 按格式输出到流fscanf() 从流中按格式读取feof() 到达文件尾时返回真值ferror() 发生错误时返回其值rewind() 复位文件定位器到文件开始处remove() 删除文件fread() 从流中读指定个数的字符fwrite() 向流中写指定个数的字符tmpfile() 生成一个临时文件流tmpnam() 生成一个唯一的文件名下面就介绍一下这些函数1.fopen()fopen的原型是:FILE *fopen(const char *filename,const char *mode),fopen实现三个功能为使用而打开一个流把一个文件和此流相连接给此流返回一个FILR指针参数filename指向要打开的文件名,mode表示打开状态的字符串,其取值如下表字符串含义"r" 以只读方式打开文件"w" 以只写方式打开文件"a" 以追加方式打开文件"r+" 以读/写方式打开文件,如无文件出错"w+" 以读/写方式打开文件,如无文件生成新文件一个文件可以以文本模式或二进制模式打开,这两种的区别是:在文本模式中回车被当成一个字符'/n',而二进制模式认为它是两个字符0x0D,0x0A;如果在文件中读到0x1B,文本模式会认为这是文件结束符,也就是二进制模型不会对文件进行处理,而文本方式会按一定的方式对数据作相应的转换。

CPP常用头文件及函数汇总

CPP常用头文件及函数汇总

#include <complex>//复数类#include <csignal> //信号机制支持#include <csetjmp> //异常处理支持#include <cstdarg> //不定参数列表支持#include <cstddef> //常用常量#include <cstdio> //定义输入/输出函数#include <cstdlib> //定义杂项函数及内存分配函数#include <cstring> //字符串处理#include <ctime> //定义关于时间的函数#include <cwchar> //宽字符处理及输入/输出#include <cwctype> //宽字符分类#include <deque>//STL 双端队列容器#include <exception>//异常处理类#include <fstream> //文件输入/输出#include <functional>//STL 定义运算函数(代替运算符)#include <limits> //定义各种数据类型最值常量#include <list>//STL 线性列表容器#include <locale> //本地化特定信息#include <map>//STL 映射容器#include <memory> //STL通过分配器进行的内存分配#include <new> //动态内存分配#include <numeric> //STL常用的数字操作#include <iomanip> //参数化输入/输出#include <ios>//基本输入/输出支持#include <iosfwd>//输入/输出系统使用的前置声明#include <iostream> //数据流输入/输出#include <istream>//基本输入流#include <iterator> //STL迭代器#include <ostream>//基本输出流#include <queue>//STL 队列容器#include <set>//STL 集合容器#include <sstream>//基于字符串的流#include <stack>//STL 堆栈容器#include <stdexcept>//标准异常类#include <streambuf>//底层输入/输出支持#include <string>//字符串类#include <typeinfo> //运行期间类型信息#include <utility>//STL 通用模板类#include <valarray> //对包含值的数组的操作#include <vector>//STL 动态数组容器————————————————————————————————C99增加的部分#include <complex.h>//复数处理#include <fenv.h>//浮点环境#include <inttypes.h>//整数格式转换#include <stdbool.h>//布尔环境#include <stdint.h>//整型环境#include <tgmath.h>//通用类型数学宏头文件ctype.h字符处理函数: 本类别函数用于对单个字符进行处理,包括字符的类别测试和字符的大小写转换----------------------------------------字符测试是否字母和数字isalnum是否字母isalpha是否控制字符iscntrl是否数字isdigit是否可显示字符(除空格外) isgraph是否可显示字符(包括空格) isprint是否既不是空格,又不是字母和数字的可显示字符ispunct是否空格isspace是否大写字母isupper是否16进制数字(0-9,A-F)字符isxdigit字符大小写转换函数转换为大写字母toupper转换为小写字母tolower头文件local.h地区化: 本类别的函数用于处理不同国家的语言差异。

混合编译.c.cpp与.cu文件

混合编译.c.cpp与.cu文件

混合编译.c.cpp与.cu⽂件混合编译.c/.cpp与.cu⽂件项⽬中⽤到cuda编程,写了kernel函数,需要nvcc编译器来编译。

.c/.cpp的⽂件,假定⽤gcc编译。

如何混合编译它们,整体思路是:.cu⽂件编译出的东西,作为最终编译出的可执⾏程序的链接依赖。

具体说起来⼜可以有这⼏种情况:分别编译各个⽂件,最后链接将CUDA程序编译为静态库将CUDA程序弄成动态库其中后两种⽅式更⼯程化,基于makefile或CMake会更加⽅便。

假设⼿头上的⽂件为:test1.cutest2.c则具体编译指令、编译脚本如下:⽅法1:分别编译各个⽂件nvcc -c test1.cugcc -c test2.cgcc -o testc test1.o test2.o -lcudart -L/usr/local/cuda/lib64⽅法2: 将cuda程序编译为静态库nvcc -lib test1.cu -o libtestcu.agcc test2.c -ltestcu -L. -lcudart -L/usr/local/cuda/lib64⽅法3:将CUDA程序弄成动态库以makefile为例all: cc: libtestcu.sogcc test2.c -ltestcu -L. -lcudart -L/usr/local/cuda/lib64 -o testclibtestcu.so: test.cunvcc -o libtestcu.so -shared -Xcompiler -fPIC test1.cu⽅法4:基于CMake的⼀个例⼦foo.cuh写kernel函数声明foo.cu实现kernel函数foo.cuh和foo.cu⼀起,编译成⼀个库main.c调⽤kernel函数foo.cuh参见https:///fb_help/article/details/79330815需要注意的是,VS在debug模式下,应该把nvcc的flags中优化选项关闭掉。

CPP常用头文件

CPP常用头文件
#include //布尔环境
#include //整型环境
#include //通用类型数学宏
标准 C++ (同上的不再注释)
#include <algorithm> //STL 通用算法
#include <bitset> //STL 位集容器
#include <cctype>
#include <cerrno>
#include <clocale>
#include <set> //STL 集合容器
#include <sstream> //基于字符串的流
#include <stack> //STL 堆栈容器
#include <stdexcept> //标准异常类 #incΒιβλιοθήκη ude <cwchar>
#include <cwctype>
using namespace std;
C99 增加
#include //复数处理
#include //浮点环境
#include //整数格式转换
#include <iosfwd> //输入/输出系统使用的前置声明
#include <iostream>
#include <istream> //基本输入流
#include <ostream> //基本输出流
#include <queue> //STL 队列容器
#include <cmath>
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

N只小白鼠(1 < N < 100),每只鼠头上戴着一顶有颜色的帽子。

现在称
出每只白鼠的重量,要求按照白鼠重量从小到大的顺序输出它们头上帽子的颜色。

帽子的颜色用“red”,“blue”等字符串来表示。

不同的小白
鼠可以戴相同颜色的帽子。

白鼠的重量用整数表示。

输入
输入第一行为一个整数N,表示小白鼠的数目。

下面有N行,每行是一只白鼠的信息。

第一个为正整数,表示白鼠的重量,;
第二个为字符串,表示白鼠的帽子颜色,字符串长度不超过10个字符。

注意:白鼠的重量各不相同。

输出
按照白鼠的重量从小到大的顺序输出白鼠的帽子颜色。

样例输入
3
30 red
50 blue
40 green
样例输出
red
green
blue
描述
现在有一个仅由小写字母组成的字符串S,假定将字母a,b,c...z依次编号为1,2,3...26,现在要在S中找到所有长度为m的且字母编号和为q
的子串。

输入
第一行输入N,表示测试数据的个数,以下N行每行包含一个测试数据
一行测试数据由三部分组成:字符串S(长度不超过100)、m(m小于S的长度)、q。

输出
输出符合条件的子串个数
后面每行输出一个相应的子串
样例输入
1
abcabc 3 6
样例输出
4
abc
bca
cab
abc
描述
一个正整数,如果它能被x整除,或者它的十进制表示法中某个位数上的
数字为x,则称其为与x相关的数.现求所有小于等于n(n<300)的与x无关的正整数的平方和.
输入
输入为一行,正整数n,(n<300)
输出
输出小于等于n的与3和5无关的正整数的平方和
样例输入
8
样例输出
134
描述
目前,高等院校往往采用GPA来评价学生的学术表现。

传统的排名方式是求对每一个学生的平均成绩,以平均成绩作为依据进行排名。

但这样的排名方法已经引起了教育界以及社会各界人士的争议,因为它存在着许多弊端。

对于不同的课程,选课学生的平均成绩会不同程度地受到课程的难易程度和老师的严厉程度的制约。

因而这样的排名系统无形中就鼓励了学生选择一些比较容易的课程,因为这样可以事半功倍地获得较高的平均分。

为了克服这些弊端,需要对排名系统做一定的改进。

一种改进的方案是对选第i门课的每一个学生的成绩加上一个特定的修
正值di,例如编号为j的学生该课的成绩Gij修改为G'ij=Gij+di。

最终使得经过调整后,该课调整后的平均分等于未调整前选该课的所有学生所有课的平均分。

你的任务是根据某一个班级学生某学期的成绩,计算每门课的修正值di。

输入学生人数m(1 <= m <= 20)、课程数目n(1 <= n <= 10)、课程
名称以及各个学生各门课的成绩。

对于第i门课程,输出修正值di。

输入
1. 第一行输入两个整数,用空格分隔,分别为学生人数m和课程数目n。

2. 第二行输入n门课程名称,用空格分隔。

每门课程的名称均不超过15
个字符,均为小写。

3. 第三行开始输入m * n的矩阵。

表示各个学生各门课成绩x(0 < x <=
100),以空格分隔。

若学生未选此课,则该位输出0.
输出
输出为n行,每行格式为“math 5”。

首先输出课程名称,空格后输出修
正值di。

di为整数(计算过程中小数部分均舍去,不考虑),若di为正输出‘’,否则输出‘-’
样例输入
8 5
math physics algebra english chemistry
98 78 0 76 86
0 79 99 89 68
0 0 79 96 78
58 97 79 90 47
90 0 84 99 77
94 54 76 85 0
69 60 0 85 95
79 85 86 96 68
样例输出
math -1
physics 4
algebra -2
english -8
chemistry 7
描述
矩阵有以下两种运算方式:矩阵乘法和矩阵转置
矩阵乘法的计算方法定义为:
对于矩阵A[m][q]*B[q][n],
相乘的结果为矩阵C[m][n]且对于矩阵C中每一项都有
C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + ..... +
A[i][q]*B[q][j]
注意只有当前一矩阵A的列数等于后一矩阵B的行数时两个矩阵才能相
乘。

矩阵的转置定义为:
交换矩阵C[m][q]中所有的行列元素所得到的矩阵C'[q][m]称为矩阵C
的转置矩阵,即C'[i][j]=C[j][i] (1 <= i <= q, 1 <= j <= m)。

现在给定矩阵A和B,请你计算矩阵A*矩阵B的乘积结果的转置矩阵,如果矩阵A和矩阵B不能进行乘法运算则直接计算矩阵A的转置矩阵。

输入
两个矩阵A和B
第一行为矩阵的大小,后面跟着输入矩阵,所有元素都是整数,矩阵的行和列大小不超过100
x1,y1
a00 a01 a02
a10 a11 a12
a20 a21 a22
a30 a31 a32
x2,y2
b00 b01 b02 b03 b04
b10 b11 b12 b13 b14
b20 b21 b22 b23 b24
输出
矩阵C’或A'
c00 c01 c02 c03 c04
c10 c11 c12 c13 c14
c20 c21 c22 c23 c24
c30 c31 c32 c33 c34
样例输入
4 3
1 2 3
4 5 6
7 8 9
10 11 12
3 5
7 8 9 10 11
4 5 6 7 8
1 2 3 4 5
样例输出
18 54 90 126
24 69 114 159
30 84 138 192
36 99 162 225
42 114 186 258
提示
输出格式 cout << setw(5) << c[i][j];
头文件要包含 < iomanip >
描述
在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。

要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。

输入
输入含有多组测试数据。

每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一
个n*n的矩阵内描述棋盘,以及摆放棋子的数目。

n <= 8 , k <= n
当为-1 -1时表示输入结束。

随后的n行描述了棋盘的形状:每行有n个字符,其中 # 表示棋盘区域, .
表示空白区域(数据保证不出现多余的空白行或者空白列)。

输出
对于每一组数据,给出一行输出,输出摆放的方案数目C (数据保证
C<2^31)。

样例输入
2 1
#.
.#
4 4
...#
..#.
.#..
#...
-1 -1
样例输出
2
1。

相关文档
最新文档