有几个C语言的题目不会做,求高手帮忙啊,急急急!!
2.填空题(填空、注释并调试!)(1)以下程序的功能是若已定义:inta[11],i;:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在...
2.填空题(填空、注释并调试!)
(1)以下程序的功能是若已定义:int a[11],i;:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1,然后输出。请在程序的下划线处填空。
#include"stdio.h"
void main()
{ int a[10],i;
for(i=1;i<=10;i++) =i;
for(i=1;i<=10;i++)
printf(" %d,", );
for(i=1;i<=5;i++) =a[i];
for(i=1;i<=10;i++)
printf(" %d,", ); a[i]
}
(2)以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请在程序的下划线处填空。
void main()
{ int x[10],a[9],i;
for(i=0;i<10;i++) scanf("%d",&x[i]);
for( i=1; i<10;i++) a[i-1]=x[i]+______;
for(i=0;i<9;i++ ) printf("%d",a[i] ) ;
printf("\n" );
}
(3)以下程序的功能是进行方阵的转置。在程序的下划线处填空。
#include <stdio.h>
void main()
{ int i,j,t,a[4][4];
printf("\n input a:");
for(i=0;i<4;i++)
for(j=0;j<4;j++)scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{t=a[i][j];
;
a[j][i]=t;}
for(i=0;i<4;i++)
{ printf("\n");
for(j=0;j<4;j++)
printf(" %d ",a[i][j]);
}
(4)若要按以下形式输出数组num右上半三角
1 2 3 4
6 7 8
11 12
16
请在程序的下划线处填空,满足以上要求。
void main()
{int i,j,num[4][4]={{1,2,3,4},{5,6,7,8}, {9,10,11,12}, {13,14,15,16}};
for(i=0;i<4;i++)
{ for(j=1;j<=i;j++) printf(" ");
for(j= ;j<4;j++)
printf("%4d",num[i][j]);
printf(“\n”);
}
}
(5)以下程序的功能是:已知按升序排好的字符串a,将字符串s中的每个字符按升序的规则插到数组a中。请在程序的下划线处填空。
#include<string.h>
#include <stdio.h>
void main()
{ char a[20]="cehiknqtw";char s[]="fbla";
int i,k,j;
puts(a);
puts(s);
for(k=0;s[k]!='\0';k++)
{ j=0;
while(s[k]>=a[j]&&a[j]!='\0')
j++;
for( )
;
a[j]=s[k];
}
puts(a);
} 展开
(1)以下程序的功能是若已定义:int a[11],i;:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1,然后输出。请在程序的下划线处填空。
#include"stdio.h"
void main()
{ int a[10],i;
for(i=1;i<=10;i++) =i;
for(i=1;i<=10;i++)
printf(" %d,", );
for(i=1;i<=5;i++) =a[i];
for(i=1;i<=10;i++)
printf(" %d,", ); a[i]
}
(2)以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请在程序的下划线处填空。
void main()
{ int x[10],a[9],i;
for(i=0;i<10;i++) scanf("%d",&x[i]);
for( i=1; i<10;i++) a[i-1]=x[i]+______;
for(i=0;i<9;i++ ) printf("%d",a[i] ) ;
printf("\n" );
}
(3)以下程序的功能是进行方阵的转置。在程序的下划线处填空。
#include <stdio.h>
void main()
{ int i,j,t,a[4][4];
printf("\n input a:");
for(i=0;i<4;i++)
for(j=0;j<4;j++)scanf("%d",&a[i][j]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
{t=a[i][j];
;
a[j][i]=t;}
for(i=0;i<4;i++)
{ printf("\n");
for(j=0;j<4;j++)
printf(" %d ",a[i][j]);
}
(4)若要按以下形式输出数组num右上半三角
1 2 3 4
6 7 8
11 12
16
请在程序的下划线处填空,满足以上要求。
void main()
{int i,j,num[4][4]={{1,2,3,4},{5,6,7,8}, {9,10,11,12}, {13,14,15,16}};
for(i=0;i<4;i++)
{ for(j=1;j<=i;j++) printf(" ");
for(j= ;j<4;j++)
printf("%4d",num[i][j]);
printf(“\n”);
}
}
(5)以下程序的功能是:已知按升序排好的字符串a,将字符串s中的每个字符按升序的规则插到数组a中。请在程序的下划线处填空。
#include<string.h>
#include <stdio.h>
void main()
{ char a[20]="cehiknqtw";char s[]="fbla";
int i,k,j;
puts(a);
puts(s);
for(k=0;s[k]!='\0';k++)
{ j=0;
while(s[k]>=a[j]&&a[j]!='\0')
j++;
for( )
;
a[j]=s[k];
}
puts(a);
} 展开
2个回答
展开全部
第一题:
int a[10],i;
for(i=1;i<=10;i++)
a[i]=i;
for(i=1;i<=10;i++)
printf(" %d,", a[i]);
for(i=1;i<=5;i++)
a[10-i+1]=a[i];
for(i=1;i<=10;i++)
printf(" %d,", a[i]);
第二题:
a[i-1]=x[i]+x[i-1];
第三题:
for(i=0;i<2;i++)
for(j=0;j<i;j++)
{
t=a[i][j];
a[i][j]=a[j][i] ;
a[j][i]=t;
}
第三题有个很严重的bug 题目中的第二个for循环应该j<i.否则的话矩阵还是会2次交换后还原的。
第四题:
1 2 3 4
6 7 8
11 12
16
for(i=0;i<4;i++)
{
for(j=1;j<=i;j++) printf(" ");
for(j=i;j<4;j++)
printf("%4d",num[i][j]);
printf("\n");
}
第五题:
测试结果:
cehiknqtw
fbla
abcefhiklnqtw
for(k=0;s[k]!='\0';k++)
{
j=0;
while(s[k]>=a[j]&&a[j]!='\0')
j++;
for(i=20;i>j;i--)
a[i]=a[i-1];
a[j]=s[k];
}
思路:找到一个字符该插入的地方。从后往前,把后面的字符一次往后移动一位。然后把这个要插入的字符填进去就可以了
楼主下次不能一下子弄这么多题目啊 累
祝你好运!
int a[10],i;
for(i=1;i<=10;i++)
a[i]=i;
for(i=1;i<=10;i++)
printf(" %d,", a[i]);
for(i=1;i<=5;i++)
a[10-i+1]=a[i];
for(i=1;i<=10;i++)
printf(" %d,", a[i]);
第二题:
a[i-1]=x[i]+x[i-1];
第三题:
for(i=0;i<2;i++)
for(j=0;j<i;j++)
{
t=a[i][j];
a[i][j]=a[j][i] ;
a[j][i]=t;
}
第三题有个很严重的bug 题目中的第二个for循环应该j<i.否则的话矩阵还是会2次交换后还原的。
第四题:
1 2 3 4
6 7 8
11 12
16
for(i=0;i<4;i++)
{
for(j=1;j<=i;j++) printf(" ");
for(j=i;j<4;j++)
printf("%4d",num[i][j]);
printf("\n");
}
第五题:
测试结果:
cehiknqtw
fbla
abcefhiklnqtw
for(k=0;s[k]!='\0';k++)
{
j=0;
while(s[k]>=a[j]&&a[j]!='\0')
j++;
for(i=20;i>j;i--)
a[i]=a[i-1];
a[j]=s[k];
}
思路:找到一个字符该插入的地方。从后往前,把后面的字符一次往后移动一位。然后把这个要插入的字符填进去就可以了
楼主下次不能一下子弄这么多题目啊 累
祝你好运!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |