当前位置:首页 » 编程语言 » c语言打印锯齿矩阵
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言打印锯齿矩阵

发布时间: 2022-10-22 16:18:24

c语言矩阵怎么写

方法1:直接定义10*10的数组,读取全部数据,再根据选择的行列数打印输出部分数据。

方法2:通过文件流指针的移动,跨过不需要的内容。(这里控制文件流指针可利用ftell和fseek函数来移动指定字节数)我是利用fscanf读取需要的内容,遇到需要跳行就用fgets来跳过。(注意常量参数根据自己需求修改)。

说明:边读取边打印输出,就不需要变量存储。我的代码是把读取出来的内容存放在三维数组中(文件内容你没指定,如是单纯数字,二维数组即可,我是作为字符串处理,故用三维数组。),数组是根据实际大小,动态申请,写成两个独立函数。

下面是代码:

#include <stdio.h>

#include <string.h>

#include <malloc.h>

#define MAXR 10//文件中矩阵最大行

#define MAXC 10//文件中矩阵最大列

#define MS 3//矩阵中元素字符串最大字符数(包含结束符号,不可小于实际内容)

#define MBUF 100//文件中一行最大字符数,可设置大一点

char ***getMem(int r,int c,int len);//动态申请一个三维数组

void freeMem(char ***datas,int r,int c);//释放数组空间

void showDatas(char ***datas,int r,int c);//打印输出结果

int main()

{

int r=MAXR+1,c=MAXC+1,i=0,j=0;

char ***datas=NULL,str[3],buf[MBUF];

FILE *fp=NULL;

printf("请输入要获取的行数和列数: ");

while(r<0 || r>MAXR || c<0 || c>MAXC)scanf("%d%d",&r,&c);

datas=getMem(r,c,MS);

fp=fopen("C:\test.data","r");

if(!fp) return 1;

while(fscanf(fp,"%s",str)!=-1)

{

if(i<c) strcpy(datas[j][i],str),i++;

if(i==c)

{

if(!fgets(buf,sizeof(buf),fp)) break;

i=0,j++;

}

if(j==r) break;

}

showDatas(datas,r,c);

freeMem(datas,r,c);

return 0;

}

void showDatas(char ***datas,int r,int c)

{

int i,j;

for(i=0;i<r;i++,printf(" "))

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

printf("%s ",datas[i][j]);

printf(" ");

}

void freeMem(char ***datas,int r,int c)

{

int i,j;

if(!datas)

{

for(i=0;i<r;i++,free(datas[i]))

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

free(datas[i][j]);

free(datas);

}


}

char ***getMem(int r,int c,int len)

{

int i,j;

char ***datas=NULL,**dr=NULL;

datas=(char ***)malloc(sizeof(char **)*r);

if(!datas) return NULL;

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

{

dr=(char **)malloc(sizeof(char *)*c);

if(!dr) return NULL;

else

{

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

{

dr[j]=(char *)malloc(sizeof(char)*len);

if(!dr[j]) return NULL;

}

datas[i]=dr;

}

}

return datas;

}

㈡ C语言 打印矩阵

你好
具体实现如下 代码有注释 帮助理解
#include <stdio.h>
void main()
{
int i,j,n;
int a[100][100];//行标和列标的最大值100可以自行修改 不过这里100足够了
printf("enter n(n<=100):");//因为预定义的数组最大就是100 因此不要超过数组行标和列标的最大值
scanf("%d",&n);
for(i=0;i<n;i++)
{
if(i%2==0)//判断行数是偶数 那么就是降序
{
for(j=0;j<n;j++)
a[i][j]=i*n+(j+1);
}
else//行数是奇数 就升序
{
for(j=n-1;j>-1;j--)
a[i][j]=i*n+(n-j);
}
}
for(i=0;i<n;i++)//输出数组a
{
for(j=0;j<n;j++)
{
printf("%d\t",a[i][j]);
}
printf("\n\n\n");
}
}

希望能帮助你哈

㈢ c语言 改成锯齿形式 求帮忙。

锯齿形式其实就是缩进对其
#include <stdio.h>
#define PRICE 12.5
mian ()
{
int num = 3;

float total;
total = num *PRICE ;
printf("total = %f\n",total);

}
在比如
main()
{
int x=1,a=0,b=0;
switch(x)
{
case 0: b++;
case 1: a++;
case 2: a++;b++;
}
printf (“a=%d,b=%d\n”,a,b);
}

㈣ 用C语言怎样输出一个N阶蛇形矩阵

先说思想:N=4时候和N=5的时候前面4条斜线上三角是相同的!所以这个可以用递归做。还有个规律很重要就是当2个数的横纵坐标和都是N+1的时候这2个值的和都是N*N+1!问题就很容易解决了!
写个大概:
int **array=NULL;
void main()
{
int n;
scanf("%d",&n);
array=(int**)malloc(n*sizeof(int*));
for(int i=0;i<n;i++)
{
array[i]=(int *)malloc(n*sizeof(int));
}
Testingval(n,n);
for(int i=0;i<n;i++)
{for(int j=0;j<n;j++)
printf("%d ",array[i][j]);
printf("\n");
}
free(array);
}
int Testingval(int a,int n)//a 表示n行中的第几个。。n表示是N界矩阵!
{ if(n==1)
{ array[0][0]==1;
array[n][n]=n*n;
}
else
Testingval(a-1,n);
if(a%2)
{ int i=1;
array[0][a-1]=array[0][a-2]+1;
array[n-1][n-a]=n*n+1-array[0][a];
while(i<a)
{

array[i][a-1-i]=array[i-1][a-i+1]+1;
array[n-1-i][n-a+i]=n*n+1-array[i][a-i];
i++;
}
}
else
{int i=1;
array[a-1][0]=array[a-2][0]+1;
array[n-a][n-1]=n*n+1-array[a-1][0];
while(i<a)
{

array[a-1-i][i]=array[a-i+1][i-1]+1;
array[n-a+i][n-1-i]=n*n+1-array[a-1-i][i];
i++;
}
}

}
}

㈤ 怎样用C语言输出矩阵

定义二维数组作为矩阵,然后用两个for循环打印出每个元素即可。
例如一个10x10的矩阵;
#define m 10
#define m 10
int a[m][n];
for(i = 0; i <m; i++){
for(j = 0; j < n; j++)
printf("%d",a[i][j]);
printf("\n");
}

㈥ C语言打印图案的原理,麻烦详细解释,最好有配图和文字解说,本人大一,正在困惑中

打印图案有多种。

一、有规律的图形,比如正方形,菱形,圆 ......等等。这些都可以找图形规律(比如菱形上半部分依次下层比上层多2个字符),再通过简单的参数循环,用单一字符打印出来(printf就可以了)。这种比较简单,网上也有很多现成的代码可以参考,比如:【引用】c语言打印规则图形

二、复杂的图像,比如一张照片,可以写代码把图片转换成2值图(2值图就是把图片中每个像素用0或1数字矩阵来表示)然后再打印转换后的01矩阵,这个比较复杂,网上也有很多现成的转2值图代码。【引用】图片二值化程序

当然你也可以直接用网上工具把图片转换成字符图(就是贴吧里经常用的那种字符组成的图案),然后保存到文件中,c语言写读取文件打印。(或者直接把字符全部赋值到printf中打印,但这样就没啥意思了)。【引用】在线图片转字符画

㈦ C语言循环编程打印一个斜对角为1的矩阵求代码

#include<stdio.h>
intmain()
{
unsignedn=0;
scanf("%ud",&n);
for(inti=0,b=1;i<n;++i){
for(intx=b++;x<n;++x)
printf("0");
printf("1");
for(ints=b-2;s;--s)
printf("0");
printf(" ");
}
return0;
}

㈧ c语言编程 输入一个3*3的矩阵,打印该矩阵,并输出该矩阵的对角元素

#include<stdio.h>

#defineM3
#defineN3

voidCreate_matrix(intmatrix[M][N],intm,intn){
inti,j;
printf("开始输入矩阵内容(%d行%d列) ",m,n);
for(i=0;i<m;i++){
printf("输入第%d行的%d个元素:",i+1,n);
for(j=0;j<n;j++)
scanf("%d",&matrix[i][j]);
}
}

voidPrint_matrix(intmatrix[M][N],intm,intn){
inti,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++)
printf("%d ",matrix[i][j]);
printf(" ");
}
}

voidPrint_matrix_diagonal(intmatrix[M][N],intm,intn){
inti,j;
for(i=0;i<m;i++){
for(j=0;j<n;j++)
if(i==j||i+j==M-1)
printf("%d ",matrix[i][j]);
else
printf(" ");
printf(" ");
}
}

intmain(void){
intmatrix[M][N];
Create_matrix(matrix,M,N);
printf("====================================================== ");
printf("您输入的矩阵为: ");
Print_matrix(matrix,M,N);
printf("对角线元素为: ");
Print_matrix_diagonal(matrix,M,N);
return0;
}

执行结果

㈨ C语言如何打印输出一个NxN的矩阵,请注意矩阵的排列要求

#include<iostream.h>
voidmain()
{
intn,N,i,j,**a;
cout<<"N=";
cin>>N;
a=newint*[N];
for(n=0;n<N;)
a[n]=newint[N];
intmk1=0,mk2=0;
for(n=1,i=0,j=0;n<=N*N;){
a[i][j]=n;
if(i==0&&j<N-1&&mk1==0){
j++;
mk1++;
mk2=0;
n++;
continue;
}
if(j==0&&i<N-1&&mk2==0){
i++;
mk2++;
mk1=0;
n++;
continue;
}
if(i==N-1&&mk1==1){
j++;
mk2++;
mk1=0;
n++;
continue;
}
if(j==N-1&&mk2==1){
i++;
mk1++;
mk2=0;
n++;
continue;
}
if(mk1==1){
i++;
j--;
n++;
continue;
}
if(mk2==1){
i--;
j++;
n++;
continue;
}
}
for(intm=0;m<N;m++){
for(intn=0;n<N;n++){
cout<<a[m][n]<<"";
if(n==N-1)
cout<<endl;
}
}
for(n=0;n<N;n++)
delete[]a[n];
delete[]a;
}

大概就是这么个样吧,你试试

㈩ 试用c语言编写一个能输出锯齿波信号的单片机c51程序

程序加一个的LCD1602,你选择使用

的#include <reg52.h>的/ /包含头文件
?#包括<intrins.h>的
#定义UCHAR无符号的字符/ /宏定义
?#定义UINT无符号整数
?UCHAR I,J,N,Z,/ /定义全局变量
SBIT RS = P2 ^ 0; / /定义端口
?和SBIT RW = P2 ^ 1;
SBIT E = P2 ^ 2;
SBIT K = P2 ^ 7;
SBIT K1 = P2 ^ 6;
UCHAR代码STR0 [] = {“正弦波”}; / /定义LCD1602显示的字符数组
UCHAR代码STR1 [] = {“三角波”};
UCHAR代码字符串str2 [] = {“方波”};
?的UCHAR代码表[3] [40] = / /定义的两维阵列的波形
?{
??80H时,0x94的,0xa7,0xb9,0xca,0xd9,0xe7,0xf1,0XF8,是0xFD,
??是0xFD,0xff,则0XF8,0xf1,0xe7,0xd9,0xca,0xb9 0xa7,0x94的,
??80H时,0x6c,将0x55,0x46,0x35,$ 25,为0x18,0X0E,0X06,0X02,
??为0x00,0X02,0X06,0X0E,为0x18,$ 25,0x35,0x46,0x55??的,0x6c,
??80H时,0x8c,0x99,0xa6,0xb3,0XC0,含有0xCC,0xd9,0xe6,0xf2,
??为0xff,0xf2,0xe6,0xd9,含有0xCC,0XC0,0xb3,0xa6,0x99,0x8c,
??80H时,为0x73,0x66,0X5A,0x4d,0X40,地址0x33,0X26,0X1A,0X0D,
?为0x00,0X0D,0X1A,0X26,地址0x33,0X40,0x4d,为0x5A,0x66,为0x73,
??为0xff,0xff,则是0xFF,0xFF时,为0xff,0xff,则是0xFF,0xFF时,为0xff,0xff,则
??为0xff,0xff,则是0xFF,0xFF时,为0xff,0xff,则是0xFF,0xFF时,为0xff,0xff,则
??0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
??0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00
?};
?无效延迟(UINT Z)/ /延时程序
?{
????(Z,Z> 0,Z - )
???
??
??}
?}
?无效Write_command“(UCHAR CMD)/ / LCD1602写命令程序
?{
??RS = 0; / /选择指令寄存器
?RW = 0; / /写操作
?E = 1 / /使能端
?P1 = CMD;
?延迟时间(1);
?E = 0;
LCD1602是不是很忙?延迟(10); / /延时
?}
?无效WRITE_DATA(UCHAR CMD)/ / LCD1602写入数据的命令
?{
??RS = 1; / /选择数据寄存器
?RW = 0; / /写操作
?E = 1; / /结束
?P1 = CMD;
?延迟时间(1);
?E = 0;
LCD1602是不是很忙?延迟(10); / /延时
?}
?的无效Lcd_init()/ / LCD1602初始化程序
?{
????Write_command(0x38); / /设置16 * 5 * 7点阵8位数据接口
?Write_command(0X0C)/ / LCD1602打开显示,不显示光标
?Write_command(0X06)/ /读或写一个字符指针加1不动
?Write_command(0X80 +0 X00); / /设置数据地址指针
?}
?无效显示器()/ / LCD1602显示英语课程
?{
????Lcd_init();
?(我== 0)
???
?组(n = 0,N <13,N +)
???
???WRITE_DATA(STR0 [N]);
??}
????}
?否则,如果(我== 1)
?{
?组(n = 0,N <13,N +)
??
??WRITE_DATA(STR1 [N]);
?}
?}
?其他
?{
?组(n = 0,N <13,N +)
??
??WRITE_DATA(字符串str2 [N]);
?}
?}
?}
无效的主要()/ /主函数
?{
???显示();
?而(1)
?{
??中for(j = 0; J <40; + +)
???
???P0 =表[I] [J];
???
??}
(k == 0)/ /切换程序??
???
????延迟时间(1);
???(k == 0);
????
????(K == 0)
?????
????+ +;
????如果(i == 3)= 0;
???显示();
????}
????
???}
??????而(k == 0);
??}
?}
?}