Las puntuaciones altas recompensarán 3 preguntas sencillas sobre programación en lenguaje C
# 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 p>
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)
{ p>
Printf("El archivo de destino [%s] no se puede abrir", argv[2]);
fclose(RP); p >
}
Printf("Procesando...00000 líneas");
And (!feof(rp))
{ p >
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 >
{
* 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 * * * * * * * * * * * * * * p>
# 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; p>
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" p>
#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) p>
{printf("Archivo [%s ] no se puede abrir", fn 1); return;}
if((fp2=fopen(fn2, RMODE))==NULL) p>
{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.