数组课后作业——C语言数组——第四天

课后作业

输入10个整数并将其由小到大排序输出(冒泡排序)。

输入一行字符,统计其中单词的个数,单词之间用空格分隔。

编写一个程序,将字符数组a中的全部字符复制到字符数组b中。

随机输入一个长度小于30的字符串,检测输入的字符串是否存在于"1234567890qwertyuiopasdfghjklzxcv12bnm" 

输入两个字符串,进行拼接,然后输出。

将10个整数放到一维数组中,输出该数组中的最大值和最小值的下标,然后将最小值与和数组中的第一个元素对换,最大值与最后一个元素对换位置。

输入10个数,统计非负数的个数、并计算非负数的和。从键盘输入一个字符串,判断输入字符串中数字的个数、大写字母的个数、小写字母的个数,以*作为字符串输入结束的标志。

提高作业

将下列二维数组行列互换
1 2 3      1 4 7     
4 5 6  >   2 5 8    
7 8 9      3 6 9     

输入一个字符串,判断是否是回文。(回文:这个字符串顺读和反读是一样的。如“abcba”和”123321”

目录

课后作业

提高作业


课后作业

输入10个整数并将其由小到大排序输出(冒泡排序)。


//10个数排9趟(0,1,。。。,8)
//第0趟排10-1-0个数(0,1,。。。,n-2)
//第8趟排10-1-8个数(0)

#include 
int main()
{    

    int i,j;
    int buff[128];
    printf("输入十个整数:");
    for(i =0;i<10;i++)
    {
        scanf("%d",&buff[i]);
    }
    for(i=0;i<10-1;i++)
    {
        for(j=0;j<10-1-i;j++)
            if(buff[j]>buff[j+1])
            {
                int temp;
                temp=buff[j];
                buff[j]=buff[j+1];
                buff[j+1]=temp;
            }
    }
    printf("排序结果:");
    for(i=0;i<10;i++)
        printf("%d ",buff[i]);
    printf("\n");
    
}

/*编译结果:
输入十个整数:12 1 23 43 54 56 12 23 4 23 354 
排序结果:1 4 12 12 23 23 23 43 54 56 
*/

/*******************************************************************************************************/

/*输入一行字符,统计其中单词的个数,单词之间用空格分隔。*/


//gets读入字符串,判断空格个数,以'\0'为结束。

#include 
#include 
int main()
{    
    int i,j=0;
    char buff[128];
    printf("输入字符串:");
    gets(buff);
    for(i=0;i<128;i++)
    {
        if(buff[i]==32 && buff[i]!=0)
            j++;
        if(buff[i]==0)
            break;
    }
    printf("单词个数为:%d\n 个。",j+1);
    
}

/*编译结果:
输入字符串:Anything in life worth doing is worth overdoing.
单词个数为:8 个。
*/

//优化代码:
/*输入一行字符,统计其中单词的个数,单词之间用空格分隔。*/
//分析情况:(1)qwe ert qw;(2)qwe ert qw  ;(3)   qwe ert qw;
//(1)开头结尾无空格,中间连续多空格 
//(2)结尾空格
//(3)开头空格

#include 
#include 
int main()
{    
    int i,num=0;
    char buff[128];
    printf("输入字符串:");
    gets(buff);
    while(buff[i]!=0)
    {
        if(buff[i]==32)
        {//当前i是空格,下一个不是空格也不是结束符,则一个单词
            if(buff[i+1]!=32&&buff[i+1]!=0)
                num++;
        }
        i++;
    }
    if(buff[0]==32)
        printf("单词个数为:%d 个。\n",num);
    else
        printf("单词个数为:%d 个。\n",num+1);
    
}

/*编译结果:
(1)输入字符串:qw qw qw   qw
单词个数为:4 个。
(2)输入字符串:  qw qw   
单词个数为:2 个。
(3)输入字符串:  qw
单词个数为:1 个。
*/

/*******************************************************************************************************/


/*编写一个程序,将字符数组a中的全部字符复制到字符数组b中。*/


//目前学习进度,可以使用循环复制,以'\0'为结束标志。

#include 
#include 
int main()
{    
    int i=0,j=0;
    char a[128],b[128];
    printf("输入字符串到a:");
    gets(a);
    for(i=0;i<128;i++)
    {
        if(a[i]!=0)
        {
            b[i]=a[i];
        }
        else
        {
            break;
        }
    }
    b[i]='\0';
    
    printf("a数组为:");
    puts(a);
    printf("\nb数组为:");
    puts(b);
    
}

/*编译结果:
输入字符串到a:qwer
a数组为:qwer

b数组为:qwer
*/

/*******************************************************************************************************/

/*随机输入一个长度小于30的字符串,检测输入的字符串是否存在于"1234567890qwertyuiopasdfghjklzxcv12bnm"。*/


//两层循环相互比较,短的字符串读到'\0'结束。

#include 
#include 
int main()
{    
    int i=0,j=0,m=0;
    char a[30],
    b[]="1234567890qwertyuiopasdfghjklzxcv12bnm";
    printf("输入字符串到a:");
    gets(a);
    for(i=0;i<38;i++)//qwert
    {    
        m=i,j=0;
        while(a[j]!=0 && a[j] == b[m])
        {
                j++;
                m++;
        }
        if(a[j]==0)
        {
            printf("存在\n");
            break;
        }
    }
}

/*编译结果:
输入字符串到a:er
存在
*/
/*******************************************************************************************************/


/*输入两个字符串,进行拼接,然后输出。*/


//找到a的\0,接到b的\0

#include 
#include 
int main()
{    
    int i=0,j=0;
    char a[128],b[128];
    printf("输入字符串a:");
    gets(a);
    printf("输入字符串b:");
    gets(b);
    while(a[i]!=0)
    {
        i++;
    }
    while(b[j]!=0)
    {
        a[i]=b[j];
        i++;
        j++;
    }
    a[i]=0;
    printf("拼接结果:");
    puts(a);

}

/*编译结果:
输入字符串a:qwer
输入字符串b:123
拼接结果:qwer123
*/
/*******************************************************************************************************/


/*将10个整数放到一维数组中,输出该数组中的最大值和最小值的下标,然后将最小值与和数组中的第一个元素对换,最大值与最后一个元素对换位置。*/


//for循环确定最大值,然后调换位置

#include 

int main()
{    
    int i,min,n=0,max,x=0;
    int buff[10];
    printf("输入十个整数:");
    for(i=0;i<10;i++)
    {
        scanf("%d",&buff[i]);
    }
    min=buff[0];max=buff[0];
    for(i=0;i<10;i++)
    {
        if(buff[i]>max)
        {
            max=buff[i];
            x=i;
        }
        if(buff[i]

/*编译结果:
输入十个整数:12 2 12  34 45 67 45 34 100 5
调整结果为:2 12 12 34 45 67 45 34 5 100 
*/
/*******************************************************************************************************/


/*输入10个数,统计非负数的个数、并计算非负数的和。*/

#include 

int main()
{    
    int i,j=0,sum=0;
    int buff[10];
    printf("输入十个整数:");
    for(i=0;i<10;i++)
    {
        scanf("%d",&buff[i]);
        if(buff[i]>=0)
        {
            j++;
            sum+=buff[i];
        }
    }    
    printf("非负个数为:%d,和为%d\n",j,sum);
}

/*编译结果:
输入十个整数:1 2 3 4 5 -1 -2 -3 -4 -5
非负个数为:5,和为15
*/

/*******************************************************************************************************/


/*从键盘输入一个字符串,判断输入字符串中数字的个数、大写字母的个数、小写字母的个数,以*作为字符串输入结束的标志。*/


 

#include 
#include 
int main()
{    
    int i,num=0,a=0,A=0;
    char buff[128];
    printf("输入字符串并以*结尾:");
    gets(buff);
    for(i=0;i<128;i++)
    {
        if(buff[i]>=48&&buff[i]<=57)
        {
            num++;
        }
        if(buff[i]>=65&&buff[i]<=90)
        {
            A++;
        }
        if(buff[i]>=97&&buff[i]<=122)
        {
            a++;
        }
        if(buff[i]=='*')
        {
            break;
        }
    }    
    printf("数字个数为%d个,大写字母为%d个,小写字母为%d个\n",num,A,a);
}

/*编译结果:
输入字符串并以*结尾:12QWEqwer*
数字个数为2个,大写字母为3个,小写字母为4个
*/

提高作业 


/*将下列二维数组行列互换
1 2 3      1 4 7     
4 5 6  >   2 5 8    
7 8 9      3 6 9    
*/

#include 
int main()
{    
    int i,j;
    int buff[3][3];
    printf("输入9位数据:");//00 01 02   00 10 20
    for(i=0;i<3;i++)      //10 11 12   01 11 21
    {                     //20 21 22   02 12 22
        for(j=0;j<3;j++)
        {
            scanf("%d",&buff[i][j]);
        }
    }
    
    printf("二维数组为:\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("%d ",buff[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    
    printf("二维数组转置的结果为:\n");
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("%d ",buff[j][i]);
        }
        printf("\n");
    }
    printf("\n");
}


/*编译结果:
输入9位数据:1 2 3 4 5 6 7 8 9
二维数组为:
1 2 3 
4 5 6 
7 8 9 

二维数组转置的结果为:
1 4 7 
2 5 8 
3 6 9 
*/

/*******************************************************************************************************/

/*输入一个字符串,判断是否是回文。(回文:这个字符串顺读和反读是一样的。如“abcba”和”123321”*/

#include 
#include 
int main()
{    
    int i,num=0,flag; 
    char buff[128];
    printf("输入字符串:");
    gets(buff);
    
    while(buff[num]!=0)
    {
        num++;
    }
    for(i=0;i

/*编译结果:
输入字符串:asddsa
是回文
*/
 

你可能感兴趣的:(c语言)