cunt编程
1. 跪求c语言程序设计报告,学生学籍管理系统
试试看
#include<iostream>
#include<string>
#include<iomanip>
#include<fstream>
using namespace std;
#define NULL 0
class student
{
public:
long num;
string name;
string di,dihua,banji;
student *next;
};
int n; //链结点的个数
student *head,*stu;
/////////////////////////////////////////////////////////////////////
student *creat(void) //创建动态链表 返回以各指向链表头的指针
{ student *head;
student *p1,*p2;
n=0;
p1=p2=new student; //开辟新单元,用P1 P2指向
cout<<"按顺序输入学生的学号,姓名,地址,电话,班级,输入0 * * * *就停止录入(*为任意字符)" <<endl;
cin>>p1->num>>p1->name>>p1->di>>p1->dihua>>p1->banji;
head=NULL;
while(p1->num!=0) //循环输入的作用
{n=n+1;
if(n==1)head=p1;
else p2->next=p1;
p2=p1;
p1=new student; //开辟新单元,
cin>>p1->num>>p1->name>>p1->di>>p1->dihua>>p1->banji; //输入数据
}
p2->next=NULL; //p2指向最后
return(head);
}
///////////////////////////////////////////作为二进制储存和读出二进制文件
void write_read()
{student *p;
student stud[100];
n=0;
for(p=head;p!=NULL;p=p->next)
{ stud[n].di=p->di;
stud[n].dihua=p->dihua;
stud[n].banji=p->banji;
stud[n].name=p->name;
stud[n].num=p->num;
n++;
}
ofstream outfile("student.dat",ios::binary);
if(!outfile)
{ cerr<<"open error...."<<endl;
abort();
}
for(int i=0;i<n;i++)
outfile.write((char*)&stud[i],sizeof(stud[i]));
outfile.close();
ifstream infile("student.dat",ios::binary);
if(!infile)
{ cerr<<"open error...."<<endl;
abort();
}
for(int j=0;j<n;j++)
infile.read((char*)&stud[i],sizeof(stud[i]));
infile.close();
for(int k=0;k<n;k++)
{ cout<<"姓名: "<<stud[k].name<<endl;
cout<<"学号: "<<stud[k].num<<endl;
cout<<"地址 : "<<stud[k].di<<endl;
cout<<"电话: "<<stud[k].dihua<<endl;
cout<<"班级: "<<stud[k].banji<<endl<<endl<<endl;
}
}
///////////////////////////////////////////////////////////////图形的输出
void exit()
{
cout<<" ┃ \n"
" ┃ \n"
" ┏━━━━┻━━━━┓ \n"
" ┃ ┃ \n"
" ┏━━━━┻━━━━━━━━━┻━━━━┓\n"
" ┃ ^^^^^谢谢使用^^^^^^^ ┃\n"
" ┃ ┃\n"
" ┃ 偷得浮生半日闲 ┃\n"
" ┃ ┃\n"
" ┃ ┃\n"
" ┗━━━━━━━━━━━━━━━━━━━┛\n";
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
void print(student *head) //输出链表
{student *p;
cout<<" 学生信息表 "<<endl;
p=head;
if(head!=NULL)
cout<<" "<<endl;
cout<<" 学号 姓名 地址 电话 班级 "<<endl;
cout<<" "<<endl;
if(head!=NULL)
do
{ cout<<setw(12)<<p->num
<<setw(14)<<p->name
<<setw(10)<<p->di
<<setw(10)<<p->dihua
<<setw(10)<<p->banji
<<endl;
cout<<" "<<endl;
p=p->next;
}while(p!=NULL);
}
////////////////////////////////////////////////////////////////////////删除链表
student *del(student *head,long num)
{student *p1,*p2;
if(head==NULL)
{cout<<"此为空表"<<endl;return(head);}
p1=head;
while(num!=p1->num && p1->next!=NULL)
{p2=p1;p1=p1->next;}
if(num==p1->num)
{if(p1==head)head=p1->next;
else p2->next=p1->next;
cout<<"删除"<<num<<endl;
n=n-1;}
else
cout<<"没有该同学数据!"<<num<<endl;
return(head);
cout<<endl<<endl;
}
///////////////////////////////////////////////////////////////////////////// 链表的舔加
student *insert(student *head,student *stud)
{student *p0,*p1,*p2;
p1=head; //P1指向第一个节点
p0=stud; //要插入的节点
if(head==NULL)
{head=p0;p0->next=NULL;} //是P0指向节点作为头
else
{while((p0->num>p1->num)&&(p1->next!=NULL))
{p2=p1; p1=p1->next;}
if(p0->num<=p1->num)
{if(head==p1)head=p0;
else
p2->next=p0;
p0->next=p1;
}
else
{p1->next=p0;p0->next=NULL;} //差 如节点之后
}
n=n+1; //节点+1
return(head);
cout<<endl<<endl;
}
///////////////////////////////////////////////////////////////////////查找学生
void find()
{student *p;
int a;
cout<<"请输入想要找的学生的学号"<<endl;
cin>>a;
for(p=head;p!=NULL;p=p->next)
{ if(a==p->num)
{ cout<<" "<<endl;
cout<<" 学号 姓名 地址 地话 班级 "<<endl;
cout<<" "<<endl;
cout<<setw(12)<<p->num
<<setw(14)<<p->name
<<setw(10)<<p->di
<<setw(10)<<p->dihua
<<setw(10)<<p->banji
<<endl;
cout<<" "<<endl;
break;
}
else
continue;
}
}
///////////////////////////////////////////////////////////////////////////////删除和添加的链表的多次执行的实现
void list()
{ int a;
long del_num;
student *creat(void);//输入学生数据
student *cunt_put(student *);
student *del(student *,long);
student *insert(student *,student *);
void print(student *);
cout<<" "<<endl<<endl<<endl;
head=creat();
print(head); //输出全部结点
cout<<"如果要删除学生资料请输入1,如果需要添加请输入2"<<endl;
cin>>a;
if(a==1)
{ cout<<"输入要删除学号"<<endl;
cin>>del_num;
while(del_num!=0 )
{ head=del(head,del_num);
print(head); //调用输出函数
cout<<"是否继续删除:是(输入学号),不是(输入0)"<<endl;
cin>>del_num;
}
}
cout<<",往下执行就按任意数字"<<endl;
cin>>a;
if (a==2) //操作选择
{ cout<<"输入要添加的就输入学号"<<endl;
stu=new student; //开创新的空间
cin>>stu->num>>stu->name>>stu->di>>stu->dihua>>stu->banji; //输入数据
while(stu->num!=0) //可以循环删除,删除多个
{ head=insert(head,stu); //调用添加函数
print(head); //调用输出函数
cout<<"如果需要添加请输入学号,无需添加输入0 * * * *就停止录入(*为任意字符)"<<endl;
stu=new student;
cin>>stu->num>>stu->name>>stu->di>>stu->dihua>>stu->banji;
}
}
cout<<endl<<endl;
}
/////////////////////////////////////////////////////////////////////////调用各个函数
void swich()
{ int a;
list();//删除和添加调用
cout<<"退出软件输入9 直接查看学生资料输入10"<<endl;
cin>>a;
if(a==9)
exit();
if(a=10)
{ for(int u=0;;u++)
{
cout<<" 0按学号查某个学生的数据 1查看成绩表 3退出系统且读取二进制文件 "<<endl;
int t;
cin>>t;
if(t==1)
{ print(head);continue;
}
if(t==3)
{ exit();
break;
}
if(t==0)
{ find();continue;
}
}
}
cout<<"读取二进制文件如下"<<endl<<endl<<endl;
write_read();
}
////////////////////////////////////////////////////////密码实现
void mima()
{ int n,m=1988825;
for(int j=0;;j++)
{
cout<<"这是我的地盘,请输入密码:"<<endl;
cin>>n;
if(m==n)
{ cout<<"恭喜你猜对了!!!"<<endl;
swich();
break;
}
else
{
cout<<"内有怪物,生人勿进!"<<endl;
continue;
}
}
}
//////////////////////////////////////////////////主函数
int main()
{ mima();
return 0;
}
2. “silly cunt”是什么意思
silly cunt:愚蠢的女人
3. 汇编语言编写程序代码
家里电脑有这样的代码但是你中午之前要肯定不行了
我这里有给定数字的计算正负个数的。你添加个手动输入数值的功能就可以实现你的要求
data segment
MSG DB 20,-3,0,-59,60,-46,-7 ;这里重新定义长度
cunt1 equ $-msg;后面需要重新赋值
cunt2 db 0 ;正数置初值
cunt3 db 0 ;0数置初值
cunt4 db 0 ;负数置初值
buffer db 10h p(0)
data ends
code segment
assume ds:data,cs:code
mov ax,data
mov ds,ax
mov ax,0
mov si,0;下一句就执行键盘输入数据,计算输入的字符个数
mov cx,cunt1;置循环值,输入字符的总数
lp: mov al,msg[si]
test al,ffh;测试是否为0
jz lk1
test al,10000000b;测试符号位
jz lk2
inc cunt4;负数计数加一
lk1: inc cunt3;0数计数加一
lk2: inc cunt2;正数计数加一
inc si;指向下一个数据
loop lp;后面添加显示的代码就可以了
code ends
end start
4. 求c++编程题,难度适中的。。不要简单的,最好趣味性强一些
邮箱
5. 想找一些C++编程例题
一:选择题
1. 下面函数的功能是:( )
int fun(char *x)
{
char *y=x;
while(*y++){};
return y-x-1;
}
a. 求字符串的长度
b. 求字符串存放位置
c. 比较两个字符串的大小
d. 将字符串x连接到字符串y后面
2. 若有以下说明和语句,且0<i<10,则( )是对数组元素的错误引用。
int a[ ]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
a. *(a+i)
b. a[p-a]
c. p+i
d. *(&a[i])
3. 下面程序的输出是:( )
#include <stdio.h>
void main( )
{
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
printf("%d", *(p+2));
}
a. 3
b. 4
c. 1
d. 2
4. 若有以下定义和语句,且0<i<10,则对数组元素地址的正确表示是:( )
int a[ ]={1,2,3,4,5,6,7,8,9,0},*p,i;
p=a;
a. &(a+1)
b. a++
c. *p
d. &p[i]
5.已知:int a,x=1;则下面正确的赋值语句是:( )
a. a=(a[1]+a[2])/2;
b. a=(a[1]+a[2])/2;
c. a=x+2;
d. a="good";
6.已知:int a[]={1,2,3,4,5,6},*p=a;下面表达式中其值为5的是:( )
a.p+=3;*(p++);
b.p+=5;*p++ ;
c.p+=4;*++p;
d.p+=4;++*p;
7. 若有以下语句,且0<=k<6,则正确表示数组元素地址的语句是( )
int x[]={1,9,10,7,32,4},*ptr=x,k=1;
a.x++
b.&ptr
c.&ptr[k]
d.&(x+1)
8.若有说明:int i,j=7,*p;p=&i;则与i=j等价的语句是( )
a.i=*p;
b.*p=*&j;
c.i=&j
d.i=**p;
9. 设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( )
a.k=*p1+*p2;
b.p2=k;
c.p1=p2;
d.k=*p1*(*p2);
10. 设有以下函数定义,则该函数返回的值是( )
int * fun(int a)
{
int *t,n;
n=a;t=&n;
return t;
}
a.一个不可用的存储单元地址值
b.一个可用的存储单元地址值
c.n中的值
d.形参a中的值
二:填空题
1、 给出以下程序的输出结果是
#include<stdio.h>
void main()
{
int *v,b;
v=&b; b=100; *v+=b;
printf("%d\n",b);
}
2、 说明语句"int (* p)();"的含义是
3、 已知函数说明语句:void *fun();则它的含义是
4、 已知:int i;char *s="a\045+045\'b";执行语句"fot(i=0;*s++;i++);"之后,变量i的结果是
5、下面的程序是求两个整数之和,并通过形参传回结果。
int add(intx,int y, z)
{ =x+y;}
6、给出以下程序的输出结果是
void fun(int *x)
{ printf("%d\n",++*x)'; }
main()
{
int a=25;
fun(&a);
}
7、给出以下程序运行的结果
#include <stdio.h>
void main( )
{
int a[ ]={1,2,3,4,5};
int x, y, *p;
p=&a[0];
x=*(p+2);
y=*(p+4);
printf("*p=%d,x=%d,y=%d\n",*p,x,y);
return;
}
8、给出以下程序运行的结果
#include<iostream.h>
void callbyval(int a,int b,int c)
{
a=3;b=2;c=1;
}
void callbypointer(int* a,int* b,int* c)
{
*a=3;*b=2;*c=1;
}
void callbyreference(int& a,int& b,int& c)
{
a=1;b=2;c=3;
}
void main()
{
int a=1,b=2,c=3;
int& a1=a;
int& b1=a;
int& c1=a;
callbyval(a,b,c);
cout<<a<<b<<c<<endl;
callbypointer(&a,&b,&c);
cout<<a<<b<<c<<endl;
callbyreference(a1,b1,c1);
cout<<a<<b<<c<<endl;
}
9、给出以下程序运行的结果
#include<iostream.h>
void ast(int x,int y,int *cp,int *dp)
{
*cp=x*y;
*dp=x%y;
}
void main()
{
int a,b,c,d;
a=2; b=3;
ast(a,b,&c,&d);
cout<<c<<d<<endl;
}
10、给出以下程序运行的结果
#include <stdio.h>
void main( )
{
int a=10,b=0,*pa, *pb;
pa=&a; pb=&b;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
a=20; b=30;
*pa=a++; *pb=b++;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
(*pa)++;
(*pb)++;
printf("%d,%d\n",a,b);
printf("%d,%d\n",*pa,*pb);
}
三:简答和编程题
1. 判断执行下面的语句后,ab的值变为多少
int *var, ab;
ab=100;
var=&ab;
ab=*var+10;
2.已知指针p的指向下图所示,则表达式*--p的值是多少?(这里,a[0],a[1],a[2]……仅作为连续存储单元的代号,a[0]在低地址,a[1]在高地址)。
3. 有定义:double var;那么,
a) 使指针p可以指向double型变量的定义语句是什么?
b) 使指针p指向变量var的赋值语句是什么?
c) 通过指针p给变量var读入数据的scanf函数调用语句是什么?
4.写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
5.编程实现:从键盘输入一任意字符串,然后,输入所要查找字符。存在则返回它第一次在字符串中出现的位置;否则,输出"在字符串中查找不到!" 。并实现对同一字符串,能连续输入所要查找的字符。
6.编程实现:从字符串中删除子字符串。从键盘输入一字符串,然后,输入要删除的子字符串。最后输出删除子串后的新字符串。
一:选择题:
1.A
2.C
3.A
4.D
5.C
6.A
7.C
8.B
9.B
10.A
二:填空题
1. 200
2. p是一个指向函数的指针,该函数的返回值是一个整型
3. 函数fun的返回值是一个通用型的指针
4. 8
由于for语句就是求字符串的长度,所以可以知道i的结果是8
5. (1)int * (2)*z
6. 26
7. *p=1 x=3 y=5
8. 123
321
321
9. 6 2
10. 10,0
10,0
21,31
21,31
22,32
22,32
三、问答和编程题
1. 本例定义了两个变量,int型的变量ab和指向int型的指针变量var;语句var=&ab;是将ab的地址赋给了var,在下一条语句中,*var 表示var所指单元的内容,即100。然后,将*var+10赋给了变量ab;那么,这时ab的值应该是110。
2.根据运算符的优先级,表达式*--p=*(--p)。所以,先执行--p操作,使指针p向低地址方向移动一个存储单元,指向a[1]。然后用运算符"*"取得该地址所存储的数据,即20。
3.(1)要求把p定义成指向double型的指针变量即可,所以定义语句是:double *p;
(2)要使p指向变量var,即将var的地址赋给指针p,赋值语句为:p=&var;
(3)用scanf函数把读入的数据赋给变量var的语句是:scanf("%lf",&var);由于(2)中已将var的地址赋给了p,所以该语句等价于scanf("%lf",p);
4.程序为:
#include <stdio.h>
int length(char* a);
void main( )
{
int len;
char str[20];
printf("请输入一个字符串:");
scanf("%s",str);
len=length(str);
printf("字符串长度为%d",len);
return;
}
int length(char* a)/*求字符串长度函数*/
{
char *p;
p=a;
int n;
n=0;
while(*p!='\0')
{
n++;
p++;
}
return(n);
}
5.程序为:
#include<iostream.h>
char *strchr( char *string,int letter)
{
while((*string!=letter)&&(*string))
string++;
return string;
}
void main()
{
int tt=1;
while(tt){
char title[64];
cout<<"请输入一字符串:";
cin>>title;
char *p;
cout<<"请输入你想查找的字符: ";
char ch;
cin>>ch;
p=strchr(title,ch);
if(*p)
cout<<"所查字符在字符串中第一次出现的位置为: "<<p-title<<endl;
else
cout<<"在字符串中没有所查字符!"<<endl;
cout<<"do u cunteue!1--counte,0--exit"<<endl;
cin>>tt;
}
}
6.程序为:
#include<string.h>
#include<iostream.h>
char* strstr_rep(char *source,char *old)
{
int i,j,k,loc=-1;
for(i=0;source[i]&&(loc==-1);i++)
for(j=i,k=0;source[j]==old[k];j++,k++)
if(!old[k+1])
loc=i;
if(loc!=-1)
{
for(k=0;old[k];k++);
for(j=loc,i=loc+k;source[i];j++,i++)
source[j]=source[i];
source[i]=NULL;
}
return(source);
}
void main()
{
char a[50];
cout<<"请输入一字符串:";
cin>>a;
char b[30];
cout<<"请输入上字符串的一个子串:";
cin>>b;
cout<<strstr_rep(a,b)<<endl;
}
6. 汇编程序,没看到过程,谁能给写一下注释
我的汇编也只学了一点点,你这个问题我无法给出答案,但我知道你的问题出在哪里,你没有图形化思维,汇编的每一步都需要计算的,都可以建立图形的,即你可以通过debug等操作,也可以根据代码在脑中形成图形,看到代码的话,直接换成图像,一目了然。
我敢肯定,许多人学汇编包括其它编程之所以学不会,不是学的太慢了,恰恰是学的太慢了。学汇编,你应该看王爽的《汇编语言》第三版了,这本书I一定给给你极大的启发的。
学汇编的关键是建立图形化思维,看到代码直接换成图形,就很简单了。
7. 用c++实现随机生成大素数
以下的程序在borland c++ complier 5.5下通过,
但在visual c++ 6.0下无法通过,原因是不支持string类的操作
各位可以自己改一改
效果:
PⅢ850
128M ram内存
算到1亿用时:48S
算到10亿用时:580S
算到100亿估计用时:6000S
这仍然太慢,需要改进。
要想算到100亿,unsigned int(max=42亿)
是不行的,需要改进记数格式。
不管程序本身怎么样,这毕竟是我写的第一个c++程序。
让各位见笑了
大家可以用c自己写一个,效果比这个要好。
本来好好的缩进格式,被tencent的傻cgi一过滤,就面目全非了。
大家如果想看好的缩进格式的程序和图表,可以给我留言,把你的邮箱地址给我。
或直接点"回复"->"引用"->"全部"
然后把文字输入框里的文本粘贴到写字板(不是记事本)里,把">"全部替换掉
就可以了
//begin of Primedat.h
#include<iostream.h>
#include<stdlib.h>
class Primedat
{
public:
int onedat; // one of the data
Primedat(int maxprime);
~Primedat();
void initdat(void); //设置指针位置
void marknonprime(void); //标记当前指针所指数据为非素数
void showprime(void); //显示当前指针所指数据
private:
int arrsize; //win98 一个内存页4kB
unsigned short **data; //指针数组,记录各数据数组的首地址
int arrnumlimit; //一个数组所能标记的素数上限
int datID; //内存块索引
int arrID; //数组中数据索引
int bitblockID; //数据内位块索引
int bitID; //位块内的位索引
int pointercunt; //实际申请到的指针数组长度 释放内存标记
int datacunt; //实际申请到的数组个数释放内存标记
short scrwd; //输出数据占屏幕宽度
unsigned short andortable[16];//标记各个数据位的数据表
unsigned short tmp; //取出的数据缓存
short allocerr; //内存分配错误次数
} ; //原来的时候,这里少了个';'所以出错
//end of Primedat.h
//Begin of Primedat.cpp
#include"Primedat.h"
#include<iostream.h>
Primedat::Primedat(int maxprime)
{
allocerr=0;
arrsize=4096; //win98一个内存页4kb,减少内存碎片
arrnumlimit=arrsize*40;
int i=0;
for(i=0;i<16;i++)
{
andortable[i]=1<<i;//此数据表用来屏蔽某些位或将某些位置1
}
int k=0;
int arrnum;
arrnum=maxprime/arrnumlimit+( ((maxprime%arrnumlimit)==0) ? 0 : 1);
cout<<"arrnum: "<<arrnum<<endl;
data=new unsigned short *[arrnum];//建立一个指针数组
if(data==NULL)
{
cout<<"存放指针的模块内存分配错误,程序不能完成指定的操作,任务被放弃"<<endl;
exit(1);
}
pointercunt=arrnum;
getmem:
try
{
for(;datacunt<arrnum;datacunt++)
{
*(data+datacunt)=new unsigned short[arrsize];
if( (*(data+datacunt)) == NULL)
{
throw datacunt;
}
}
}
catch(int datacunt) // 处理内存分配错误
{
allocerr++;
if(allocerr<3)
{
cout<<"在分配第"<<datacunt+1<<"块内存时失败,系统正在尝试重新分配"<<endl;
goto getmem;
}
else
{
cout<<"内存分配错误已达4次,可能操作系统内存不足。"<<endl
<<"程序不能完成指定的操作,任务被迫放弃"<<endl;
exit(1);
}
}
for(i=0;i<pointercunt;i++)
for(k=0;k<arrsize;k++)
{
*( *(data+i)+k )=0; //初始化数据块
}
cout<<"^_^ 内存初始化完成,primedat类的对象构造成功"<<endl;
}
Primedat::~Primedat() //释放内存
{
for(int i=0;i<pointercunt;i++)
{
delete []( *(data+i) );
}
delete []data;
}//finished
void Primedat::initdat(void)
{
datID=onedat/arrnumlimit;
arrID=(onedat%arrnumlimit)/40;
bitblockID=(onedat%40)/10;
switch(onedat%10)
{
case 1:bitID=0;
break;
case 3:bitID=1;
break;
case 7:bitID=2;
break;
case 9:bitID=3;
break;
default:
cout<<"函数异常调用:"<<endl
<<"Prmiedat::initdat(void)"<<endl
<<"参数非法,int onedat="<<onedat<<"程序被迫中止"<<endl;
exit(1);//非法调用时退出
}
tmp=*(*(data+datID)+arrID);
} //end of function
void Primedat::marknonprime(void)
{
*( *(data+datID) +arrID) |= andortable[bitblockID*4+bitID];//将一个非素数所在的位置1
}//end of function
void Primedat::showprime(void)
{ unsigned short bitsig[4]={1,3,7,9};
if( (tmp&andortable[bitblockID*4+bitID]) ==0)
{
cout<<onedat<<" ";//输出一个素数
scrwd++;
if(scrwd==8)
{
scrwd=0;
cout<<endl;//达到8个数后换行
}
}
}//end of function
//end of Primedat.cpp
#include<math.h>
#include<stdio.h>
#include<iostream.h>
#include<string.h>
#include"Primedat.cpp"
#include<time.h>
int main(void)
{
string cmd; //用户输入的命令
const int goal=100000000; //计算目标1亿
int basecunt=3; //外层计数器
int baseflag=3; //外层加标志
int numcunt; //内层计数器
int numflag; //内层加标志
clock_t start ,end; //计算开始和终止时间
start=clock(); //开始计时
Primedat *tenb;
tenb =new Primedat(goal);
const int basegoal=(int)sqrt(goal); //只需计算到goal^(1/2)
int multmp; //中间乘结果
while(basecunt<basegoal) //开始
{
numcunt=basecunt;
numflag=baseflag;
while( (multmp=basecunt*numcunt) <goal)
{
tenb->onedat=multmp;
tenb->initdat();
tenb->marknonprime();
numflag++;
if(numflag==4)//1,3,7,9
{
numcunt+=4;
numflag=0;
}
else
{
numcunt+=2;
}
}
baseflag++;
if(baseflag==4)
{
basecunt+=4;
baseflag=0;
}
else
{
basecunt+=2;
}
}
end=clock();
cout<<"time: "<<(double)(end-start)/CLOCKS_PER_SEC<<endl;
//生成数据完毕
cout<<"由于生成数据过多,逐一显示将耗费大量时间,"<<endl
<<"输入\"show\"显示,其它任意字符退出"<<endl;
cin>>cmd;
if(cmd=="show")
{
baseflag=0;
for(basecunt=7;basecunt<goal;)
{
tenb->onedat=basecunt;
tenb-> initdat();
tenb->showprime();
baseflag++;
if(baseflag==4)
{
basecunt+=4;
baseflag=0;
}
else
{
basecunt+=2;
}
}
}
delete tenb;
return 0;
}//end of main
链接里是全部详细编程思路与过程
参考资料:http://www.graphics.net.cn/bbs/c_or_cpp/0178/315.asp
8. 编写程序,一个字符串S以"$"字符结束,统计大写字母A出现的次数.
data segment
msg db 'ASFHLSDHFAH$'
count1 equ $-msg
count2 db 0 ;计数置初值
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov si,0
mov cx,count1;置循环值
lp: mov al,msg[si]
cmp al,'$';测试是否为$
jz exit
cmp al,41h;测试是否为A
jnz lk1
inc count2
lk1:
inc si;指向下一个数据
loop lp
exit:
mov ax,4c00h
int 21h
code ends
end start
9. 关于6174问题的C语言编程
以下程序不仅可以计算出需要次数最多的四个数字,而且还有个附加属性,就是算出需要的最多次数。
int sub(int cha)
{
int m[4];
int i=0,j,k;
int max,min,cunt=1;
for(cunt=0;;cunt++)
{
if(cha!=6174)
{
m[0]=cha/1000;
m[1]=(cha%1000)/100;
m[2]=(cha%100)/10;
m[3]=cha%10;
for(i=0;i<4;i++)
{
for(j=i+1;j<4;j++)
{
if(m[i]<m[j])
{
k=m[i];
m[i]=m[j];
m[j]=k;
}
}
}
max=m[0]*1000+m[1]*100+m[2]*10+m[3];
min=m[3]*1000+m[2]*100+m[1]*10+m[0];
cha=max-min;
if(cha==0)
return 0;
}
else
return cunt;
}
}
main()
{
int i=1;
int s=0,t=0;
for(i=1;i<=9999;i++)
{
if(s<sub(i))
{
s=sub(i);
t=i;
}
}
printf("%d %d",s,t);
getch();
}
注:其中,S表示最多的次数,T表示需要次数最多的四个数字。这里的数字是以数值的形式表现的。例如,T=14,表示的四个数字就是0、0、1、4。
上述程序没有做任何注释,如有不理解,可留言。