本帖最后由 lissome 于 2012-6-12 14:17 编辑
额,民那,由于代码比较长,以免你们的滚动条缩小了,所以设置了回复隐藏~请不要介意。
这个代码弄了我很久了。问题就是在于原本如果我不用remove()这个函数直接在NewMenu类里new一个游戏面板的时候方块是可以上下左右移动的【请不要吐槽俄罗斯方块不能向上!】
后来由于要有界面友好性所以才搞了个开始面板,然后通过按钮触发事件,跳转到游戏面板。问题是!明明我已经对方块注册了一个键盘监视器,但是就是木有反应,谁能告诉我为神马!?求解决!@125#
【代码神马的略略有点不整齐,希望不要介意~~~】
ps:话说我能不能设置回帖奖励~~?
数据如下,不知道哪里错了,望大神指点
#include "iostream.h"
int main()
{
int a=8;
cout<<a/3;
return 0;
}
[查看全文]
本帖最后由 残冬Nightmare 于 2012-5-27 13:56 编辑
问题是这样子的...在WIN-TC下可以运行:77:...但是在平均分和最大值最小值那里有问题:82:..说什么不可移动的指针(地址常数)赋值在 *** 函数中..我们不学指针变量..怎么才能改过来呢?求高手帮忙啊:84:...我把所有源代码都贴上来..
[mw_shl_code=c,true]#include <stdio.h>
#include <stdlib.h>
#define NUM 10
typedef struct info{ /*学生学分信息的结构类型*/
char class_number[20]; /*班级*/
char number[20]; /*学号*/
char name[20]; /*姓名*/
char score[NUM]; /*分数*/
}INFO;
void displayMenu();
int input (INFO s[], int n);
void output_all (INFO s[], int n);
int add (INFO s[], int n);
void output_number (INFO s[], int n);
void output_class (INFO s[], int n);
void modify (INFO s[], int n);
int delete (INFO s[], int n);
void maxmin (INFO s[], int n);
void average (INFO s[], int n);
main() /*主函数*/
{
INFO s[NUM];
int choice ;
int n=0;
do{
displayMenu();
scanf("%d",&choice);
switch(choice)
{
case 1:n=input(s,n);break;
case 2:output_all(s,n);break;
case 3:n=add(s,n);break;
case 4:output_number(s,n);break;
case 5:output_class(s,n);break;
case 6: modify(s,n);break;
case 7:n=delete(s,n);break;
case 8:maxmin(s,n);break;
case 9:average(s,n);break;
}
clrscr();
} while(choice!=0);
printf("\n\n Thank you for using!!");
getch() ;
}
void displayMenu() /*显示菜单*/
{
printf("\n===============MENU===============\n");
printf("\n1.........Input all student's information.........\n");
printf("\n2.........Output all student's information.........\n");
printf("\n3.........Add a student's information.........\n");
printf("\n4.........Search by number.........\n");
printf("\n5.........Search by class.........\n");
printf("\n6.........Modify a student's information.........\n");
printf("\n7.........Delete a student's information.........\n");
printf("\n8.........Max and min score.........\n");
printf("\n9.........Average score.........\n");
printf("\n0.........Exit.........\n");
printf("\nEnter your choice(0~9):");
}
int input(INFO s[],int n) /*输入成绩信息*/
{
int i,j,a;
clrscr();
printf("Enter total number of students:");
scanf("%d",&a);
n=a;
for(i=0;i<a;i++)
{
printf("Please input the student's class_number(example:110551):");
scanf("%s",&s.class_number);
printf("Please input the student's number(example:11055101):");
scanf("%s",&s.number);
printf("Please input the student's name(not more than 15 letters):");
scanf("%s",&s.name);
for(j=0;j<10;j++)
{
printf("Please input the score(not more than 100):");
scanf("%s",&s[j].score);
}
printf("\n");
}
printf("\nAll the informations have been saved!\n");
getch();
return n;
}
void output_all(INFO s[],int n) /*浏览学生成绩信息*/
{
int i,j;
clrscr();
for (i=0;i<n;i++)
{
printf("\nclass\tnumber\tname\n");
printf("\n%s\t%s\t%s\n",s.class_number,s.number,s.name);
printf("Score:");
for(j=0;j<10;j++)
{
printf("\n%s\n",s[j].score);
}
}
getch();
}
int add(INFO s[],int n) /*添加某位学生的成绩信息*/
{
int i,j,a;
clrscr();
printf("How many students do you want to add?");
scanf("%d" ,&a);
for(i=n;i<a+n;i++)
{
printf("Please input the student's class_number(example:110551):");
scanf("%s",&s.class_number);
printf("Please input the student's number:");
scanf("%s",&s.number);
printf("Please input the student's name(not more than 15 letters):");
scanf("%s",&s.name);
for(j=0;j<10;j++)
{
printf("Please input the score(not more than 100):");
scanf("%s",&s[j].score);
}
printf("\n");
}
n=n+a;
printf("The information has been saved successfully!\n");
getch();
return n;
}
void output_number(INFO s[], int n) /*输出某位学生成绩信息*/
{
int i,j;
char a[10];
clrscr();
printf("Please input the student's number: ");
scanf("%s",&a);
for(i=0;i<n;i++)
{
if(strcmp(s.number,a)==0)
{
printf("\nclass\tnumber\tname\n");
printf("\n%s\t%s\t%s\n",s.class_number,s.number,s.name);
printf("Score:");
for(j=0;j<10;j++)
{
printf("\n%s\n",s[j].score);
}
}
}
getch();
}
void output_class(INFO s[], int n) /*输出某班所有学生成绩信息*/
{
int i,j;
char a[10];
clrscr();
printf("Please input the class number: ");
scanf("%s",&a);
for(i=0;i<n;i++)
{
if(strcmp(s.class_number,a)==0)
{
printf("\nclass\tnumber\tname\n");
printf("\n%s\t%s\t%s\n",s.class_number,s.number,s.name);
printf("Score:");
for(j=0;j<10;j++)
{
printf("\n%s\n",s[j].score);
}
}
}
getch();
}
void modify(INFO s[], int n) /*修改某学生成绩信息*/
{
int i,j;
char a[10];
char b;
clrscr();
printf("Please input the student's number you want to change:");
scanf("%s",&a);
printf("Are you sure?(Y/N) ");
b=getch();
printf("\n");
if(b=='y'||b=='Y')
{
for(i=0;i<n;i++)
{
if(strcmp(s.number,a)==0)
{
printf("Please input the student's class_number(example:110551):\n");
scanf("%s",&s.class_number);
printf("Please input the student's number(example:11055101):\n");
scanf("%s",&s.number);
printf("Please input the student's name(not more than 15 letters):\n");
scanf("%s",&s.name);
printf("Score:");
for(j=0;j<10;j++)
{
printf("Please input the score(not more than 100):");
scanf("%s",&s[j].score);
}
}
}
}
printf("Finish!Press any key to return.");
getch();
}
int delete(INFO s[], int n) /*删除某学生成绩信息*/
{
int i,j,k;
char a,delstudent[10];
clrscr();
printf("Enter the student number that you want to delete:\n");
scanf("%s",&delstudent);
for(i=0;i<n;i++)
{
if(strcmp(s.number,delstudent)==0)
{
printf("\nclass_number\tnumber\tname\n");
printf("\n%s\t%s\t%s\n",s.class_number,s.number,s.name);
printf("Score:");
for(k=0;k<10;k++)
{
printf("\n%s\n",s[k].score);
}
printf("Do your want to delete the student?(Y or N)\n");
scanf("%s",&a);
if(a == 'Y' || a=='y')
{
for (j=i+1;j<n;j++)
{
s[j-1]=s[j];
}
n=n-1;
printf("delete finish.");
}
}
}
getch();
return n;
}
void maxmin(INFO s[],int n) /*最高分和最低分*/
{
int i,j;
int a=0;
int b=100;
clrscr();
printf("The max score is:");
for(i=0;i<n;i++)
{
for(j=0;j<10;j++)
{
if(s[j].score>a)
{
a=s[j].score;
}
}
}
printf("%d",a);
getch();
printf("The min score is:");
for(i=0;i<n;i++)
{
for(j=0;j<10;j++)
{
if(s[j].score<b)
{
b=s[j].score;
}
}
}
printf("%d",b);
getch();
}
void average(INFO s[],int n) /*平均分*/
{
int sum=0;
float ave=0;
int i,j,a;
clrscr();
printf("The average socre is:\n");
for(i=0;i<n;i++)
{
for(j=0;j<10;j++)
{
sum=sum+s[j].score;
}
}
a=10*n;
ave=sum/a;
printf("%f",ave);
getch();
}[/mw_shl_code]
[查看全文]
如下面的:
int NLZSS_11h_uncompress(char *inFileName,char *outFileName)
{
FILE *ifp = fopen(inFileName,"rb");
unsigned char FileID = getc(ifp);
if(FileID != 0x11)
{
fclose(ifp);
return -1;
}
unsigned int outFileSize = 0;
fread(&outFileSize,3,1,ifp);
fseek(ifp,0,2);
unsigned int inFileSize = ftell(ifp)-4;
fseek(ifp,4,0);
unsigned char *inBuffer = new unsigned char[inFileSize];
fread(inBuffer,inFileSize,1,ifp);
fclose(ifp);
unsigned char *outBuffer = new unsigned char[outFileSize];
unsigned char *current_pos = outBuffer;
memset(outBuffer,0,outFileSize);
int backRefLength = 0,
outputLength = 0,
decomp_size = 0,
mask = 0,
count = 0;
int flags = 0,
i = 0;
int r0 = 0,//待解压文件读取指针
r1 = 0,//解压文件写入指针
r2 = 0,//解压大小
r3 = 0,//复制长度
r4 = 0,//LZSS的控制位计数器
r5 = 0,
r6 = 0,
r7 = 0,//作用未知,貌似总是1
r12 = 0,//回溯距离
r14 = 0;//LZSS的ID字节
for( ; ; )
{
if(r4 == 0)
{
flags = inBuffer[r0++];
r4 = 8;
}
if( (flags&0x80) )//解压数据
{
r5 = inBuffer[r0];
if( r5&0xE0 )//r5高三位不全为0
{
r6 = 1;
r3 = r6 + (r5>>4);//复制长度
r0++;
r5 &= 0x0F;
r12 = r5<<8;
r6 = inBuffer[r0++];
r5 = r6 | r12;
r12 = r5 + 1;//回溯距离
}
else//r5高三位全为0
{
r0++;
r6 = r5&0x0F;
r6 <<= 4;
if( r5&0x10 )//第5位不为0
{
r6 <<= 8;
r5 = inBuffer[r0++];
r6 += (r5<<4);
r6 += 0x100;
r6 += 0x11;
r5 = inBuffer[r0];
r3 = r6 + (r5>>4);//复制长度
r0++;
r5 &= 0x0F;
r12 = r5<<8;
r6 = inBuffer[r0++];
r5 = r6 | r12;
r12 = r5 + 1;//回溯距离
}
else
{
r6 += 0x11;
r5 = inBuffer[r0];
r3 = r6 + (r5>>4);//复制长度
r0++;
r5 &= 0x0F;
r12 = r5<<8;
r6 = inBuffer[r0++];
r5 = r6 | r12;
r12 = r5 + 1;//回溯距离
}
}
r1 += r3;
for( ;r3 > 0;r3--)
{
*current_pos++ = outBuffer[current_pos-outBuffer - r12];
}
}
else//直接输出
{
*current_pos++ = inBuffer[r0++];
r1++;
}
if(r1 == outFileSize)
goto END;
flags <<= 1;r4--;
}
END: FILE *ofp = fopen(outFileName,"wb");
fwrite(outBuffer,outFileSize,1,ofp);
_fcloseall();
delete [] inBuffer;
delete [] outBuffer;
return 0;
}
更据上面的东东=。=写出想应的压缩程序,白托咯~~~~~~~~~~~~~~=1012=
[查看全文]
我用exe4j打包了一个jar文件,jar是用eclipse的export功能打包的,程序和jar包都能正常运行,但是我用exe4j打包成exe的时候就报错了
java.lang.NoClassDefFoundError: org/eclipse/swt/widgets/Composite
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at com.exe4j.runtime.LauncherEngine.launch(Unknown Source)
at com.exe4j.runtime.WinLauncher.main(Unknown Source)
这是为什么呢
[查看全文]