C语言,怎么样才能输出对齐了?

Python012

C语言,怎么样才能输出对齐了?,第1张

有两种方法可以做到:

1 用制表符\t实现对齐。

制表符\t输出的时候,会移动输出光标,实现对齐效果。所以可以在输出的对应位置,增加\t来实现对齐。

要求每行相同列输出占用空间差别不可以太大。

2 在格式字符中加入占用宽度控制数字。

C语言使用printf输出时,每个控制字符均可以写成

%nC的形式,如%10d, %12f, %8c, %16s等等。

其效果就是输出对应变量时占用n个字符的宽度。不足部分左侧补空格。通过这种方式,可以实现右对齐效果。

如果要实现做对齐效果,只需要在宽度字符前加-符号即可,如%-8s,就是把字符串输出,占8位宽度,右侧补空格。

里面有不少语法错误 我给你改了一下 EOF用‘$’代替了,发现输入了'$'就算停止输入

#include<stdio.h>

#define in 1

#define out 0

main()

{

char c,state

int n1,nw,nc

state=out

n1=nw=nc=0

while((c=getchar())!='$')

{

++nc

if(c=='\n')

++n1

if(c==' '||c=='\n'||c=='\t')

{

state=out

}

else if(state==out)

{

state=in

++nw

}

}

printf("%d\n%d\n%d\n",n1,nw,nc)

}

程序中变量名只要符合相关的要求(标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名) 就可以任意去取,但通常情况下取有意义的名字 比如,此程序中nc的意思为number of code , nw的意思是number of word

in 和out 是宏定义,查看教科书中相关内容即可

(1) 输入2维数组的行数,列数,动态分配数组。或者你声明一个足够大的数组,不做动态分配

(2)输入 数据,按一行一行的顺序。

(3)假定 最大最小的初值 等于 a[0][0], 然后遍历数组,谁大于max 就变更为max新值,谁小于min 就变更为min新值,

(4)如果 NR==NC, 是方阵,可以用 a[j][i]=a[i][j]的方法转置。否则要开一个 NC*NR的矩阵做转置。

(5)求主副对角线之和,若 n 为奇数,求总和时,注意要扣除 重复点(交叉点)元素值。

#include <stdio.h>

main(){

int **a // a[NR][NC] -- *a[NR] -- a[j][i]

int i,j,NR,NC,n

int max,min,sum=0,t

printf("input array N_row N_col:\n")

scanf("%d %d",&NR,&NC)

a = (int **) malloc(sizeof(int *) * NR)

for (j=0j<NRj++) a[j] = (int *) malloc(sizeof(int) * NC)

printf("================\n")

printf("input %d * %d array data:\n",NR,NC)

for (j=0j<NRj++) for (i=0i<NCi++) scanf("%d",&a[j][i])

printf("================\n")

max=min=a[0][0]

for (j=0j<NRj++) for (i=0i<NCi++){

if (a[j][i]>max) max=a[j][i]

if (a[j][i]<min) min=a[j][i]

}

printf("max=%dmin=%d\n",max,min)

printf("================\n")

printf("befre:\n")

for (j=0j<NRj++) {

for (i=0i<NCi++) printf("%d ",a[j][i])printf("\n")

}

printf("after:\n")

for (i=0i<NCi++){

for (j=0j<NRj++) printf("%d ",a[j][i])printf("\n")

}

if (NR==NC){

n = NR

printf("================\n")

for (j=0j<nj++)

for (i=0i<ji++){t=a[j][i]a[j][i]=a[i][j]a[i][j]=t}

printf("after:\n")

for (j=0j<nj++) {

for (i=0i<ni++) printf("%d ",a[j][i])printf("\n")

}

printf("================\n")

sum=0

for (j=0j<nj++)for (i=0i<ni++) if (i==j) sum=sum+a[j][i]

for (j=0j<nj++)for (i=0i<ni++) if (i==n-j-1) sum=sum+a[j][i]

if (n%2==1)sum=sum-a[n/2][n/2]

printf("2 dia sum=%d\n",sum)

}

return 0

}