Red de conocimiento informático - Consumibles informáticos - Las puntuaciones altas recompensarán 3 preguntas sencillas sobre programación en lenguaje C

Las puntuaciones altas recompensarán 3 preguntas sencillas sobre programación en lenguaje C

// Tema 1 * * * * * * * * * * * * * *

# include & ltstdio.h & gt

int chType(char c)

{

if(c & gt;= ' A ' & amp& ampc & lt= ' Z ' | | c & gt= ' a ' & amp& ampc & lt='z ') return 0; //letra

if (c & gt; = ' 0 ' & amp& ampc & lt= '9 ') devuelve 1 //número

if (c!= ""&&c!='\t'&&c!='\n'&&c!='\b')Return 2;//other

Return 3 //carácter de espacio

}

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

{

char nombre de archivo buf[256]= { 0 }; /p>

int recuento[4]= { 0 };

int k

ARCHIVO * rfp

if(argc & gt; 1 ) //Los parámetros en la línea de comando se incorporan al nombre del archivo.

strncpy(FileNameBuf, argv[1], 255);

Else //Ingreso durante la ejecución del programa

{

Printf ( "Ingrese la ruta del archivo que se va a contar");

gets(filename buf

}

if((rfp=fopen(FileNameBuf,"); Rb ")= = NULL)

{

Printf("El archivo [%s] no se puede abrir", nombre de archivo buf); return-1;

}

Printf("Contar...");

And(!feof(rfp)

{

contar[chType ( k = fgetc(RFP))]++;

if (k! = 3) printf ("%c ", k); else printf (" "); lt Si no se permite la salida del archivo, comente toda la línea.

}

fclose(RFP);

printf("\nInformación estadística:\n\tNúmero de letras:%d\n\tNúmero de dígitos: % d\n\tEspacio:% ​​d\n\tOtros caracteres:% d\n",

cuenta[0], cuenta[1], cuenta[3], cuenta[2]);

Printf ("\ t \ tTotal * *:% d \ n ",cuenta[0]+cuenta[1]+cuenta[3]+cuenta[2]);

Return 0;

}

//Tema 2 * * * * * * * * * * * * * * *

# include & ltstdio .h & gt

# incluir & ltio.h & gt

# incluir & ltconio.h & gt

# incluir & ltstring.h & gt

#Definir tamaño de búfer 10240

char remarkFlag[3][3]={"//", "/*", " */" };

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

{

char buf[BUFSIZE];

char *p0, *p1, * p2

ARCHIVO *rp, *wp

int flag=0, n = 0;

if (argc!=3)

{

Printf("Cancelar comentario del programa, llamar al método:\nNombre del comando ruta del archivo fuente para generar la ruta del archivo"); (rp=fopen(argv[1]," rt))== NULL)

{

Printf("El archivo fuente [%s] no se puede abrir", argv [1 ]); retorno-2;

}

if(acceso(argv[2], 0)==0)

{

Printf("El archivo de destino [%s] ya existe, desea sobrescribirlo (Y/N):", argv[2]);

int c = getch();

p>

If (c!= ' Y ' & amp& ampc! = ' y ')return-3;

Printf("¡Sobrescribir el archivo de destino [%s]! ! ! \ n ");

}

if((wp=fopen(argv[2], " wt ")== NULL)

{

Printf("El archivo de destino [%s] no se puede abrir", argv[2]);

fclose(RP); p >

}

Printf("Procesando...00000 líneas");

And (!feof(rp))

{

printf(" \ b \ b \ b \ b \ b % 5d línea ",++ n

if(buf==fgets(buf,BUFSIZE,rp))< / p>

{

Reemplazo:

p0 = strstr(buf, remarkFlag[0]);

p1 = strstr(buf, remarkFlag[ 1 ]);

p2 = strstr(buf, remarkFlag[2]);

if (!Flag & amp& amp!p0 & amp& amp!P1) // Líneas sin comentarios

f

puts(buf, WP);

Else if(flag) //Encuentra el final del comentario entre líneas.

{

Si (p2)

{

p0=buf, p2++, p2++;

mientras (* p+ = * p2++);

flag = 0;

Ir a reemplazo

}

}

Otro

{

If (p0 & amp& amp(!p 1 | | P0 & lt; P1))//La línea de comentario comienza con una doble barra

{

* p+ = ' \ n '; * p0 = ' \ 0

fputs(buf, WP);

}else if (p1) // Varias líneas de comentarios pueden terminar en esta línea o n líneas más tarde.

{

* p 1++ = ' \ 0 '; * p 1++ = ' \ 0 '; ;

bandera = 1;

p0 = buf

mientras(* p+ = * p 1++);

Ir a Reemplazar;

}

}

}

}

fclose(RP); ;

Printf("\b\b\b\b\b\bProcesamiento completado.

\n ");

Devuelve 0;

}

//Tema 3 * * * * * * * * * * * * * *

# incluir & ltstdio.h & gt

typedef estructura_enlace nodo

{

int valor;

estructura _ LinkNode * siguiente

} LinkNode

void append(int value, LinkNode **head)

{

nodo de enlace * p = (nodo de enlace *)malloc(sizeof(nodo de enlace));

p->; valor = valor p->; siguiente = NULL

if(* head = = NULL )* head = p;

En caso contrario {

int I;

LinkNode * node = * head

LinkNode * nodetmp = NULL

mientras((I =(valor>nodo->valor))&&nodo->siguiente!=NULL){

nodetmp = nodo ;

nodo = nodo-& gt;Siguiente;

}

If(i==0){// Anterior

if(nodo tmp){ nodo tmp->next = p;p->next=node;}

else { p->next=node;* head = p;}

}else{ //Después de la inserción

p->; siguiente = nodo-& gt; siguiente

Nodo->; >

}

}

int pop(LinkNode **head)

{

int valor = 0;

if (head!=null)

{ valor =(* head)->value;

LinkNode * p = * head

* head = p-& gt; Siguiente;

Eliminar p

}

Valor de retorno;

}

#Definir modo txt 1//1: formato de texto 0: formato binario

#if (TXTMODE == 1)

#Definir modo r "rt"

#Definir WMODE "wt"

#De lo contrario

#Definir modo r "Rb"

#Definir WMODE "WB"

#endif

void main()

{

char * fn 1 = " a 1 . txt "; >char * fn2 = " a2.txt

char * fn3 = " a3.txt

ARCHIVO *fp1, *fp2 , * fp3

LinkNode * pHead = NULL

int k;

if((fp1=fopen(fn1, RMODE))==NULL)

{printf("Archivo [%s ] no se puede abrir", fn 1); return;}

if((fp2=fopen(fn2, RMODE))==NULL)

{printf("Archivo [% s] no se puede abrir", fn2); fclose(F

P 1); return;}

if((fp3=fopen(fn3, WMODE))==NULL)

{printf("El archivo [%s] no se puede abrir" , fn3); fclose(FP 1); fclose(fp2); return;}

Printf("Leer archivos [%s] y [%s], escribir archivo [%s]..." , fn1, fn2, fn3);

Y (!feof(fp1))

#if(TXTMODE==1)

if(fscanf( fp1 , " %d ", &k)==1)

# De lo contrario

if(fread(&k,sizeof(int),1,fp1)== 1)

#endif

Append (k & amp; pHead);

fclose(FP 1

Y (! feof(fp2); ))

#if(TXTMODE==1)

if(fscanf(fp2, " %d ", & ampk)==1)

# De lo contrario

if(fread(& k, sizeof(int), 1, fp2)==1)

#endif

Append (k &pHead );

fclose(fp2);

Y (pHead!=NULL){

k = pop(&pHead

<); p>#if(TXTMODE==1)

fprintf(fp3, " %d ", k

# De lo contrario

fwrite(&k); ,sizeof(int),1,fp2);

#endif

}

fclose(fp3);

p>

Printf("Operación completada");

}

//Toda la depuración pasó bajo //VC7 y todas las funciones están calificadas.

//Se puede utilizar directamente después de la compilación. : Sin límite de tamaño, flexible y cómodo de llamar.

//Solo la pregunta 2 está incompleta y los comentarios falsos entre comillas no se manejan correctamente.