C语言入门必刷100题合集之每日一题(20-40)

二十一:C语言实现打印菱形。

解题思路:这道题目的逻辑的很简单,本质来说还是循环的嵌套,然后就是一些简单的数学逻辑,有了上个题目心形表白的学习,看这道题应该很容易看懂。菱形一共分为两部分,菱形的上下部分。

C语言实现前四行的打印:

for(i=0;i<4;i++)
  {
    for(j=0;j<=2-i;j++)
    {
      printf(" ");
    }
        for(k=0;k<=2*i;k++)/
        {
      printf("*");
    }
        printf("\n");
  }

单独打印结果:

#include<stdio.h>//头文件
int main()//主函数
{
  int i,j,k;//定义整型变量
  for(i=0;i<4;i++)//循环四次,打出前四行
  {
    for(j=0;j<=2-i;j++)//设定每行*号前面的空格,每行都是2-i个
    {
      printf(" ");//打印空格
    }
        for(k=0;k<=2*i;k++)//循环打出2*i-i个*号
        {
      printf("*");//打印*号
    }
        printf("\n");//打完一行后换行
  }
  for(i=0;i<=2;i++)//循环三次,打出后三行
  {
    for(j=0;j<=i;j++)//假设每行*号前面的空格,每行都是i个
    {
      printf(" ");//打印空格
    }
    for(k=0;k<=4-2*i;k++)//循环打出4-2*i个*号
    {
      printf("*");//打印*号
    }
    printf("\n");//打完一行后换行
  }
  return 0;//函数返回值为0
}

编译运行结果如下:

二十二:C语言实现对数组元素依次赋值0,1,2,3,4,5,6,7,8,9,然后按照逆序输出。

解题思路:显然首先要定义一个长度为10的数组,由于赋给的值是整数,因此,数组可以定义为整型,要赋值的是0~9,有一定规律,可以用循环来赋值。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  int a[10];//定义整型数组,数组的大小为10
  int i;//定义整型变量
  printf("原来的顺序:");
  for(i=0;i<10;i++)//赋值使a[0]~a[9]的值为0~9
  {
    a[i]=i;// 把i的值赋给数组a[i]
    printf("%d ",a[i]);//输出a[i],每个数之间加个空格隔开
  }
  printf("\n");//换行
  printf("逆序排列后:");
  for(i=9;i>=0;i--)//倒序输出
  {
    printf("%d ",a[i]);
  }
  printf("\n");//换行
  return 0;//函数返回值为0
}

编译运行结果如下:

原来的顺序:0 1 2 3 4 5 6 7 8 9
逆序排列后:9 8 7 6 5 4 3 2 1 0

--------------------------------
Process exited after 2.526 seconds with return value 0
请按任意键继续. . .

注意:数组元素的下标是从0开始看,如果用int a[10],定义数组,则最大下标值为9,不存在数组元素a[10]。

二十三:C语言实现从小到大对10个数进行排序,要求使用冒泡排序实现。

解题思路:排序的规律有两种:一种是“升序”,从小到大;另一种是“降序”,从大到小。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  int i,j,t;//定义整型变量
  int array[10];//定义数组大小
  printf("请输入十个数:");//提示语句
  for(i=0;i<10;i++)//手动往数组里输入10个数
  {
    scanf("%d,",&array[i]);//注意&符号
  }
  for(j=0;j<9;j++)//外层循环限制
  {
    for(i=0;i<9-j;i++)//内存循环
    if(array[i]>array[i+1])//如果前一个数比后一个数大
    {
      t=array[i]; //把小的数赋值给前面,大的数赋值给后面
      array[i]=array[i+1];
      array[i+1]=t;
    }
  }
  printf("按照从小到大的顺序排序:");//提示语句
  for(i=0;i<10;i++)//循环输出10个数
  {
    printf("%d ",array[i]);
  }
  printf("\n");//换行
  return 0;//函数返回值为0
}

编译运行结果如下:

请输入十个数:9 8 4 1 6 2 7 4 10 9
按照从小到大的顺序排序:1 2 4 4 6 7 8 9 9 10

--------------------------------
Process exited after 20.46 seconds with return value 0
请按任意键继续. . .

以上就是很著名的“冒泡排序”,也称为“起泡排序”,通过此例对以后学习快速排序、堆排序等会有所启示。从大到小该如何排序呢?

二十四:C语言实现将一个二维数组行和列的元素互换,存到另一个二维数组中。

例如:

a数组的序列:
     1 2 3
     4 5 6
b数组的序列:
     1 4
     2 5
     3 6

解题思路:可以定义两个数组:数组a为2行3列,存放指定的6个数。数组b为3行2列,开始时未赋值,只要将a数组中的元素a[i][j]存放到b数组中的b[j][i]元素中即可。

源代码演示:

#include<stdio.h>//头文件
int main()//主函数
{
  int i,j;//定义整型变量
  int a[2][3]={
  {1,2,3},{4,5,6}};//定义二维数组,且赋初值
  int b[3][2];//定义二维数组
  printf("横向数组的序列:\n");//提示语句
  for(i=0;i<2;i++)//外层for循环,限制行,共2行
  {
    for(j=0;j<3;j++)//内层for循环,限制列,共3列
    {
      printf("%6d",a[i][j]);//输出数组元素值,宽度为6
      b[j][i]=a[i][j];//赋值
    }
  printf("\n");//换行
  }
  
  printf("纵向数组的序列:\n");//提示语句
  for(i=0;i<3;i++)//外层for循环,限制行,3行
  {
    for(j=0;j<2;j++)//内层for循环,限制列,共2列
    {
      printf("%6d",b[i][j]);//输出数组元素值,宽度为6
    }
  printf("\n");//换行
  }
  return 0;//函数返回值为0
}

编译运行结果如下:

横向数组的序列:
     1     2     3
     4     5     6
纵向数组的序列:
     1     4
     2     5
     3     6

--------------------------------
Process exited after 0.04857 seconds with return value 0
请按任意键继续. . .

二十五:C语言实现求3*4的矩阵中制最大的那个元素的值,以及其所在的行号列号。

解题思路:输出二维数组的各元素,方便核对输出的结果是否争取:

for(i=0;i<3;i++)//外层循环限制行,3行
  {
    for(j=0;j<4;j++)//外层循环限制列,4列
    {
      printf("%3d ",array[i][j]);//输出数组
    }
    printf("\n");//换行
  }

需要注意这两行代码,在row和column后都加了1,因为数组下标是从0开始的:

printf("行号是:%d\n",row+1);//行号
printf("列号是:%d\n",column+1);//列号

源代码演示:

#include<st
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值