文档介绍:该【C语言答案 第8章学习资料 】是由【清晨】上传分享,文档一共【9】页,该文档可以免费在线阅读,需要了解更多关于【C语言答案 第8章学习资料 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。厦门大学本科生公共课 《C程序设计基础》第三版 教材习题答案 第8章 数组
主讲教师: 第1页/共9页
一 、选择题
,错误的是:C)int a[3]={1,2,3,4};
“int a[10]={0};”,则说法正确的是:A)数组a有10个元素,各元素的值为0.
,正确的是:B) int a[][2]={1,2,3,4};
“int a[8][10];”,在VC中一个整数占用4字节,设a的起始地址为1000,则a[1][1]的地址是:D)1044
“int a[][3]={1,2,3,4,5,6,7,8,9};”,则a[1][2]的值是:C)6
、初始化和赋值运算中,错误的是:A) char str[10];str=”String”;
,
char s1[]={‘S’,’t’,’r’,’i’,’n’,’g’};
char s2[]=”String”;
则s1和s2:B)长度不同,但内容相同。
“char str[6]={‘a’,’b’,’\0’,’c’,’d’,’\0’};”,执行语句“printf(“%s”,str)”后,输出结果为:B)ab
,数组元素下标不可以是:C)字符串
,以下错误的输入语句是:C)gets(s1,s2);
:A)123
void main()
{
char a[]=”abcd”,b[]=”123”;
strcpy(a,b);
printf(“%s\n”,a);
}
:A)123
void main()
{
char a[]=”123”,b[]=”abcd”;
if(a>b)printf(“%s\n”,a);
else printf(“%s\n”,b);
}
二、编程题
1.一维数字a的值已知,求一维数组中最小元素的值以及其在数组中的位置
(需填写代码)
2。一维整型数组a有20个元素,各元素的值已知,求一维数组中所有元素之和及其平均值。
(需填写代码)
厦门大学本科生公共课 《C程序设计基础》第三版 教材习题答案 第8章 数组
主讲教师: 第2页/共9页
3.一维数字a的值已知,请把数组中的值按逆序存放,然后输出数组。例如数组中原来的值为3, 4,2,1,6,颠倒后变成6,1,2,4,3.
#include<>
main()
{
int i,a[5]={2,3,45,12,5},t;
printf("转换前:");
for(i=0;i<5;i++)
printf("%d\t",a[i]);
for(i=0;i<5/2;i++)
{
t=a[i];
a[i]=a[5-i-1];
a[5-i-1]=t;
}
printf("\n转换后:");
for(i=0;i<5;i++)
printf("%d\t",a[i]);
}
4.输入一个整数(位数不确定),从高位到低位依次输出各位数字,其间用逗号分隔。例如输入整数为2345,则输出应为2,3,4,5。
#include<>
main()
{
int a[10],x,i;
printf("输入一个整数:");
scanf("%d",&x);
for(i=0;x>0;i++)
{
a[i]=x%10;
x/=10;
}
for(i--;i>=0;i--)
printf("%d,",a[i]);
printf("\b ");
}
,求字符串中包含了几个不同的字母。
(需填写代码)
厦门大学本科生公共课 《C程序设计基础》第三版 教材习题答案 第8章 数组
主讲教师: 第3页/共9页
。
#include <>
#include <>
void selectsort(int a[],int n)
{
int i,j,k,num;
for(i=0;i<n-1;i++) /* 外部循环实现选择排序 */
{
k=i;
for(j=i+1;j<n;j++) /* 内部循环得到最小数 */
{
if(a[j]<a[k])
k=j;
}
if(k!=i)
{
num = a[k]; /* 交换排序最小数 */
a[k]=a[i];
a[i]=num;
}
}
printf("\n\nThe sorted numbers are:\n");
for(i=0;i<n;i++)
printf("%5d",a[i]); /* 显示排序的数字 */
}
int main()
{
int i,a[20];
srand((unsigned)time(NULL));
for(i=0;i<20;i++)
a[i]=rand()%100; /* 利用随机数给数组赋值 */
printf("The original orders are:\n");
for(i=0;i<20;i++)
printf("%5d",a[i]);
selectsort(a,20); /* 数组名作为函数的参数,地址传递*/
getch();
return 0;
}
厦门大学本科生公共课 《C程序设计基础》第三版 教材习题答案 第8章 数组
主讲教师: 第4页/共9页
7请找出1~999中的所有回文数,并输出这些数。若某数的平方具有对称性质,则称该数为回文数。例如11的平方121,则称11为回文数。。
#include<>
main()
{
int x,i,j,a[10],wei,p;
for(i=1;i<1000;i++)
{
p=1;
x=i*i;
for(j=0;x>0;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);
}
}
。所谓鞍点就是在该位置上的元素在该行上最大,在该列上最小。数组元素由随机函数自动产生。
#include <>
#include <>
#include <>
int array[100][100];
int main(int argc, char *argv[])
{
while(1)
{
srand((unsigned)time(NULL));
int x,y;
printf("输入二维数组的长宽(不超过100)\n");
scanf("%d%d",&x,&y);
厦门大学本科生公共课 《C程序设计基础》第三版 教材习题答案 第8章 数组
主讲教师: 第5页/共9页
//int array[4][4]={{11,1,23,45},{40,56,98,91},{23,21,12,40},{45,67,23,90}};
int i,number=0,sign,j,m,n;
for(i=0;i<x;i++)
{
for(j=0;j<y;j++)
{
array[i][j]=rand()%100;
}
}
printf("数组是:\n");
for (i = 0;i <x;i++)
{
for (j = 0; j< y;j++)
printf("%10d",array[i][j]);
printf("\n");
}
printf("\n");
for (i = 0; i < x; i++)
{
m = i;
n = 0;
sign = 1;
for(j = 0; j < y;j++)
{
if (array[m][n] < array[i][j])
{n = j;}
}
for(j = 0; j < y;j++)
{
if(array[m][n] >array[j][n])
sign = 0;
}
if (sign == 1)
{
number++;
printf("第%d个鞍点是 %d,位置:%d %d\n",number,array[m][n],m+1,n+1);
}
}
if (number == 0) printf("没有鞍点\n");
}
system("PAUSE");
return 0;
厦门大学本科生公共课 《C程序设计基础》第三版 教材习题答案 第8章 数组
主讲教师: 第6页/共9页
}
*5的整数矩阵,计算对角线以上所有元素之和。
int main(int argc, char *argv[])
{
int a[5][5];
for(int i=0;i<5;i++)
scanf("%d %d %d %d %d",&a[i][0],&a[i][1],&a[i][2],&a[i][3],&a[i][4]);
int s=0;
for(int i=0;i<5;i++)
{
s+=a[i][i]+a[i][4-i];
}
printf("s:%d\n",s);
system("PAUSE");
return EXIT_SUCCESS;
}
10.文本加密。输入一字符串,将其中所有的大写英文字母+3,小写字母-3,然后在输出加密后该句子的长度。
#include<>
#include<>
main()
{
int i;
char a[100];
puts("输入文本:");
gets(a);
for(i=0;i<strlen(a);i++)
{
if(a[i]<='Z'&&a[i]>='A')
a[i]+=3;
else if(a[i]<='z'&&a[i]>='a')
a[i]-=3;
}
puts("加密后:");
puts(a);
}
11.输入一字符串,统计出某自定字符在字符串中出现的次数。
#include<>
#include<>
main()
厦门大学本科生公共课 《C程序设计基础》第三版 教材习题答案 第8章 数组
主讲教师: 第7页/共9页
{
char x,a[100],c=0;
int i;
puts("输入一串字符:");
gets(a);
puts("查哪个字符个数?");
x=getchar();
for(i=0;i<strlen(a);i++)
{
if(a[i]==x)
c++;
}
printf("共%d个。",c);
}
,如果两个单词之间对于一个空格,则删除多余的空格。然后输出处理前后该句子的长度。
int main(int argc, char *argv[])
{
char c[200]={0};
int i=0, NUM=0;
printf("请输入一段英文:\n");
do
{
i++;
scanf("%c",&c[i]);
if(' '==c[i]&&(' '==c[i-1]||'\0'==c[i-1]))
{
NUM++;
c[i]='\0'; //删除空格
}
}while(10!=c[i]);
printf("之前长度为%d,之后长度为%d\n",i,i-NUM);
system("PAUSE");
return 0;
}
厦门大学本科生公共课 《C程序设计基础》第三版 教材习题答案 第8章 数组
主讲教师: 第8页/共9页
,把字符数组str2中的字符串复制到字符数组str1中。
int main(int argc, char *argv[])
{
char str1[201];
char str2[101];
printf("请输入两个字符串(长度不超过100)\n");
scanf("%s%s",str1,str2);
int i,j;
for(i=0;str1[i]!='\0';i++)
{}
for(j=0;str2[j]!='\0';j++)
{
str1[i++]=str2[j];
}
str1[i]='\0';
printf("复制操作之后str1为:\n");
printf("%s",str1);
system("PAUSE");
return 0;
}
,按字典顺序排序后输出。
#include <>
#include <>
int main()
{
char a[100][100],b[100],c[100],d[100];
int n,i,j;
scanf("%d",&n);
getchar();
for(i=0;i<n;i++)
{
gets(a[i]);
}
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
strcpy(c,a[i]);
strcpy(d,a[j]);
strlwr(a[i]);
strlwr(a[j]);
if(strcmp(a[i],a[j])>0)
厦门大学本科生公共课 《C程序设计基础》第三版 教材习题答案 第8章 数组
主讲教师: 第9页/共9页
{
strcpy(b,c);
strcpy(c,d);
strcpy(d,b);
}
strcpy(a[i],c);
strcpy(a[j],d);
}
}
for(i=0;i<n;i++)
{
puts(a[i]);
}
system("pause");
return 0;
}