C语言 BIT

数字金字塔

#include <stdio.h>
int main()
{
    int i, j;
    int n;    
    char maxLetr;    
    
    char ch[26];    
    for(i=0; i<26; i++)
    {
        ch[i] = ‘A‘ + i;
    }
    int x;
    scanf("%d,%c", &x, &maxLetr);    
    getchar();    // 吸收回车
 
    for(i=0; i<26; i++)    
    {
        if(ch[i] == ‘A‘+x-1)
        {
            n = i + 1;
        }
    }
    printf(" ");
    for(i=1; i<=n; i++)    
    {
        for(j=0; j<n-i+1; j++)
        {
            printf(" ");
        }
        for(j=0; j<i; j++)    
        {   
            if(j<n-2){
                    printf("%c ",ch[j]);
            }else{
                printf("%c ",ch[j]);
            }
            
        }
        for(j=0; j<i-1; j++)
        {
            if(j>n-2){
                    printf(" %c",ch[i-j-2]);    
            }else{
                    printf("%c ",ch[i-j-2]);    
            }
        
        }
        printf("\n");
    }
    return  0;
}

有一种特殊偿数,它每一位上的数字都两两不相同。我们现在需理共出四位数中某一区间内的这类困成。

#include <stdio.h>
main()
{
    int a, b, counter, i, number1, number2, number3, number4;
    do
    {
        scanf( "%d%d", &a, &b );
        if ( (a == 0) && (b == 0) )
            break;
        if ( a >= b )
            printf( "Error\n" );
        else{
            if ( (a < 1000) || (b < 1000) )
                printf( "Error\n" );
            else{
                for ( i = a, counter = 0; i <= b; i++ )
                {
                    number1 = i / 1000;
                    number2 = i / 100 % 10;
                    number3 = i / 10 % 10;
                    number4 = i % 10;
                if ( (number1 != number2) && (number1 != number3) && (number1 != number4) && (number2 != number3) && (number2 != number4) && (number3 != number4) )
                    {
                        if ( (i % 2) == 0 )
                        {
                            printf( "%d ", i );
                            counter++;
                        }
                    }
                }
                printf( "\n" );
                printf( "counter=%d\n", counter );
            }
        }
    }while ( (a != 0) && (b != 0) );
    return 0;
}

输入n.A,输出如下例(n=3)所示的字母x

#include<stdio.h>
#include<time.h>
  
char arr[1000];
  
void output(int n, char ch){
  
    int count = 0;
    int tot = n-1; 
    int i, j;
    while(count != tot+2){
        arr[++count] = ch++;
    }
    for(i = n; i >= 2; --i){
        for(j = 0; j < n-i; ++j)
            printf(" ");
        printf("%c", arr[n-i+1]);
        for(j = 0; j < 2*(i-1)-1; ++j)
            printf(" ");
        printf("%c", arr[n-i+1]);
        printf("\n");
  
    }
    for(j = 0; j < n-1; ++j)
            printf(" ");
    printf("%c", arr[n-i+1]);
    printf("\n");
    for(i = 2; i <= n; ++i){
        for(j = 0; j < n-i; ++j)
            printf(" ");
        printf("%c", arr[n-i+1]);
        for(j = 0; j < 2*(i-1)-1; ++j)
            printf(" ");
         printf("%c", arr[n-i+1]);
        printf("\n");
    }
}
int main(){
        int i;
        char ch;
        scanf("%d %c", &i, &ch);
        output(i, ch);
        return 0; 
}

输入一个字符串,将其中的所有字母反转,但是特殊符导位重不变,例如,

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Reverse(char str[]);
int main()
{
    char str[100];
    printf("Input a string:");//Good bye
    gets(str);
    Reverse(str);
}
void Reverse(char str[]){
    int n=strlen(str);
    char mm[100];
    int nn[100]={0};
    strcpy(mm,str);
    int i;
    char temp;
    for(i=0;i<n;i++){
        if(str[i]>‘A‘&&str[i]<‘Z‘){
            continue;
        }else if(str[i]>‘a‘&&str[i]<‘z‘){
              continue;
        }else{
            nn[i]=1;
        }
    }
    for(i=0;i<(n/2)+1;i++){
        temp=str[i];
        str[i]=str[n-i-1];
        str[n-i-1]=temp;
    }
    for(i=0;i<n;i++){
        if(nn[i]==1){
         printf("%c",mm[i]);    
        }else{
            printf("%c",str[i]);
        }
         
    }
}