博文

产生4个(0-9)不同数的方法(2005-08-30 20:09:00)

摘要:int main()
{
int a[4];
int i=0,j,k,flag;
//用了一个flag变量,等于1表示随机已经产生过了
while(1)
{
i=0;
while(i<4)
{
flag=0;
k=rand()%10;
for(j=0;j<i;j++)
if(a[j]==k)
flag=1;
if(flag==0) {a[i]=k;i++;}
}
for(i=0;i<4;i++)
printf("%d",a[i]);
printf("\n");
getch();
}
}
......

阅读全文(2490) | 评论:0

关于用fstream或cin输入数据的问题.(2005-08-30 18:20:00)

摘要:#include <iostream.h>
#include <fstream.h>
int main()
{
char s[25];
ofstream f1("data.txt");
f1<<"C++ Programing";
f1.close();
ifstream f2("data.txt");
f2>>s;
cout<<s<<endl;
f2.close();
return 0;
}

前几天有网友问了上面程序输出什么的时候,我看了一下就说是C++ Programing
但在VC++下测试,结果不对,结果只是C++.
考虑了很久,得出结论:用C++的文件流或cin输入字符串数据时候,一遇到空格程序就认为你已经完成了输入了.而把空格后面的数据作为后面的数据.
你可以测试下面的程序.
int main()
{
char s[25];
cin>>s;
cout<<s<<endl;
}
输入数据:C++ Programing
结果是不是:C++?
所以说用ofstream或cin不可以把有空格的字符串赋给s.

如果有一个程序的确想把C++ Programing赋给s怎么办?
1.首先我们可能会想到scanf()
int main()
{
char s[25];
scanf("%s",s);
printf("%s\n",s);
}

输入数据:C++ Programing
结果很失望还是:C++?

2.gets()
int main()
{
char s[25];
gets(s);
printf("%s\n",s);
}
输入数据:C++ Programing......

阅读全文(3155) | 评论:0

另类排序(2005-08-22 10:19:00)

摘要:void sort(int a[],int n)
{int i,j,t;
  for(i=0;i<n-1;i++)
    for(j=i+1;j<n;j++)
      if(a[i]<a[j])   {t=a[i];a[i]=a[j];a[j]=t;}
}
main()
  {int aa[10]={1,2,3,4,5,6,7,8,9,10},i;
   sort(&aa[3],5);
   for(i=0;i<10;i++)  printf("%d,",aa[i]);
   printf("\n");
   }
程序运行后的输出结果是
1,2,3,8,7,6,5,4,9,10,

sort(&aa[3],5);
是从aa[3]开始起对数组的5个元素从大到小排序.
这样排序排序我也是第一次碰到. ......

阅读全文(2100) | 评论:0

输出三位小数(C++)(2005-08-18 16:47:00)

摘要:#include<iomanip.h>
        cout.setf(ios::fixed);
        cout<<setprecision(3)<<Msum<<endl;    ......

阅读全文(1894) | 评论:0

浮点数转换成字符串函数(自编函数)(2005-08-18 00:29:00)

摘要:#include<stdio.h>
#include <math.h>
int float2str(char *s,float a,int len1,int len2)
{
int b,d;
int i;
b=(int)a;
for(i=0;i<len1;i++)
s[i]='0'+(b/(int)pow(10,len1-i-1))%10;
s[len1]='.';
d=(int)((a-b)*(int)pow(10,len2));
for(i=0;i<len2;i++)
s[i+len1+1]='0'+(d/(int)pow(10,len2-i-1))%10;
s[len1+len2+1]='\0';
}
int main()
{
char s[20];
float a=39.2331;
float2str(s,a,2,4);
printf("%s\n",s);
getch();
}......

阅读全文(4075) | 评论:0

表达式求值II(只对整数有效)(2005-08-13 17:53:00)

摘要:int main()
{
    int len=0,i=0,j;
    int m,n,result;
    char op;
    int number=0;
    char enter[100];
    int s1[100],top1=0,top2=0;
    char s2[100];
    s2[top2]='(';top2++;
    scanf("%s",enter);
    for(i=0;i<strlen(enter);i++)
    {
        if(enter[i]>='0' && enter[i]<='9')
        {
            if (enter[i+1]>='0' && enter[i+1]<='9')
                number=10*number+enter[i]-'0';
         &n......

阅读全文(2594) | 评论:0

表达式求值I(只对整数有效)(2005-08-13 17:52:00)

摘要:#include <stdio.h>
#include <string.h>
struct list
{
    int index;
    int a;
    char b;
};
struct list s[100];
/*进堆比较*/
int comp1(char a,char b)
{
    char op[4][2]={'*','/','+','-','(','(',')',')'};
    int i;
    int a1,b1;
    for(i=0;i<4;i++)
    if (a==op[i][0] || a==op[i][1])
    {
        a1=i;
        break;
    }
    for(i=0;i<4;i++)
    if (b==op[i][0] || b==op[i][1])
    {
        b1=i;
        break;
    }
 &nb......

阅读全文(3015) | 评论:0

C语言动态申请空间问题(2005-08-08 00:53:00)

摘要:对一位数组,不知道数组大小可以这样做:
int *a;
int i,n;
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int));
这样就相当于C++的定义:
int n;
int a[n];
cin>>n;

对2位数组操作如下:
int **a;
int i,m,n;
scanf("%d %d",&m,&n);
*a=(int **)malloc(m*sizepf(int *));
for (i=0;i<m;i++)
a[i]=(int *)malloc(n*sizeof(int));
这样就相当于C++的定义:
int m,n;
int a[m][n];
cin>>m>>n;


欢迎大家发表评论.
......

阅读全文(4211) | 评论:2

N皇后问题(2005-08-08 00:42:00)

摘要:#include <stdio.h>


int N;
int *blow;
int **a;
int fun(int r,int l)
{
int i,j;
for (i=0;i<N;i++)
if (a[i][l]==1 || a[r][i]==1) return 0;
for (i=r,j=l;i>=0 && j>=0;i--,j--)
if (a[i][j]==1) return 0;
for (i=r,j=l;i<N && j<N;i++,j++)
if (a[i][j]==1) return 0;
for (i=r,j=l;i>=0 && j<N;i--,j++)
if (a[i][j]==1) return 0;
for (i=r,j=l;i<N && j>=0;i++,j--)
if (a[i][j]==1) return 0;
return 1;
}

int main()
{
int i,j;
int row=0,low=0;/*行,列*/
printf("Enter the N:\n");
scanf("%d",&N);
/*C语言动态申请问题*/
blow=(int *)malloc(N*sizeof(int));
*a=(int **)malloc(N*sizeof(int *));
for (i=0;i<N;i++)
a[i]=(int *)malloc(N*sizeof(int));
/*C语言动态申请问题*/

for (i=0;i<N;i++)
for (j=0;j<N;j++)
a[i][j]=0;
while(1)
{
if (fun(row,low))
{
a[row][low]=1;
blow[......

阅读全文(2841) | 评论:0

八皇后(正确版)(2005-08-08 00:32:00)

摘要:#include <stdio.h>
int blow[8];
int a[8][8];
int fun(int r,int l)
{
int i,j;
for (i=0;i<8;i++)
if (a[i][l]==1 || a[r][i]==1) return 0;
for (i=r,j=l;i>=0 && j>=0;i--,j--)
if (a[i][j]==1) return 0;
for (i=r,j=l;i<=7 && j<=7;i++,j++)
if (a[i][j]==1) return 0;
for (i=r,j=l;i>=0 && j<=7;i--,j++)
if (a[i][j]==1) return 0;
for (i=r,j=l;i<=7 && j>=0;i++,j--)
if (a[i][j]==1) return 0;
return 1;
}

int main()
{
int i,j;
int row=0,low=0;/*行,列*/
for (i=0;i<8;i++)
for (j=0;j<8;j++)
a[i][j]=0;


while(1)
{
if (fun(row,low))
{
a[row][low]=1;
blow[row]=low;
row++;
low=0;
}
else
low++;
if (row>=8) break;
while (low>=8)
{
row--;
low=blow[row];
a[row][low]=0;
low++;
}
}
for (i=0;i<8;i++)
{
for (j=0;j<8;j++)
{
if (a[i][......

阅读全文(2535) | 评论:3