题目描述
输入n个整数,输出由这些整数组成的n行矩阵。
输入
第一行输入一个正整数N(N<=20),表示后面要输入的整数个数。
下面依次输入N个整数。
输出
以输入的整数为基础,输出有规律的n行数据。
示例输入
5 3 6 2 5 8
示例输出
3 6 2 5 8 8 3 6 2 5 5 8 3 6 2 2 5 8 3 6 6 2 5 8 3
你是语法不会还是算法不会?总不能张口要代码吧。。。
#include <stdio.h>
int main()
{
int a[20];
int n,i;
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
for(i=0;i<n-1;i++)
{
int j, k=a[n-1];
for(j=n-1;j>=1;j--)
{
a[j]=a[j-1];
}
a[0]=k;
for(int m=0;m<n;m++)
printf("%d ",a[m]);
printf("\n");
}
}
那麻烦您看看这个程序有什么问题好了?
@sylvia2121: 不好意思,刚刚看到,觉得你这个问题用单向循环链表解决最好了,看看下面代码能不能帮到你,好久没用C了,生疏了
#include <stdio.h> #include <stdlib.h> typedef struct list { int data; struct list* next; }List; List* create(n) { List *head, *s,*r; r=head=(List*)malloc(sizeof(List)); int i=0; while(i<n){ s=(List*)malloc(sizeof(List)); scanf("%d",&s->data); r->next=s; r=s; i++; } r->next=head->next; return head; } int main (int argc, char *argv[]) { printf("数据个数:"); int n=0,i=1; scanf("%d",&n); List* head=create(n); for(head=head->next;i<=n*n;i++) { printf("%d\t",head->data); if(i%n==0) { printf("\n"); } else { head=head->next; } } return 0; }
谢谢了,麻烦你了