visualc課程設計案例精編
Ⅰ 求Visual C++課程設計案例精編電子版下載
書名=Visual C++課程設計案例精編
作者=夏崇鐠,任海軍,余健編著
頁碼=369
ISBN=978-7-302-18612-0
出版社=北京:清華大學出版社 , 2008.11
附件已經上傳
Ⅱ 急求《c語言課程設計案例精編》電子書,急求!!!!最好是pdf!
以我自身經歷來看,感覺看視頻比看書效率高,畢竟理科知識不像是文科的,看書效率太低了。可能一個很簡單的知識點,自己看書得半個小時,但是懂的人就講幾句話,就能明白了。所以相比之下,還是視頻效率比看書高。選擇個適合自己的就能學懂C了。我當初看的是夏老師的,感覺挺適合我這樣初學者的。他講的不繁瑣啰嗦,都是重點,而且思維原理講的最好。能讓我理解,我感覺這點很重要。比之前看的什麼郝斌曾怡金文的那些繁瑣啰嗦聽不出重點的好多了。
Ⅲ C#課程設計案例精編 這本書的PDF誰有啊!求共享!
書名=C#課程設計案例精編
作者=張仁才,段德亮,趙紅岩編著
頁碼=359
ISBN=978-7-302-17692-3
出版社=北京:清華大學出版社 , 2008.06
附件已經上傳
Ⅳ c語言課程設計案例精編
如果有來一定的基礎的話源,一樓的說的不錯先學學「數據結構」的相關知識!演算法在程序設計中有很「重要」的作用……其實學c主要是學編程的思想!你要是就一個個的死學案例,也只是會設計類似的東西!不會有創新,甚至有的地方會根本搞不明白。不知道你基礎怎麼樣?如果不是很好,就復習《數據結構吧》清華出版社 那本嚴蔚敏的數據結構(C語言版)。比較容易理解,最好還是要看些英文的原版數據結構的書。
當然如果你數據結構學得很好的話,比如你就是想通過一些案例的開發,來增強自己的實戰能力,你可以深入學習你說的那本書,其實你只要仔細看一下就會發現,其實案例設計的教程中文版的根本沒什麼創新都停留在以下幾個「經典問題」上,不同的版本也沒什麼太多的區別就是重印一下而已!這本書作為對編程基本功的訓練不錯!
案例一:貪吃蛇游戲
案例二:計算器
案例三:黑白棋游戲
案例四:迷宮問題
案例五:掃地雷游戲
案例六:速算24
案例七:數據結構CAI系統
案例八:進度調度
案例九:存儲管理分區分配演算法
案例十:通訊錄
案例十一:學生成績管理
案例十二:工資管理
案例十三:圖書借閱管理
案例十四:教師工作量計算
相關下載地址:
Ⅳ visual c++ 課程設計案例精選與編程指導 四則運算答案誰有啊 東南大學出版的
^#include<iostream.h>
#include<string.h>
#include<stdlib.h>
char pause;
int len(char*source)
{ int retval=0;
while(*(source+retval++)!=0){}
return --retval;
}
class CStr{
private:
int nlen;
char *pstr;
public:
CStr(){};
CStr(char *str){nlen=len(str);pstr=str;}
int Getlen(){return nlen;}
char*Getstr(){return pstr;}
CStr(CStr&str){nlen=str.Getlen();pstr=str.Getstr();}
char * Getpstr(){return pstr;}
void midstr(CStr & str1,int start,int length);
void left(CStr & str1,int length);
void right(CStr & str1,int length);
calculate();
friend int charinstr(char);
double val();
str(double val);
friend istream &operator>>(istream &,CStr &);
int Judge();
};
void CStr::left(CStr & str1,int length)
{ char*destination=pstr;char *source=str1.Getstr();
*(destination+--length+1)=0;
while(length>=0){
*(destination+length)=*(source+length--);
}
}
void CStr::midstr(CStr & str1,int start,int length)
{ char *source=str1.Getstr();
source+=start-1;
char*destination=pstr;
*(destination+--length+1)=0;
while(length>=0){
*(destination+length)=*(source+length--);
}
}
void CStr::right(CStr & str1,int length)
{ char *source=str1.Getstr();
while(*source!=0){
source++;
}
char*destination=pstr;
source-=length;
*(destination+--length+1)=0;
while(length>=0){
*(destination+length)=*(source+length--);
}
}
int charinstr( char *destination,char char_to_find)
{
int pos=0;
while(*(destination+pos)!=0){
if(char_to_find==*(destination+pos++)){
return pos;
}
}
return 0;
}
CStr::str(double value)
{
char*tempdest=pstr;
int a=0;
int b=(int)value;
double c=value-b;
int multiplier=1000000000;
for (multiplier=1000000000;multiplier!=0;multiplier/=10){
*tempdest='0'+(char)(b/multiplier);
b-=(b/multiplier)*multiplier;
if((*tempdest!='0')||(a)){
a++;tempdest++;
}
}
if(c==0){*tempdest=0;}
else{*tempdest++='.';
for(a=1;a<=4;a++)
{c*=10;int d=(int)c;
if(d!=0||a<4){*tempdest++='0'+d;}
c-=d;
}
*tempdest=0;
}
}
char*addstrings(char*destination,char*source1,char*source2)
{ char*tempdest=destination;
while(*source1!=0){*(tempdest++)=*(source1++);}
while(*source2!=0){*(tempdest++)=*(source2++);}
*tempdest=0;
return destination;
}
double pwr(double a,double b)
{ double result=1;
for(int c=1;c<=b;c++){result*=a;}
return result;
}
double CStr::val()
{
char*source=pstr;double result=0;CStr nstr(source);
int z=charinstr(source,'.');
if(z==0){int multiplier=(int)pwr(10,len(source)-1);
while(*source!=0){
result+=(*(source++)-'0')*multiplier;multiplier/=10;
}
return result;
}
else{
char a1[50];
CStr A1(a1);
A1.left(nstr,z-1);
char*nint=A1.Getstr();
int multiplier=(int)pwr(10,len(nint)-1);
while(*nint!=0){
result+=(double)(*(nint++)-'0')*multiplier;multiplier/=10;
}
char a3[50];
CStr A3(a3);
A3.midstr(nstr,z+1,len(source)-z);
char *ndouble=A3.Getstr();
for(multiplier=10;*ndouble!=0;ndouble++){
result+=((double)(*(ndouble)-'0'))/(double)multiplier;
multiplier*=10;
}
}
return result;
}
char*assignstr(char*source,char*destination)
{ char*tempdest=destination;
while (source!=0){*(tempdest++)=*(source++);}
*tempdest=0;
return destination;
}
CStr::calculate()
{
char*string=pstr;
CStr nstr(string);
char buf1[50],buf2[50],buf3[50],buf4[50],buf5[50];
CStr cuf1(buf1),cuf2(buf2),cuf3(buf3),cuf4(buf4),cuf5(buf5);
char opstr[6]="^/*+-";
double leftnr;
double rightnr;
int oppos;
int z;
double result;
for(int pos_in_opstr=0;pos_in_opstr<=4;pos_in_opstr++){
while(charinstr(string,opstr[pos_in_opstr])){
oppos=charinstr(string,opstr[pos_in_opstr]);
for (z=oppos-2;z>=0;z--){
if ((*(string+z)=='+')||(*(string+z)=='/')||(*(string+z)=='-')||(*(string+z)=='*')||(*(string+z)=='^')){
cuf1.midstr(nstr,z+2,oppos-z-2);
leftnr=cuf1.val();
z=-1;
}
else if(z==0){
cuf1.left(nstr,oppos-1);
leftnr=cuf1.val();
}
}
for(z=oppos;z<len(string);z++){
if((*(string+z)=='+')||(*(string+z)=='/')||(*(string+z)=='-')||(*(string+z)=='*')||(*(string+z)=='^')){
cuf2.midstr(nstr,oppos+1,z-oppos);
rightnr=cuf2.val();z=len(string);
}
else if(z==len(string)-1){
cuf2.right(nstr,len(string)-oppos);
rightnr=cuf2.val();
}
}
if (opstr[pos_in_opstr]=='+'){result=leftnr+rightnr;}
else if (opstr[pos_in_opstr]=='-'){result=leftnr-rightnr;}
else if (opstr[pos_in_opstr]=='/'){result=leftnr/rightnr;}
else if (opstr[pos_in_opstr]=='*'){result=leftnr*rightnr;}
else if (opstr[pos_in_opstr]=='^'){result=pwr(leftnr,rightnr);}
cuf4.left(nstr,oppos-len(&buf1[0])-1);
cuf5.str(result);
addstrings(&buf3[0],cuf4.pstr,cuf5.pstr);
cuf5.right(nstr,len(string)-oppos-len(&buf2[0]));
addstrings(string,cuf3.pstr,cuf5.pstr);
}
}
cout<<"運行的結果是"<<pstr<<endl;
}
istream & operator>>(istream&is,CStr&ss)
{ char a[50];
char *x=a;
char *y=ss.pstr;
cin.getline(x,50);
while(*x!=0){*(y++)=*(x++);}
*y=0;
return is;
}
int CStr::Judge()
{
char *p,*s,*r,*source=pstr;
p=source;s=p+1;
while(*p!=0)
{r=p;
if(*p==' '){
while(*s!=0){*p=*s;p++;s++;}
*p=0;p=r;s=p+1;
continue;
}
p=r+1;s=p+1;
}
cout<<"去除空格後的算式:"<<pstr<<endl;
char *destination=source;
while(*destination!=0)
{if('('<=*destination&&*destination<='+'||'-'<=*destination&&*destination<='/'||'0'<=*destination&&*destination<='9'||*destination=='^'||*destination==' ')
{destination++;}
else{return 0;}
}
destination=pstr;
if(*destination=='^'||*destination=='*'||*destination=='/'||*destination=='+'||*destination=='-')
{ return 0;}
int pos_in_opstr;
int pos;int z;
char opstr[6]="^/*+-";
for(pos_in_opstr=0;pos_in_opstr<=4;pos_in_opstr++)
{
while(charinstr(source,opstr[pos_in_opstr]))
{
pos=charinstr(source,opstr[pos_in_opstr]);z=pos;
if(*(source+z)=='^'||*(source+z)=='*'||*(source+z)=='/'||*(source+z)=='+'||*(source+z)=='-'||*(source+z)==0)
{return 0;}
z-=2;
if(*(source+z)=='^'||*(source+z)=='*'||*(source+z)=='/'||*(source+z)=='+'||*(source+z)=='-'||*(source+z)==0)
{return 0;}
else{source+=pos;}
}
}
return 1;
}
void main()
{ CStr myrecord;
cout<<"\2 歡迎使用四則運算程序 \2 \n";
cout<<"\2 \2 \n";
cout<<"\2 \2 \n";
cout<<"\2 \2 \n";
cout<<"\2 \2 \n";
cout<<"\2 \2 \n";
cout<<"\2 設計者: ** \2 \n";
cout<<"\2 \2 \n";
cout<<"\2 \2 \n";
cout<<"\2 按回車鍵繼續 \2 \n";
cin.get(pause);
system("cls");
int choice=1;
while(choice){
char strn[50],f1[50],f2[50],f3[50],f4[50],f5[50];
CStr buf1(f1),buf2(f2),buf3(f3),buf4(f4),buf5(f5),origin(strn),oristr(strn);
int z,lastopen;
cout<<"請輸入一個算式\n";
operator >>(cin,oristr);
if(oristr.Judge()==0){;
cout<<"輸入有誤,請重新輸入\n";
continue;
}
else{
cout<<"輸入的算式是:"<<oristr.Getstr()<<endl;
while(charinstr(&strn[0],'(')){
for(z=0;z<=len(&strn[0]);z++){
if(strn[z]=='('){lastopen=z;}
if(strn[z]==')'){
buf1.midstr(oristr,lastopen+2,z-lastopen-1);
cout<<"在"<<origin.Getstr()<<"中,找到"<<buf1.Getstr()<<",提出進行計算"<<'\n';
buf3.left(oristr,lastopen);
buf2.right(oristr,len(&strn[0])-z-1);
buf1.calculate();
addstrings(&strn[0],addstrings(&f4[0],buf3.Getstr(),buf1.Getstr()),buf2.Getstr());
cout<<"新的式子是:"<<strn<<endl;
z=len(&strn[0])+1;
}
}
}
}
oristr.calculate();
cout<<"計算結果為:"<<oristr.Getstr()<<endl;
cout<<"退出嗎?\n"<<"繼續計算請輸入1,退出程序請輸入0"<<endl;
cin>>choice;
cin.get();
}
cout<<"現在退出運算!\n";
}
Ⅵ 求Delphi 7課程設計案例精編 趙應丁 PDF
只有源代碼的下載,沒有PDF的
Ⅶ visual c++ 課程設計案例精選與編程指導 四則運算 答案
|//輸入表達式,可以求出值
#include <iostream>
#include <cstdlib>
#include <cctype>
#include <cstring>
using namespace std;
enum types { DELIMITER = 1, VARIABLE, NUMBER};
class parser {
char *exp_ptr; // points to the expression
char token[80]; // holds current token
char tok_type; // holds token's type
void eval_exp2(double &result);
void eval_exp3(double &result);
void eval_exp4(double &result);
void eval_exp5(double &result);
void eval_exp6(double &result);
void atom(double &result);
void get_token();
void serror(int error);
int isdelim(char c);
public:
parser();
double eval_exp(char *exp);
};
// parser constructor
parser::parser()
{
exp_ptr = NULL;
}
// Parser entry point.
double parser::eval_exp(char *exp)
{
double result;
exp_ptr = exp;
get_token();
if(!*token) {
serror(2); // no expression present
return 0.0;
}
eval_exp2(result);
if(*token) serror(0); // last token must be null
return result;
}
// Add or subtract two terms.
void parser::eval_exp2(double &result)
{
register char op;
double temp;
eval_exp3(result);
while((op = *token) == '+' || op == '-') {
get_token();
eval_exp3(temp);
switch(op) {
case '-':
result = result - temp;
break;
case '+':
result = result + temp;
break;
}
}
}
// Multiply or divide two factors.
void parser::eval_exp3(double &result)
{
register char op;
double temp;
eval_exp4(result);
while((op = *token) == '*' || op == '/' || op == '%') {
get_token();
eval_exp4(temp);
switch(op) {
case '*':
result = result * temp;
break;
case '/':
result = result / temp;
break;
case '%':
result = (int) result % (int) temp;
break;
}
}
}
// Process an exponent
void parser::eval_exp4(double &result)
{
double temp, ex;
register int t;
eval_exp5(result);
if(*token== '^') {
get_token();
eval_exp4(temp);
ex = result;
if(temp==0.0) {
result = 1.0;
return;
}
for(t=(int)temp-1; t>0; --t) result = result * (double)ex;
}
}
// Evaluate a unary + or -.
void parser::eval_exp5(double &result)
{
register char op;
op = 0;
if((tok_type == DELIMITER) && *token=='+' || *token == '-') {
op = *token;
get_token();
}
eval_exp6(result);
if(op=='-') result = -result;
}
// Process a parenthesized expression.
void parser::eval_exp6(double &result)
{
if((*token == '(')) {
get_token();
eval_exp2(result);
if(*token != ')')
serror(1);
get_token();
}
else atom(result);
}
// Get the value of a number.
void parser::atom(double &result)
{
switch(tok_type) {
case NUMBER:
result = atof(token);
get_token();
return;
default:
serror(0);
}
}
// Display a syntax error.
void parser::serror(int error)
{
static char *e[]= {
"Syntax Error",
"Unbalanced Parentheses",
"No expression Present"
};
cout << e[error] << endl;
}
// Obtain the next token.
void parser::get_token()
{
register char *temp;
tok_type = 0;
temp = token;
*temp = '\0';
if(!*exp_ptr) return; // at end of expression
while(isspace(*exp_ptr)) ++exp_ptr; // skip over white space
if(strchr("+-*/%^=()", *exp_ptr)){
tok_type = DELIMITER;
// advance to next char
*temp++ = *exp_ptr++;
}
else if(isalpha(*exp_ptr)) {
while(!isdelim(*exp_ptr)) *temp++ = *exp_ptr++;
tok_type = VARIABLE;
}
else if(isdigit(*exp_ptr)) {
while(!isdelim(*exp_ptr)) *temp++ = *exp_ptr++;
tok_type = NUMBER;
}
*temp = '\0';
}
// Return true if c is a delimiter.
int parser::isdelim(char c)
{
if(strchr(" +-/*%^=()", c) || c==9 || c=='\r' || c==0)
return 1;
return 0;
}
int main()
{
char expstr[80];
cout << "Enter a period to stop.\n";
parser ob; // instantiate a parser
for(;;) {
cout << "Enter expression: ";
cin.getline(expstr, 79);
if(*expstr=='.') break;
cout << "Answer is: " << ob.eval_exp(expstr) << "\n\n";
};
return 0;
}
Ⅷ 誰有C#課程設計案例精編的電子版或PDF文檔!
給你發了一份pdf(好像不是張仁才的)和一份源碼。。。希望對你有幫助!!!!
這本書真的好難找,所以就給你源碼咯!!!!。源碼很好。
Ⅸ visualc++課程設計案例精選與編程指導矩陣乘法計算答案 好心人幫幫忙啊c++一竅不通謝謝啦
我編過c的,你要麼,要的話請追問