c语言怎么出表格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言怎么出表格相关的知识,希望对你有一定的参考价值。

老师要我做一个程序,用C语言,要求输入20个以内的数字,将数字在表格里输出,比如,输入2,6,15,7,0,3,8,4,11,输出就是┌─┐└─┘(这是一个方框表格,中间就是数字2,6,15……)请问这种程序怎么编

1、首先在电脑中,打开软件Dev-C++进入操作页面中,然后在页面中输入头文件。

2、然后接下来编写Main主函数。

3、接着定义一个变量并赋予初值,这样就可以编写printf函数语句。

4、编写完成后,在页面中找到并点击编译、链接、运行按钮。

5、这时候,如下图所示,便可有看到效果了。

参考技术A #include<stdio.h>
#include<string.h>
char S[100][1000]=' ';//声明表为全局变量
int s1=0;
void chart(int n,int a[],int m);
int main()

int n;
int M1[40]=0,M2[40]=0,M3[40][100]=0;
int i,j,k,k1,k2,max=0,col,l;
char s[30][1000];
scanf("%d",&n);
getchar();//注意,必须得有这个来接收回车符
//
for(i=0;i<n;i++)
gets(s[i]);

//求最大列数
for(i=0;i<n;i++)

l=strlen(s[i]);
for(j=0;j<l;j++)

if(s[i][j]==',')
M1[i]++;

if(M1[i]>max)

max=M1[i];


col=++max;

//求每列最大宽度 //1.先求每个单元的长度,赋给M3[i][j]中
for(i=0;i<n;i++)

l=strlen(s[i]);
k=0;
for(j=0;j<l;j++)

if(s[i][j]!=',')

M3[i][k]++;

if(s[i][j]==',')
k++;

//for2
//for1
//2.找每列最大的赋予M2[]
for(j=0;j<col;j++)

max=0;
for(i=0;i<n;i++)

if(M3[i][j]>max)
max=M3[i][j];

M2[j]=max;


//表格
chart(n,M2,col);

//输入数据
for(i=0;i<n;i++)

k1=0;
k2=0;
k=0;
l=strlen(s[i]);
for(j=0;j<l;j++)

S[2*i+1][k2+1]=s[i][j];
if(s[i][j+1]==',')

k1=k1+M2[k]+1;
k2=k1;
k++;
j++;

else
k2++;


//输出表格
for(i=0;i<=2*n;i++)

for(j=0;j<s1;j++)
printf("%c",S[i][j]);
printf("\n");


return 0;


void chart(int n,int a[],int m)//行数 每列的最大长度数组

int i,j,k;
int s;
s1=m+1;
for(i=0;i<m;i++)
s1+=a[i];

for(i=0;i<=2*n;i++)

//输出奇数行
if(i%2==0)

s=0;
k=0;
for(j=0;j<s1;j++)

if(j==s)

S[i][j]='+';
s+=a[k];
s++;
k++;

else
S[i][j]='-';
//for
//if
//输出偶数行
else

s=0;
k=0;
for(j=0;j<s1;j++)

if(j==s)

S[i][j]='|';
s+=a[k];
s++;
k++;




//for

参考技术B 参考下:
#include <stdio.h>
#define ARRAY_LENGTH 20

void printBox(int num)

printf("┌─┐\n");
printf(" %d\n",num);
printf("└─┘\n");


void main()

int num[ARRAY_LENGTH];
int inputNum,i,j;
printf("要输入数字的个数:");
scanf("%d",&inputNum);

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

printf("数字%d:",i+1);
scanf("%d",&num[i]);


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

printBox(num[j]);

追问

太谢谢你了!!!!能深聊么?!!!那个就是这个输出的是竖排的啊,有木有横排的?!!!

追答

可以 我帮你修改下
#include
#define ARRAY_LENGTH 20

void printBox(int *num,int arr_Length)

int i;
for(i=0;i<arr_Length;i++)

printf("┌─┐\t");

printf("\n");
for(i=0;i<arr_Length;i++)

printf(" %d\t",num[i]);

printf("\n");
for(i=0;i<arr_Length;i++)

printf("└─┘\t");



void main()

int num[ARRAY_LENGTH];
int inputNum,i;
printf("要输入数字的个数:");
scanf("%d",&inputNum);

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

printf("数字%d:",i+1);
scanf("%d",&num[i]);


printBox(num,inputNum);
printf("\n");

追问

还是有缺陷啊,就是那个方格左右两边都是空的没有封起来啊,能不能再改改==谢啦==

追答

只能做到这样了:
#include
#define ARRAY_LENGTH 20

void printBox(int *num,int arr_Length)

int i;
for(i=0;i0)

printf("│%2d│",num[i]);


printf("\n");
for(i=0;i<arr_Length;i++)

printf("└─┘");


void main()

int num[ARRAY_LENGTH];
int inputNum,i;
printf("要输入数字的个数:");
scanf("%d",&inputNum);

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

printf("数字%d:",i+1);
scanf("%d",&num[i]);


printBox(num,inputNum);
printf("\n");

本回答被提问者采纳
参考技术C //---------------------------------------------------------------------------

#include <stdio.h>

void title(void)

printf("%s\n%s\n%s\n%s\n%s","1.输入学生成绩","2.查询学生成绩","3.打印输出成绩","0.退出系统","请选择(0~3):");


int main(void)

char c=0;
while (c!='0')

title();
c=getchar();
putchar('\n');
switch (c)

default:printf("输入错误,请重新输入");break;
case '1':printf("请输入");break;
case '2':printf("请输入查找学生学号");break;
case '3':printf("正在输出");break;
case '0':printf("谢谢使用");break;

printf("\n\n");
fflush(stdin);


return 0;

//---------------------------------------------------------------------------
参考技术D 用这些符号┌─┐└─┘拼一个表格就可以了啊
printf追问

真受不了你诶,你学过C语言没?!!!别乱说话!!!

追答

靠!你学过没有C没有?你认真学没有?
你不用printf输出图形,难道你还想自己绘制一个?难道你打算用ASCII码?
你真NB !!!拜服!!!
自己看看楼上的朋友是不是用printf拼的,给你这种人没基础的人回答问题就是浪费时间

追问

我要是有基础我还用问别人!?神经病

追答

你没基础,这不是问题,你没基础来提问,也没问题,问题是别人花时间好像好意给你解答,你不表示感谢也就算了,还恶语伤人,这就是你的素质?试问,如此缺乏教养之人,谁还愿意给你解答问题,最后借你名言“你学过C语言没?!!!别乱说话!!!”
OK!88,别回了,浪费彼此时间

Makefile编译时怎么打印出变量值

参考技术A 其实androidndk上的编译说到底也就是交叉编译,只要配置好交叉编译工具链,使用原有的makefile也是可以编译出在android运行的c、c++程序的。以android-ndk-r4-crystax的ndk版本为例:编译器路径android-ndk-r4-crystax/build/prebuilt/linux-x86/arm-eabi-4.4.0/bin名称前缀arm-eabi-头文件目录android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/include库文件目录android-ndk-r4-crystax/build/platforms/android-3/arch-arm/usr/lib你可以试一下上面的配置,如果编译链接都没有问题,可以adbpush到android设备上运行看看,什么结果?有点崩溃,根本运行不起来,你也许想试试看android自带的ndk例子,确实是能够运行的,问题在哪儿呢?只是正确配置了编译器、头文件、库文件还不够,还需要配置编译、链接的参数,android例子中编译链接的参数是什么呢?你也许想深究一下android的makefile,可是不久你会发现那是更崩溃的事情,里面用了很多的make脚本函数。其实android的makefile是可以把执行的详细命令输出来的,只要make的时候加上V=1即可。可以看到确实带了很多参数编译参数:-fpic-mthumb-interwork-ffunction-sections-funwind-tables-fstack-protector-fno-short-enums-Wno-psabi-march=armv5te-mtune=xscale-msoft-float-mthumb-fomit-frame-pointer-fno-strict-aliasing-finline-limit=64-Wa,--noexecstack-D__ARM_ARCH_5__-D__ARM_ARCH_5T__-D__ARM_ARCH_5E__-D__ARM_ARCH_5TE__-DANDROID链接参数:-nostdlib-Bdynamic-Wl,-dynamic-linker,/system/bin/linker-Wl,--gc-sections-Wl,-z,nocopyreloc-Wl,--no-undefined-Wl,-z,noexecstack-L$(PLATFORM_LIBRARY_DIRECTORYS)crtbegin_static.ocrtend_android.o这其中链接参数中的-Wl,-dynamic-linker,/system/bin/linker、crtbegin_static.o、crtend_android.o是最关键的,android使用了自己的进程加载器,并且自定义了c运行时的启动结束。难怪先前编译的进程启动不了。

以上是关于c语言怎么出表格的主要内容,如果未能解决你的问题,请参考以下文章

怎么把c语言里的数据 用到excel

利用c语言怎么实现excel电子表格里面数据的提取

怎么把C语言中产生的数据导入到Excel表格

C语言的问题,怎么都编译不成功,求解答哪里出了问题

c语言怎么启动vbs脚本不弹出黑窗口呢,跪谢?

C语言怎么使用调用函数