题目
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
设某城市有n个车站,并有m条公交线路连接这些车站,设这些公交车都是单向的,这n个车站被顺序编号为0至n-1。输入该城市的公交线路数、车站个数,以及各公交线路上的各站编号,求得从站0出发乘公交车至站n-1的最少换车次数。
程序利用输入信息构建一张有向图G(用邻接矩阵g表示),有向图的顶点是车站,若有某条公交线路经i站能到达j站,就在顶点i到顶点j之间设置一条权为1的有向边<i,j>。如是这样,从站点x至站点y的最少上车次数便对应图G中从点x至点y的最短路径长度。而程序要求的换车次数就是上车次数减1。
【函数5-9】
include <stdio.h>
define M 20
define N 50
int a[N+1]; /*用于存放一条线路上的各站编号*/
iht g[N][N]; /*存储对应的邻接矩阵*/
int dist[N]; /*存储站0到各站的最短路径*/
int m,n;
void buildG()
{
int i,j,k,sc,dd;
printf ("输入公交线路数,公交站数\n");
scanf("%d%d", &m, &n);
for(i=0; i<n; i++) /*邻接矩阵清0*/
for(j = 0; j < n; j++)g[i][j] = 0;
for(i=0; i<m; i++){
printf("沿第%d条公交车线路前进方向的各站编号(O<=编号<=%d,-1结束):\n",
i+1, n-1);
sc=0;/* 当前线路站计数器 */
while(1){
scanf("%d",&dd);
if(dd==-1)break;
if(dd>=0 && dd<n) (1);
}
a[sc]=-1;
for(k=1;a[k]>=0; k++) /* 处理第i+1条公交线路 */
for(j=0; j<k; j++)
g(2)=1;
}
}
int minLen()
{
int j, k;
for(j=0;j<n;j++)dist[j]=g[0][j];
dist[0]=1;
do{
for(k=-1,j=0;j<n;j++) /* 找下一个最少上车次数的站*/
if(dist[j]>0&&(k==-1 || dist[j]<dist[k]))k=j;
if (k<0 || k==n-1) break;
dist[k]=-dist[k]; /* 设置k站已求得上车次数的标记 */
for(j=1;j<n;j++) /* 调整经过k站能到达的其余各站的上车次数 */
if ((3) && (dist[j]==0 || -dist[k]+1<dist[j]))
dist[j]=(4);
}while(1);
j=dist[n-1];
return (5);
}
void main()
{
int t;
buildG();
if((t=minLen()<0)printf("无解!\n");
else pdnff("从0号站到%d站需换车%d次\n”,n-1,t);
}
第1题
●试题二
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
该程序运行后,输出下面的数字金字塔
【程序】
include<stdio.h>
main ()
{char max,next;
int i;
for(max=′1′;max<=′9′;max++)
{for(i=1;i<=20- (1) ;++i)
printf(" ");
for(next= (2) ;next<= (3) ;next++)
printf("%c",next);
for(next= (4) ;next>= (5) ;next--)
printf("%c",next);
printf("\n");
}
}
第2题
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明】
以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。
【程序】
include < stdio. h >
main()
{ FILE * fp;
char str[100]; int i=0;
if((fp=fopen("text.txt"(1))) ==NULL)
{ printf("can't open this file. \n") ;exit(0) ;}
printf(" input astring: \n" ); gest(str);
while(str[i] )
{ if(str[i] >='a' && str[i] <='z')
str[i]=(2);
fputc(str[i],(3));
i++;
}
fclose(fp);
fp=fopen(" test.txt",(4));
fgets(str, 100, fp);
printf("%s\n" ,str);
(5);
}
第3题
●试题八
阅读下列函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
以下程序的功能是:从键盘上输入一个字符串,把该字符串中的小写字母转换为大写字母,输出到文件test.txt中,然后从该文件读出字符串并显示出来。
【程序】
#include<stdio.h>
main()
{FILE*fp;
charstr[100];inti=0;
if((fp=fopen("text.txt" (1) ))==NULL)
{printf("can't open this file.\n");exit(0);}
printf("input astring:\n");gest(str);
while(str[i])
{if(str[i]>=′a′ && str[i]<=′z′)
str[i]= (2) ;
fputc(str[i], (3) );
i++;
}
fclose(fp);
fp=fopen("test.txt", (4) );
fgets(str,100,fp);
printf("%s\n",str);
(5) ;
}
第4题
阅读下列程序说明和C代码,将应填入(n)处的字句写在对应栏内。
[说明]
函数Printprime(int UpBound)的功能是输出1到UpBound以内的全体素数。
[函数2.1]
void PrintPrime(int UpBound)
printf("2," );
for(i=3; i<UpBound; i+ =2) {
int k = sqrt(i);
for(j=3; j<= k;(1)) /*检查i是否有3到k以入的奇因数*/
if((2)) break;
fi((3)) printf("%d", i);
[函数2.2说明]
递归函数invert(int a[],int k),int k)的功能是将数组a中的前k个元素逆置。
[函数2.2]
void invert(int a[ ], int k)
{ int t;
if ((4)) {
invert((5));
t=a[0];
a[0] =a[k-1];
a[k-l]=t;
}
}
第5题
阅读下列程序说明和c代码,将应填入(n)处的字句写在对应栏内。
[说明]
下面的程序利用递归算法计算x和y的最大公约数。
[函数2.1]
main ()
{ int x,y,k,t;
scanf(" % d% d" , &x, &y);
if(x>y) { t=x;x=y; y=t;}
(1);
while(k! =0){
y=x;
(2);
k=y%x;
}
prinff("% d" ,x); }
[函数2.2说明]
函数fun(char *str,char *substr的功能是计算子串sugbstr在串str中出现的次数。
[函数2.2]
fun(ehar * str, char * substr)
{ int x,y,z;
(3);
for(x=0;str[ x] ! = '\O';x + + )
for(y=x,z=0;sabstr[z] = =str[y];(4),y+ +)
if((5)= ='\0') {
num + +;
break;
}
return(num);
}
第6题
●试题二
阅读下列程序或函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【函数2.1说明】
函数strcmp()是比较两个字符串s和t的大小。若s<t函数返回负数;若s=t函数返回0;若s>t,函数返回正数。
【函数2.1】
int strcmp(char *s,char *t)
{ while(*s && *t && (1) ){
s++;t++;
}
return (2) ;
}
【程序2.2说明】
在n行n列的矩阵中,每行都有最大的数,本程序求这n个最大数中的最小一个。
【程序2.2】
#includestdio.h
#define N 100
int a[N][N];
void main()
{ int row ,col,max,min,n;
/*输入合法n(<100),和输入n×n个整数到数组a的代码略*/
for (row=0;row<n;row++){
for(max=a[row][0],col=1;col<n;col++)
if((3) )max=a[row][col];
if((4) )min=max;
else if((5) )min=max;
}
printf ("The min of max numbers is %d\n",min);
}
第7题
阅读下列程序说明和C代码,将应填入(n)处。
请补充函数fun(),该函数的功能是:只保留字符串中的大写字母,删除其他字符,结果仍保存在原来的字符串中,由全局变量m对删除后字符串的长度进行保存。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线上填入所编写的若干表达式或语句。
试题程序:
include<stdio.h>
include<conio.h>
int m;
void fun(char*s)
{
int i=0,j=0;
char *p=s;
while(*(p+i))
{
if(*(p+i)>='A'&&*(p+i)<='Z')
{
(1);
}
(2);
}
s[j]='\0';
(3);
}
main()
{
char str[80];
clrscr();
printf("\nEnter a string:");
gets(str);
printf("\n\nThe string is:\%s\n",str);
fun(str);
printf("\n\nThe string of changing is: \%s\n",str);
printf("\n\nThe length of changed strtng is:\%d\n",m);
}
第8题
阅读以下说明及Visual Basic 程序代码,将应填入(n)处的字句写在对应栏内。
[程序5.1说明]
下列程序运行时,当单击窗体后,从键盘输入一个字符,判断该字符是字母字符、数字字符还是其他字符,并做相应的显示。窗体上无任何控件,并禁用Ase和Chr函数,Select Case语句中禁用枚举值。
[Visual Basic代码]
Private Sub Form. Load ()
Dim x As String*1
X=(1) (“请输入单个字符”,“字符”)
Select Case UCase ((2) )
Case (3)。
Print X+“是字母字符”
Case (4)
Print X+ “是数字字符”
Case Else
Print X+“是其他字符”
End Select
[程序5.2说明]
在窗体上画一个名称为Timer1的计时器和一个名称为Labe11的标签。当运行程序后,将在标签中显示当前时间的数字时钟(包括时:分:秒)。
[Visual Basic代码]
Private Sub Fom_Load ()
Timer1.Interval=1000
EndSub
Private Sub Timer1_ timer() (5)
EndSub
第9题
阅读以下说明和JAVA 2代码,将应填入(n)处的字句写在对应栏内。
[说明]
以下程序为类类型的变量应用实例,通过异常处理检验了类CCircle的变量的合法性,即参数半径应为非负值。仔细阅读代码和相关注释,将程序补充完整。
[JAVA代码]
//定义自己的异常类
class CCircleException extends Exception
{
}
// 定义类 CCircle
class CCircle
{
private double radius;
public void setRadius (double r ) (1)
{
if (r<0 ) {
(2)
}
else
(3)
}
Public void show () {
System. out. println ("area="+3.14*radius*radius );
}
}
public class ciusample
{
public static void main (String args[] )
{
CCircle cir=new CCircle();
(4) {
cir. setRadius (-2.0 )
}
(5)
{
System. out. println (e+" throwed" ) ;
}
cir. show() ;
}
}
第10题
阅读下列函数说明和C代码,将应填入(n)处的字句写在对应栏内。
【说明2.1】
以下C语言函数用二分插入法实现对整型数组a中n个数的排序功能。
【函数2.1】
void fun1 (int a[])
{ int i,j,k,r,x,m;
for(i=2;i<=n;i++)
{ (1);
k=1;r=i-1;
while(k<=r)
{ m=(k+r)/2;
if(x<a[m])r=m-1;
else (2);
}
for(j=i-1;j>=k;j--)
a[j+l]=a[j];
(3);
}
}
【说明2.2】
以下程序可以把从键盘上输入的十进制数(long型)以二~十六进制形式输出。
【程序2.2】
include<stdio.h>
main()
{ charb[16]={'0','l','2','3 ,4,'5','6','7','8','9','A','B','C','D','E','F'};
int c[64],d,i=0,base;
long n;
printf("enter a number:\n");
scanf("%1d",&n);
printf("enter new basc:\n");
scanf("%d", &base);
do
{ c[i]=(4);
i++; n=n/base;
} while(n!=0);
printf("transmite new base:\n");
for(--i;i>=0;--i)
{ d=c[i];
printf("%c",(5));
}
}
第11题
阅读以下说明、Java代码,将应填入(n)处的字句写在对应栏内。
【说明】
本程序输出10000之内的所有完全数。完全数是指等于其所有因子和(包括1,但不包括这个数本身)的数。例如:6=1×2×3,6=1+2+3,则6是一个完全数。
【程序】
public class PerfectNum
{
Public static void main(String args[])
{
int count=1;
for(int i=1; i<10000; i++)
{
int y=0;
for(int j=1; j<i; j++)
if((1))
y=(2)
if((3))
{
System.out.print((4) +String.valueOf('\t'));
(5)
If(count%3==0)
System.out.printin();
}
}
}
为了保护您的账号安全,请在“赏学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!