二十一: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