C基础编程例题大汇集


练习题:

循环:

391173 for输出三角形字母

391173 for倒序输出三角形字母

391223 字符串(杨辉三角)

391243 for按照格式循环输出字母



定义一个二维数组a[3][4],随机初始化数组中的元素值,然后将a数组矩阵反转后存入到b[4][3]数组中,并将b输出。注意输入使用scanf输入

比如:

输入 3 5 1 4

7 2 6 8

0 9 4 6

输出为

3 7 0

5 2 9

1 6 4

4 8 6


//矩阵转置 输入a[3][4],转为b[4][3];


#include <stdio.h>


int main(void)

{

    int a[3][4],b[4][3];

    int i,j;

    

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

    {

        scanf("%d",&a[0][i]);

    }

    

    for (j = 0; j < 4; j++)

    {

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

        {

            b[j][i] = a[i][j];

            printf("%d ",a[i][j]);

        }

        printf("\n");

    }

    

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

    {

        for (j = 0; j < 3; j++) {

            printf("%d ",b[i][j]);

        }

        printf("\n");

    }

    

    return 0;

}





 数组之间的赋值问题

1>既不写长度,也不初始化可以么?

2>如果不写长度,此时如何动态确定数组的长度?



#include <stdio.h>


int main()

{

    int arr[10];

    int i;

    int len=sizeof(arr)/sizeof(arr[0]);

    int len1=0;

    

    for (i=0; i<len; i++) {

        scanf("%d",&arr[i]);

        len1++;

        if (getchar()=='\n') {

            break;

        }

    }

    

    for (i=0; i<len1; i++) {

        printf("%d ",arr[i]);

    }

    return 0;

}



/* 输入性别,回车,统计男女人数*/

#include <stdio.h>


int main()

{

    char sex[10];

    int i,man=0,female=0;

    int len=sizeof(sex)/sizeof(sex[0]);

    

    for (i=0; i<len; i++) {

        scanf("%c",&sex[i]);

        if (sex[i]=='F'||sex[i]=='f') {

            female++;

        }else if(sex[i]=='M'||sex[i]=='m'){

            man++;

        }else if(sex[i]=='\n'){

            break;

        }

    }

    

    printf("%d %d",female,man);

    

    return 0;

}



#include <stdio.h>

//允许读入空格符

int main()

{

    char ch[50];

    printf("pls input ...");

    scanf("%[^\n]",ch);//正则表达式

    printf("%s\n",ch);

    return 0;

}



/*

定义一个字符数组,输入10个字符到数组中,将字符数组内容逐个输出。

比如:

输入:A B C D E F G H I J

输出:A B C D E F G H I J

输入:1 2 3 4 5 6 7 8 9 10

输出;1 2 3 4 5 6 7 8 9 10

*/

#include <stdio.h>


int main()

{

    char ch[50];

    

    scanf("%[^\n]",ch);

    printf("%s",ch);

    

    return 0;

}




 //将一个数插入一个已知的有序序列中

int main()

{

    int a[6]={1,3,5,7,9};

    int i,insert_num,insert_index=0;

    int len=sizeof(a)/sizeof(a[0]);

 

    scanf("%d",&insert_num);

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

 

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

    {

        if (insert_num<a[i]||i==len-1) break;

        insert_index++;

    }

 

    printf("insert_index=%d",insert_index);

 

    for (i=len-1; i>insert_index;i-- )

    {

        a[i]=a[i-1];

    }

 

    a[insert_index]=insert_num;

 

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

    {

        printf("%d ",a[i]);

    }

 

    return 0;

}





//删除某个数组中的一个数,注意重复出现的数字

int main()

{

    int a[8] = {1,2,3,4,3,3,5,4};

    int i,j,len = sizeof(a) / sizeof(a[0]);

    int num,count = 1;

    

    scanf("%d",&num);

    

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

    {

        if (num == a[i])

        {

            for (j=i; j<len-1; j++)

            {

                a[j]=a[j+1];

            }

            len--;

            i--;

        }

    }

    

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

    {

        printf("%d ",a[i]);

    }

    

    return 0;

}



//找出数组中最小数字,排在首位

#include <stdio.h>


int main()

{

    int a[] = {3,4,6,3,6,7};

    int i,index,temp;

    int len=sizeof(a)/sizeof(a[0]);

    int min=a[0];

    

    for (i=0; i<len; i++) {

        if (min>a[i]) {

            min=a[i];

            index=i;

        }

    }

    

    temp = a[index];

    a[index]=a[0];

    a[0]=temp;

    

    

    for (i=0; i<len; i++) {

        printf("%d",a[i]);

    }

    

    return 0;

}



//选择排序,按从大到小排列

#include <stdio.h>


int main()

{

    int a[]={5,4,3,1,2};

    int index,i,j,temp;

    int len=sizeof(a)/sizeof(a[0]);

    

    for (i=0; i<len-1; i++)

    {

        index=i;

        for (j=i+1; j<len; j++)

        {

            if (a[index]<a[j])

            {

                index=j;

            }

        }

        printf("%d %d \n\n",index,a[index]);

        

        

        if (index!=i) {

            temp = a[i];

            a[i] = a[index];

            a[index] = temp;

        }

        

    }

    

    for (i=0; i<len; i++) {

        printf("%d \n",a[i]);

    }

    

    return 0;

}





/* 字符串比较大小,字符按从小到大排序

 *选择排序

 */

#include <stdio.h>


int main()

{

    char a[] = "helloworld";

    int i,j,temp,index;

    int len=sizeof(a)/sizeof(a[0]);

    

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

    {

        index = i;

        for (j = i+1; j < len-1; j++)

        {

            if (a[index]>a[j])

            {

                index=j;

            }

        }

        

        temp = a[i];

        a[i] = a[index];

        a[index] = temp;

    }

    

    

    for (i = 0; i < len; i++) {

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

    }

    

    return 0;

}




//二维数组



//维数表示

int main()

{

    int a[60][30];

    int row,col;

    

    row = sizeof(a)/sizeof(a[0]);

    col = sizeof(a[0])/sizeof(a[0][0]);

    

    return 0;

}



// 找出二维数组中的最大值


#include <stdio.h>


int main()

{

    int score[3][3]={{2,6,1},{8,1,7},{9,10,3}};

    int i,j;

    int index_i=0,index_j=0;

    int row = sizeof(score)/sizeof(score[0]);

    int col = sizeof(score[0])/sizeof(score[0][0]);

    

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

    {

        for (j = 0; j < col; j++)

        {

            if (a[index_i][index_j]<a[i][j])

            {

                index_i = i;

                index_j = j;

            }

        }

    }

    

    printf("%d\n",score[index_i][index_j]);

    

    return 0;

}




//计算二维数组对角线和

#include <stdio.h>


int main()

{

    int n;

    scanf("%d",&n);

    

    int a[n][n];

    int i,j,sum_right=0,sum_left=0;

    

    for (i = 0; i<n*n; i++) {

        a[0][i]=i+1;

    }

    

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

    {

        sum_left+=a[i][n-i-1];

        sum_right+=a[i][i];

    }

    

    printf("%d %d ",sum_right,sum_left);

    

    return 0;

}




//定义一个数,输入n,数组向后循环移动n

#include <stdio.h>


int main()

{

    int a[5]={1,3,5,2,6};

    int i,j,temp,n;

    int len = sizeof(a)/sizeof(a[0]);

    

    scanf("%d",&n);

    

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

    {

        temp = a[len-1];

        for (j = len-2; j >=0; j--)

        {

            a[j+1]=a[j];

        }

        a[0]=temp;

    }

    

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

    {

        printf("%d ",a[i]);

    }

    

    

    return 0;

}




 输出数字序列2/13/25/38/513/821/13...,输出个数由键盘输入。注意输入使用scanf输入

 比如:

 输入 3输出为

 2/1

 3/2

 5/3

 

 #include <stdio.h>

 

 int main()

 {

     int n,i;

     int up=1,down=1,temp;

 

     scanf("%d",&n);

 

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

     {

         temp=down;

         down=up;

         up = up +temp;

         printf("%d/%d\n",up,down);

     }

 

     return 0;

}

 





输出数字序列 123581321...,输出个数由键盘输入。注意输入使用scanf输入

比如:

输入 3输出为

1

2

3


#include <stdio.h>


int main()

{

    int n,i,num1=0,num=1,temp;

    scanf("%d",&n);

    

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

    {

        temp = num;

        num = num+num1;

        num1 = temp;

        printf("%d ",num);

    }

    

    return 0;

}




/*随机输入一个数组进行排序,冒泡排序

 */

#include <stdio.h>


int main()

{

    int a[10];

    int i,j,temp,index_max=0;

    

    int all_len = sizeof(a)/sizeof(a[0]);

    int len = 0;

    

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

    {

        scanf("%d",&a[i]);

        len ++;

        if (getchar()=='\n')

            break;

    }

    

    for (i = 0; i < len-1; i++)

    {

        for (j = 0; j < len-1-i; j++)

        {

            if (a[j]>a[j+1]) {

                temp = a[j];

                a[j] = a[j+1];

                a[j+1] = temp;

            }

        }

        

    }

    

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

    {

        printf("%d ",a[i]);

    }

    

    return 0;

}



//输入一个数,判断是否是含77的倍数

#include <stdio.h>


int isRight(int n)

{

    if (n%7==0)

    {

        return 1;

    }

    else

    {

        while (n)

        {

            if (n%10==7)

            {

                return 1;

                break;

            }

            n = n/10;

        }

    }

}


int main()

{

    int n ;

    scanf("%d",&n);

    

    printf("%d",isRight(n));

    

    return 0;

}



/*

 输入10个数,找出出现次数最多的数 (如果多个并列,则按数字出现顺序分别输出)

 比如:

 输入:1 5 27 33 24 1 27 18 19 20

 输出:

 1 27

 

 输入: 3 21 44 5 21 9 21 2 8 0

 输出:

 21

 */

#include <stdio.h>


int main()

{

    int a[10],b[10];

    int i,j;

    int num;

    int count;

    int len = sizeof(a)/sizeof(a[0]);

    

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

    {

        scanf("%d",&a[i]);

    }

    

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

    {

        num  = a[i];

        count = 0;

        for (j = i; j < len; j++)

        {

            if (num == a[j]) {

                count++;

            }

        }

        

        b[i] = count;

        //printf("%d ***",b[i]);

        

    }

    

    int max_count = b[0];

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

    {

        

        if (b[i]>max_count)

        {

            max_count = b[i];

        }

    }

    

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

    {

        if (max_count == b[i]) {

            printf("%d ",a[i]);

        }

    }

    

    return 0;

}




/*实现一个函数,传递一个字符数组,利用指针将数组中的小写字符转换成大写字符,并在main函数里,并在main函数中将转换的结果输出。

比如:

输入:Hello World

输出:HELLO WORLD

*/

#include <stdio.h>

#include <string.h>


void change(char *p,int len)

{

    int i;

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

    {

        if (*(p+i)>='a' && *(p+i)<='z')

        {

            *(p+i)=*(p+i)-32;

        }

    }

}


int main()

{

    char ch[20];

    int i;

    

    scanf("%[^\n]",ch);

    int len = strlen(ch);

    

    change(ch,len);

    printf("%s",ch);

    return 0;

}





实现一个函数,传递两个字符数组,输出第二个字符数组在第一个字符数组中出现的次数。

比如:

输入:

abcdfewabcssaba

abc

输出:2


#include <stdio.h>

#include <string.h>


int count(char *p1,char *p2,int len1,int len2)

{

    int count = 0;

    int i,j;

    for (i = 0; i <= len1 - len2; i++)

    {

        for (j = 0; j < len2; j++)

        {

            if(*(p1+i+j)!=*(p2+j))

                break;

            

            //匹配最后一个字符

            if (j==len2-1)

                count ++;

        }

    }

    return count;

    

}


int main()

{

    char ch1[30];

    char ch2[10];

    

    scanf("%s",ch1);

    scanf("%s",ch2);

    int len1 = strlen(ch1);

    int len2 = strlen(ch2);

    

    printf("%d\n ",count(ch1,ch2,len1,len2));

    

    return 0;

}



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值