programa de formación de un nuevo examen de la Universidad Normal de Nanjing siete

61. Introduzca una línea de caracteres, la palabra más larga en esta cadena de salida

#include <stdio.h>
#include <string.h>
void cechang(char str1[],char word0[])
{
    int i=0,j=0,max=0;
    char word1[30];
    for(; str1[i]!='\0'; i++)
    {
        if(!((str1[i]>='A'&&str1[i]<='Z')||(str1[i]>='a'&&str1[i]<='z')))
        {
            max=j;
            j=0;
            continue;
        }
        word1[j]=str1[i];
        j++;   //j用来记录每个单词的长度
        if(j>=max)    //max记录最大长度
        {
            word1[j]=0;
            strcpy(word0,word1);   //用word0[]进行输出
        }
    }
}
int main()
{
    char str[100],word[30];
    gets(str);   //str为输入的字符串
    cechang(str,word);  //获得最长的单词
    puts(word);   //输出
    return 0;
}

El resultado:

62. El método recursivo se convierte en una cadena de número entero n. Por ejemplo, la entrada 483, la salida "483"

#include <stdio.h>

void convert(int n)    //转换,每个字符之间加上空格
{
    int i;
    if((i=n/10)!=0)   //先输出前面的部分
        convert(i);
    putchar(n%10+'0');   //最后一位
    putchar(' '); //输出空格
}
int main()
{
    int number;
    scanf("%d",&number);
    if(number<0)   //如果是负数,进行转换
    {
        printf("-");
        number=-number;
    }
    convert(number);
    printf("\n");
    return 0;
}

El resultado:

63. macros define con referencia a los valores de dos parámetros del intercambio (macro) 

#include <stdio.h>
#define CHANGE(a,b,t) t=a;a=b;b=t;
int main()
{
    int c,d,s;
    scanf("%d %d",&c,&d);
    CHANGE(c,d,s);
    printf("c=%d,d=%d\n",c,d);
    printf("\n");
    return 0;
}

El resultado:

64. El tres entero de entrada, (puntero implementación) en orden descendente de acuerdo con la salida

#include <stdio.h>

int main()
{
    int a,b,c,*p1,*p2,*p3,t;
    scanf("%d %d %d",&a,&b,&c);   //输入三个数
    p1=&a;    //得到三个数的地址
    p2=&b;
    p3=&c;
    if(*p1>*p2)   //进行修改
    {
        t=*p1;
        *p1=*p2;
        *p2=t;
    }
    if(*p1>*p3)
    {
        t=*p1;
        *p1=*p3;
        *p3=t;
    }
    if(*p2>*p3)
    {
        t=*p2;
        *p2=*p3;
        *p3=t;
    }
    printf("由小到大:%d,%d,%d",*p1,*p2,*p3);
    printf("\n");
    return 0;
}

El resultado:

65. Una cadena que contiene n caracteres. Todo cadena de este personaje a partir de la cadena de caracteres m-ésimo sea otra copia. (Puntero)

#include <stdio.h>
#include <string.h>
#define N 10
int main()
{
    char a[N+1],b[N+1],*p,*q;
    int m;
    gets(a);  //输入a字符串
    scanf("%d",&m);  //输入从第几个字符开始
    p=a+m-1;   //p为第m个字符的地址
    q=b;   //q为b的首地址,代表整个字符串,相当于char a[10];scanf("%s",a);其中a的作用
    strcpy(q,p);  //将其进行复制
    puts(q);   //输出新的字符串

    printf("\n");
    return 0;
}
#include <stdio.h>
void copystr(char *p1,char *p2,int m)
{
    int n;
    n=0;
    while(n<m-1)   //循环直到第m-1个字符
    {
        n++;
        p1++;
    }
    while(*p1!='\0')  //将m之后的全部进行复制
    {
        *p2=*p1;
        p2++;
        p1++;
    }
    *p2='\0';
}
int main()
{
    int m;
    char str1[20],str2[20];
    gets(str1);   //输入一个字符串
    scanf("%d",&m);
    copystr(str1,str2,m);  //进行复制
    puts(str2);    //输出复制之后的字符串
    printf("\n");
    return 0;
}

El resultado:

66. Las tres cadenas de entrada, salida en orden ascendente

#include <stdio.h>
#include <string.h>
void swap(char *p1,char *p2)    //形参直接用字符指针变量
{
    //含义如:通过字符数组名或字符指针变量可以输出一个字符串,而对一个数值型数组,不能用数组名输出
    char p[20];
    strcpy(p,p1);
    strcpy(p1,p2);
    strcpy(p2,p);
}
int main()
{
    char str1[20],str2[20],str3[20];
    gets(str1);
    gets(str2);
    gets(str3);
    if(strcmp(str1,str2)>0)
        swap(str1,str2);
    if(strcmp(str1,str3)>0)
        swap(str1,str3);
    if(strcmp(str2,str3)>0)
        swap(str2,str3);
    printf("由小到大顺序:%s %s %s",str1,str2,str3);

    printf("\n");
    return 0;
}

El resultado:

67. Entrada 10 número entero, el número más pequeño en el primer número de intercambio, el número máximo de conmutación con el último número (puntero)

#include <stdio.h>

void max_min_value(int *number)
{
    int *max,*min,*p,temp;
    max=min=number;
    for(p=number+1; p<number+10; p++)       //求最大和最小的地址
        if(*p>*max)
            max=p;
        else if(*p<*min)
            min=p;

    temp=number[0];   //最小的与第一个交换
    number[0]=*min;
    *min=temp;

    temp=number[9];  //最大的与最后一个交换
    number[9]=*max;
    *max=temp;
}
int main()
{
    int i,num[10];
    for(i=0; i<10; i++)
        scanf("%d",&num[i]);
    
    max_min_value(num);
    
    for(i=0; i<10; i++)
        printf("%d ",num[i]);
    
    printf("\n");
    return 0;
}

El resultado:

68. n números enteros, de modo que el frente de cada número de secuencia de posición hacia atrás m movimiento, y finalmente en el número m del número m de los más destacados

#include <stdio.h>
void move(int *array,int n,int m)
{
    int *p,array_end;
    array_end=*(array+n-1);   //值为最后一个数
    for(p=array+n-1; p>array; p--)  //将第1~9个数依次往后移一个
        *p=*(p-1);
    *array=array_end;    //将最后一个数赋值给第一个数
    m--;   //相当于需要移动的次数
    if(m>0)
        move(array,n,m);  //进行下一次移动
}
int main()
{
    int i,a[10]= {1,2,3,4,5,6,7,8,9,10};
    printf("原数组为:\n");
    for(i=0; i<10; i++)
        printf("%d ",a[i]);
    printf("\n");
    move(a,10,4);
    printf("移动之后的数组为:\n");
    for(i=0; i<10; i++)
        printf("%d ",a[i]);
    printf("\n");
    return 0;
}

El resultado:

69. cordones n personales numeran secuencialmente. Desde el primer número gettin personal (de 1 a 3 el número de periódico), en el que el informe de 3 personas salir del círculo. P. ¿La última persona que había dejado atrás unos pocos Nº clasificado

#include <stdio.h>

int main()
{
    int i,k,m,n,num[50],*p;
    scanf("%d",&n);
    p=num;
    for(i=0; i<n; i++) //以1~n为序对n个人进行编号
        *(p+i)=i+1;
    i=0;  //i为循环计数
    k=0; //k为1~3报数的计数
    m=0; //m为退出人数
    while(m<n-1)   //直到还剩最后一个人
    {
        if(*(p+i)!=0)   //相当于从数组中跳过已经删除的人,即数组中为0
            k++;
        if(k==3)
        {
            *(p+i)=0;   //将退出的人的编号置为0
            k=0;  //k重新从0计数
            m++;   //退出人数加1
        }
        i++;
        if(i==n)   //构成一圈
            i=0;

    }
    while(*p==0)
        p++;
    printf("%d",*p);
    printf("\n");
    return 0;
}

El resultado:

70. buscan longitud de una cadena.

#include <stdio.h>
int length(char *p)  //测长度
{
    int n=0;   //n为总个数
    while(*p!='\0')   //从头开始计算个数
    {
        n++;
        p++;    //p为指针
    }
    return n;
}
int main()
{
    int len;
    char str[20];
    gets(str);
    len=length(str);
    printf("长度为:%d",len);
    printf("\n");
    return 0;
}

El resultado:

Publicados 462 artículos originales · ganado elogios 55 · vistas 320 000 +

Supongo que te gusta

Origin blog.csdn.net/LY_624/article/details/105009394
Recomendado
Clasificación