我今天在测试中被问过这个问题。
我必须打印以下模式: -
例如,如果用户输入n = 4,则输出应为此模式 -
1 * 2 * 3 * 4 * 17 * 18 * 19 * 20
--5 * 6 * 7 * 14 * 15 * 16
---- 8 * 9 * 12 * 13
------ 10 * 11
如果N = 5,代码应该打印
1 * 2 * 3 * 4 * 5 * 26 * 27 * 28 * 29 * 30
--6 * 7 * 8 * 9 * 22 * 23 * 24 * 25
---- 10 * 11 * 12 * 19 * 20 * 21
------ 13 * 14 * 17 * 18
-------- 15 * 16
我可以设法部分打印图案...帮助..
到目前为止的进展......
if meteorite's y position > graphicsWindow.height then
shapes.move(meteorite, meteoriteX, 0)
endif
打印n = 4: -
#include <stdio.h>
void pattern(int);
int main()
{
int n;
scanf("%d",&n);
pattern(n);
return 0;
}
void pattern(int n)
{
int i,j,k=1,l=2,h;
for(i=n;i>0;i--)
{
if(i<n)
{
for(h=1;h<=l;h++)
printf("-");
l=l+2;
}
for(j=1;j<=i;j++)
{
printf("%d",k);
k++;
if(j!=i)
printf("*");
}
printf("\n");
}
}
答案 0 :(得分:1)
你去了:
#include<stdio.h>
void pattern(int);
int main()
{
int n;
scanf("%d",&n);
pattern(n);
return 0;
}
void pattern(int n)
{
int i,j,k=1,l=2,h;
int rest=n*(n+1)+1,rn=0;
for(i=n;i>0;i--)
{
if(i<n)
{
for(h=1;h<=l;h++)
printf("-");
l=l+2;
}
for(j=1;j<=i;j++)
{
printf("%d",k);
k++;
printf("*");
}
rest=rest-i;
rn=rest;
for(int p=1;p<=i;p++)
{
printf("%d",rn);
rn++;
if(p!=i)
printf("*");
}
printf("\n");
}
}
我看到你在打印超量和一半的数字方面做得很好。所以剩下的就是另一半应该用每一行递减。 我们需要打印的最高数字是n *(n + 1)。 所以我们计算那个数字(在变量rest中)然后我们需要用i减去每一行(一行中元素数量的一半)。
答案 1 :(得分:0)
#include<stdio.h>
int pattern(int);
int pattern(int t)
{
int i, n, j, max = 1, k, max1, no=1, l, no2, s = 1;
printf("enter the no of rows");
scanf("%d",&n);
max1 = n;
no2=(n*n)+1;
for (i = 1; i <= n; i++)
{
/* PRINTING "-" FROM 2ND LINE SO J=2 AND PRINTING LIKHE 2 4 6 SO MAX= MAX+2 */
for(j=2;j<=max;j++)
{
printf("-");
}
max = max + 2;
/* PRINTING FIRST SET OF NOS 1 2 3 2ND LINE 4 5 DEN 6 SO NO++ */
for(k=1;k<=max1;k++)
{
printf("%d*",no);
no++;
}
/* PRINTING 2ND NOS NO2 = N*N+1 COZ N=5 */
for(l=1;l<=max1-1;l++)
{
printf("%d*",no2);
no2++;
}
/* printing last no without star*/
printf("%d",no2);
max1--;
/* then initializing the 2nd line starting no */
no2 = no2 - 2 * (n - s);
s++;
printf("\n");
}
}
int main()
{
int p = pattern(p);
return 0;
}
答案 2 :(得分:0)
#include<stdio.h>
#include<stdlib.h>
int main( )
{
int n,n1,n2,n3,i,j,*arr;
printf("enter the number\n");
scanf("%d",&n);
n1=1;
n2=n*(n+1);
n3=(2*n)-1;
arr=(int*)calloc(n*2,sizeof(int));
for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
arr[j]=n1++;
for(j=n3-i;j>=5;j--)
arr[j]=n2--;
for(j=0;j<i;j++)
printf("--");
printf("%d",arr[i]);
for(j=i+1;j<2*n-i;j++)
printf("*%d",arr[j]);
printf("\n");
}
free(arr);
}
答案 3 :(得分:-1)
#include<iostream>
using namespace std;
int main(){
int n=5;
int count = 1,pno=1;
for (int i=0; i<n; i++){
for (int j=0; j!=i; j++){
//cout << "--";
}
for (int j=n; j>i; j--){
//cout << count << "*";
count++;
}
//cout << endl;
}
count = (count-1)*2;
count = count-n+1;
int countdec = 5;
int nn=n-1;
for (int i=0; i<n; i++){
for (int j=0; j!=i; j++){
cout << "--";
}
for (int j=n; j>i; j--){
cout << pno << "*";
pno++;
}
for (int j=n; j>i; j--){
if (j==n){
if(i==0){
countdec=count;
cout << count;
}
else{
countdec=count;
cout << count;
}
}
else{
cout <<"*"<< count ;
}
count++;
}
count = countdec- (nn--);
cout << endl;
}
//cout << endl;
return 0;
}