用户登录
用户注册

分享至

pwordmain

  • 作者: 名不好听不代表人不帅
  • 来源: 51数据库
  • 2020-04-21

1.c语言 指针数组初步,编程题

#include <stdio.h>

void split(char *str, char **a);

int main()

{

char in[10000]={0};

char *a[10000]={NULL};

int i=0;

printf("Please input a string:\n");

//输入字符串

gets(in);

//处理

split(in, a);

//输出单词

printf("Words:\n");

for(;a[i];i++) printf("%s\n", a[i]);

}

void split(char *str, char **a)

{

char *p=str;

//处理第一个单词

if(*p && *p!=' ') {*a++=str;p++;}

while(*p)

{

//处理单词

if(*p!=' ' && *(p-1)=='\0') *a++ = p;

//处理空格

else if(*p==' ') *p='\0';

p++;

}

}

2.用C语言设计实现要求:计算n的阶乘(200<><>

阶乘超过170,double就溢出了,所以200<n<300的阶乘要考虑溢出问题,有两种办法,需要不完全精度时可以将尾数与阶码分开表示,如果要完整精度只能考虑大整数算法,比较慢而且有点麻烦,下边留一个尾数与阶码分开的算法,希望能帮到楼主。代码在VC6测试通过。

#include "stdafx.h"

#include "math.h"

#define MAX_N 10000000.00 //能够计算的最大的n值,如果你想计算更大的数对数,可将其改为更大的值

#define MAX_MANTISSA (1e308/MAX_N) //最大尾数

typedef unsigned short WORD;

struct bigNum

{

double n1; //表示尾数部分

int n2; //表示阶码部分

};

short GetExpBase2(double a) // 获得 a 的阶码

{

// 按照IEEE 754浮点数格式,取得阶码,仅仅适用于Intel 系列 cpu

WORD *pWord=(WORD *)(&a)+3;

WORD rank = ( (*pWord & 0x7fff) >>4 );

return (short)(rank-0x3ff);

}

double GetMantissa(double a) // 获得 a 的 尾数

{

// 按照IEEE 754浮点数格式,取得尾数,仅仅适用于Intel 系列 cpu

WORD *pWord=(WORD *)(&a)+3;

*pWord &= 0x800f; //清除阶码

*pWord |= 0x3ff0; //重置阶码

return a;

}

void calcFac(struct bigNum *p,int n)

{

int i;

p->n1=1;

p->n2=0;

for (i=1;i<=n;i++)

{

if (p->n1 >= MAX_MANTISSA) //继续相乘可能溢出,调整之

{

p->n2 += GetExpBase2(p->n1);

p->n1 = GetMantissa(p->n1);

}

p->n1 *=(double)i;

}

}

void printfResult(struct bigNum *p,char buff[])

{

double logx=log10(p->n1)+ p->n2 * log10(2);//求计算结果的常用对数

int logxN=(int)(floor(logx)); //logx的整数部分

sprintf(buff,"%.14fe%d",pow(10,logx-logxN),logxN);//转化为科学计算法形式的字符串

}

int main(int argc, char* argv[])

{

struct bigNum r;

char buff[32];

int n;

printf("n=?");

scanf("%d",&n);

calcFac(&r,n); //计算n的阶乘

printfResult(&r,buff); //将结果转化一个字符串

printf("%d!=%s\n",n,buff);

return 0;

}

3.C语言怎样设置特定的密码帐号登录系统

#include "stdio.h"

#include "conio.h"

#include "windows.h"

#include "string.h"

int main(void)

{

char szUser[20] = {0};

char *PUser[3]={"hv","km","00000000000"};

char *Pword[3]={"123","321","00000000000"};

char chPwd[4];

int flag_u=0,i=0,flag_p=0,num=0;

printf("Enter user name:");

gets(szUser);

//printf("szUser=%s\n",szUser);

while(i<2)

{

if(strcmp(szUser,PUser[i])==0)

{

flag_u=1;

break;

}

else

{

flag_u=0;

i++;

}

num=i;

}

//printf("num=%d,flag_u=%d\n",num,flag_u);

printf("Enter passwd:");

i=0;

while (i<10)

{

chPwd[i]=getch();

if(chPwd[i]==13)

break;

printf("%c", chPwd[i]);

Sleep(500);

printf("\b*");

i++;

}

chPwd[3]='\0';

//printf("chPwd=%s\n",chPwd);

printf("\n");

if(strcmp(chPwd,Pword[num])==0)

flag_p=1;

else

flag_p=0;

if((flag_u==1)&&(flag_p==1))

printf("登录成功!");

else

printf("您输入的账号或密码错误!");

getch();

}

4.c语言中如何读取一个文件word.txt(10M),并把读取的文件写进磁盘中

#include <stdio.h>

int main()

{

FILE *pword,*pword1;char a;

if((pword = fopen("word.txt","rt")) == NULL) return 0;

if((pword1= fopen("word1.txt","at")) == NULL) return 0;

do

{

a = fgetc(pword);

fputc(a,pword1);

}while (a != EOF);

fclose(pword);fclose(pword1);

return 1;

}

5.C语言编写用户登录程序

艾达的小刀

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#include <time.h>

/*随机码产生函数*/

void RandomCode (char Rcode[])

{

int i;

srand ((unsigned int)time(NULL));

for (i = 0; i < 3; ++i)

Rcode[i] = rand()%10 + '0';

Rcode[i] = '\0';

}

/*登陆函数,判断信息是否匹配,若匹配返回1,否则返回0*/

int LandedApp (char *password[], char Rcode[])

{

char name[10] = {0};

char pword[10] = {0};

char rcode[4] = {0};

printf ("用户名 : ");

gets (name);

printf ("密码 : ");

gets (pword);

printf ("随机码 : ");

gets (rcode);

if (strcmp (name, password[0]) != 0 || strcmp (pword, password[1]) != 0 || strcmp (rcode, Rcode) != 0)

return 0;

else

return 1;

}

int main ()

{

char * password[2] = {"admin", "admin123"}; //用户名和密码

char rc[4] = {0}; //随机码

int count = 3; //可输入次数

puts ("请输入用户名,密码和随机码:");

while (count)

{

RandomCode (rc);

printf ("随机码 : %s\n", rc);

if (LandedApp(password, rc) != 0)

break;

--count;

if (count != 0)

puts ("错误的用户名或密码或随机码,请重新输入: ");

}

if (count != 0)

puts ("\n成功登陆!");

else

puts ("\n登录失败 !");

return 0;

}

艾达的小刀

转载请注明出处51数据库 » pwordmain

软件
前端设计
程序设计
Java相关