C语言程序设计答案(黄保和编)第8章.doc
文本预览下载声明
一 、选择题
1.以下数组定义中,错误的是:C)int a[3]={1,2,3,4};
2.以下数组定义中,正确的是:B) int a[][2]={1,2,3,4};
3.设有定义“int a[8][10];”,在VC中一个整数占用4字节,设a的起始地址为1000,则a[1][1]的地址是:D)1044
4.已知有数组定义“int a[][3]={1,2,3,4,5,6,7,8,9};”,则a[1][2]的值是:C)6
5.在以下字符串定义、初始化和赋值运算中,错误的是:A) char str[10];str=”String”;
6.设有以下字符串定义,
char s1[]={‘S’,’t’,’r’,’i’,’n’,’g’};
char s2[]=”String”;
则s1和s2:C)长度不同,但内容相同。
7.设有定义“int a[10]={0};”,则说法正确的是:A)数组a有10个元素,各元素的值为0.
8.设已定义“char str[6]={‘a’,’b’,’\0’,’c’,’d’,’\0’};”,执行语句“printf(“%s”,str)”后,输出结果为:B)ab
9.引用数组元素时,数组元素下标不可以是:C)字符串
10.已定义字符串S1和S2,以下错误的输入语句是:C)gets(s1,s2);
11.下面程序段的运行结果是:A)123
void main()
{
char a[]=”abcd”,b[]=”123”;
strcpy(a,b);
printf(“%s\n”,a);
}
12.下面程序段的运行结果是:A)123
void main()
{
char a[]=”123”,b[]=”abcd”;
if(ab)printf(“%s\n”,a);
else printf(“%s\n”,b);
}
二、编程题
1.一维数字a的值已经,请把数组中的值按逆序存放,然后输出数组。例如数组中原来的值为3,4,2,1,6,颠倒后变成6,1,2,4,3.
#includestdio.h
main()
{
int i,a[5]={2,3,45,12,5},t;
printf(转换前:);
for(i=0;i5;i++)
printf(%d\t,a[i]);
for(i=0;i5/2;i++)
{
t=a[i];
a[i]=a[5-i-1];
a[5-i-1]=t;
}
printf(\n转换后:);
for(i=0;i5;i++)
printf(%d\t,a[i]);
}
2.输入一个整数(位数不确定),从高位到低位依次输出各位数字,其间用逗号分隔。例如输入整数为2345,则输出应为2,3,4,5。
#includestdio.h
main()
{
int a[10],x,i;
printf(输入一个整数:);
scanf(%d,x);
for(i=0;x0;i++)
{
a[i]=x%10;
x/=10;
}
for(i--;i=0;i--)
printf(%d,,a[i]);
printf(\b );
}
3.若某数的平方具有对称性质,则称该数为回文数。例如11的平方121,则称11为回文数。请找出1~999中的所有回文数。
#includestdio.h
main()
{
int x,i,j,a[10],wei,p;
for(i=1;i1000;i++)
{
p=1;
x=i*i;
for(j=0;x0;j++)
{
a[j]=x%10;
x/=10;
}
wei=j;
for(j--;j=0;j--)
{
if(a[j]!=a[wei-1-j])
{
p=0;
break;
}
}
if(p==1)
printf(%d\t,i);
}
}
4.用选择排序法对整形数字排序。
#include stdio.h
#include stdlib.h
void selectsort(int a[],int n)
{
int i,j,k,num;
for(i=0;in-1;i++) /* 外部循环实现选择排序 */
{
k=i;
for(j=i+1;jn;j++) /* 内部循环得到最小数 */
{
if(a[j]a[k])
k=j;
}
if(k!=i)
{
num = a[k]; /* 交换排序最小数 */
显示全部