admin 管理员组文章数量: 1086019
2024年4月21日发(作者:架构设计师招聘)
6.2基础实验
一、程序分析
分析以下程序段完成的功能,填写在序号后的空白处,并运行验证结果。
1. ⊙以下程序的运行结果是:_______s=12345↙____________________。
#include
int main( )
{ inta[]={1,2,3,4,5},i,j=1,s=0;
for(i=4;i>=0;i--)
{ s=s+a[i]*j;
j=j*10;
}
printf(“ s= %d n” , s );
return 0;
}
2. 以下程序的运行结果是:_____7 5 3______________________。
#include
int main( )
{ int k ;
int a[3][3]={9,8,7,6,5,4,3,2,1};
for(k=0;k<3;k++)
printf(“%d ”,a[k][2-k]);
return 0;
}
3. 以下程序的功能是:____查找最大值元素及下标_________________。
#include
int main( )
{ int i, j ,x =0 ,y = 0 , m ;
int a[3][3] = { 1, -2 , 0 , 4 , -5 , 6 , 2 , 4 };
m = a [0][0] ;
for (i=0 ;i < 3 ;i++)
for (j = 0 ; j<3 ; j++ )
if ( a[ i] [ j ] >m )
{ m = a[ i ][ j ] ;
x = i ;
y = j ;
}
printf(“ ( % d , % d ) = % d n”, x , y,m );
return 0;
} 运行结果:___(1 , 2 ) = 6↙_________________
4. 以下程序的的运行结果是:__8,I am student!___________________。
#include
int main( )
{ char s1[50]= “I am ”;
char s2[ ]=“student!” ;
printf(“%d,”, strlen(s2) );
strcat(s1,s2);
printf(“%sn”,s1);
return 0;
}
5.以下程序的运行结果是:_______6_____________________。
#include
int main( )
{ char b[7]={“67da12”};
int i,s=0;
for(i=0;b[i]>='0'&&b[i]<='9';i+=2)
s=10*s+b[i]-'0';
printf (“%dn”,s);
return 0;
}
6. 以下程序的运行结果是:_______CQM_____________________。
#include
int main( )
{ int i=0;
char a[ ]= “cbm”,b [ ]= “cqid”,c[10];
while(a[i]!='0'&&b[i]!='0')
{ if(a[i]>=b[i]) c[i]=a[i]-32;
else c[i]=b[i]-32;
++i;
}
c[i]= '0';
puts (c);
return 0;
}
二、程序填空
1. 下面程序的功能是将十进制整数转换成二进制,请在横线上填写正确内
容。
#include
int main( )
{ int k=0,n,j,num[16]={0};
printf(“输入要转换的十进制数n”);
scanf(“%d”,&n);
printf (“%d转换为二进制数:n”,n);
do
{ num[k]=_n%2_____ ;
n=n/2;
_k++____ ;
}while(n!=0);
for(k=15;k>=0;k--)
printf(“%d”,num[k]);
return 0;
}
2. 设数组 a 的元素均为正整数,以下程序是求 a 中奇数的个数和奇数的
平均值,请在横线上填写正确内容。
#include
int main( )
{ int a[10]={10,9,8,7,6,5,4,3,2,1};
int k,s,i;
float ave;
for(i=0,k=s=0;i<10;i++)
{ if(_a[i]%2==0___ ) continue ;
s+=____a[i]____;
k++;
}
if(k!=0)
{ ave=s/k;
printf (“%d,%.2fn”,k,ave);
}
return 0;
}
3. 下面程序的功能是将字符串a中所有的字符 d 删除。
#include
int main( )
{ char s[80];
int i,j;
gets(s);
for(i=j=0;s[i]!='0';i++)
if(s[i]!='d'){__s[j]=s[i]__; __j++__;}
s[j]='0';
puts(s);
return 0;
}
4.从键盘输入:apple
字符串。
#include
#include
int main( )
{ char str[10],temp[10]={0};
int i;
for(i=0;i<4;i++)
{ gets(str);
if (_strcmp(temp,str)<0_)strcpy(temp,str);
}
puts(temp);
return 0;
}
6.3拓展实验
一、程序改错
要求:调试运行下列程序是否正确,若有错,写出错在何处?填写正确的运
行结果。
1.以下程序实现的功能是求10个元素的和。
行号
1
2
3
4
5
6
7
8
9
10
找错
源程序
#include
int main( )
{ int a[11],i;
for(i=1;i<=10;i++)
scanf (“%d”,&a);
for (i=1, a[0]=0;i<=10;i++);
a[0]=a[0]+a[i];
printf( “sum= %d n”,a[0]);
return 0;
}
错误在5和6行
应改为:scanf (“%d”,&a[i]);和for (i=1, a[0]=0;i<=10;i++)
输入数据:10 9 8 7 6 5 4 3 2 1
运行结果:sum=55
调试正确后
的运行结果
2.调试下列程序,使之具有如下功能:输入10个整数,按每行3个数输出
这些整数,最后输出10个整数的平均值。写出调试过程。
行号
1
2
3
4
5
6
7
8
9
源程序
#include
int main( )
{ int i,a[10],av;
for(i=0;i<10;i++)
scanf(“%d”,a[i]);
for(i=0;i<10;i++)
{ if(i%3==0)
printf(“n”);
printf(“%d”,a[i]);
10
11
12
13
14
15
找错
}
for(i=0;i!=10;i++)
av+=a[i];
printf(“nav=%.2fn”,av/10.0);
return 0;
}
错误在3和5行
应改为: int i,a[10],av=0;和scanf(“%d”,&a[i]);
输入数据:10 9 8 7 6 5 4 3 2 1
运行结果:av=5.50
调试正确后
的运行结果
3.以下程序的功能是统计字符串的长度。
行号
1
2
3
4
5
6
7
8
9
10
找错
调试正确后
的运行结果
4.⊙下面程序的功能是:将字符数组a [6] ={ ‘a’, ‘ b’, ‘ c’, ‘d’, ‘e’,’ f’ } 变为 a
[6] ={‘f’,’a’, ‘b’ , ‘c’, ‘d’,’e’}。
行号
1
2
源程序
#include
int main( )
源程序
#include
int main( )
{ char a[ ];
int i,len=0;
a=“C Language Program”;
for(i=0;a[i]!='0';i++)
len++;
printf(“字符串%s的长度为%d”,a,len);
return 0;
}
错误在3和5行
应改为:{ char a[ ] =“C Language Program”;
字符串%s的长度为18
3
4
5
6
7
8
9
10
11
12
13
找错
{ int i;char t;
char a[6]={'a','b','c','d','e','f'};
t=a[5];
for(i=5;i!=0;i--)
a[i-1]= a[i];
a[0]=t;
for(i=0;i<=5;i++)
printf (“%c”,a[i]);
printf (“n”);
return 0;
}
错误在7行
应改为: a[i]= a[i-1];
fabcde
调试正确后
的运行结果
5.●调试下列程序,使之具有如下功能:任意输入两个字符串(如:“abc123”
和“china”),并存放在a,b两个数组中。然后把较短的字符串放在a数组,较
长的字符串放在b数组,并输出。
行号
1
2
3
4
5
6
7
8
9
10
11
12
13
源程序
#include
#include
int main( )
{ char a[10],b[10],ch;
int c,d,k;
scanf(“%s”,&a);
scanf(“%s”,&b);
c=strlen(a);
d=strlen(b);
if(c>d)
for(k=0;k<10;k++)
{ ch=a[k];a[k]=b[k];b[k]=ch;}
printf(“a=%s,”,a);
14
15
16
}
printf(“b=%sn”,b);
return 0;
错误在6和7行
找错
应改为:scanf(“%s”, a);和scanf(“%s”,b);
输入数据: abc123 china
调试正确后
的运行结果
运行结果:a=china,b=abc123
6.从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元
素之和。
行号
1
2
3
4
5
6
7
8
9
10
11
12
找错
调试正确后
的运行结果
二、编写程序
1.求5×5矩阵两条对角线上的各元素之和。
2.⊙试编制程序使一维数组中的数按照从大到小的次序排列。(起泡法和选择
源程序
#include
int main( )
{ int a[3][3],sum;
int i,j;
sum=0;
for (i=0;i<3;i++)
for (j=0;j<3;j++)
scanf(“%d”,a[i][j]);
for (i=0;i<3;i++)
sum=sum+a[i][i];
printf(“Sum=%dn”,sum);
}
错误在8 行
应改为:scanf(“%d”,&a[i][j]);
输入数据:1 1 1 2 2 2 3 3 3
运行结果:Sum=6
法)
1. #include
intmain( )
{ int a[5][5],i,j,sum=0;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
{scanf(“%d”,&a[i][j]);
if(i==j||i+j==4)
sum+=a[i][j];
}
printf(“%d”,sum);
return 0;
}
}
2. #include
intmain( )
{ int a[10],i,j,t;
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
//起泡法
for(i=0;i<9;i++)
for(j=1;j<10-i;j++)
if(a[j-1] for(i=0;i<10;i++) printf(“%d ”, a[i]); return 0; for(i=0;i<9;i++) for(j=i+1;j<10;j++)
版权声明:本文标题:C语言实验报告第6章答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1713666955a646130.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论