admin 管理员组文章数量: 887032
2024年2月21日发(作者:手表详情页模板)
。语言中,引用数组元素时,其数组下标的数据类型允许是 C 【1】在C型表达式 B)整型常量 A
)任何类型的表达式C)整型常量或整型表达式 D
。的正确说明是 D 【2】以下对一维整型数组a D)#define SIZE 10 C)int n;
”,&n); int a[SIZE]; scanf(“%d int a[n];
D 。】若有说明:int a[10];则对a数组元素的正确引用是 【3a[] )a(5) D A)a[10]
。】以下能对一维数组a进行正确初始化的语句是 C 【4int a[10]=(0,0,0,0,0); B
int a[10]={10*1}; D) C)int a[]={0};
。 B a【5】以下对二维数组的正确说明是a[3][];
D)float a(3)(4); C)float a(3,4);
D 。】若有说明:int a[3][4];则对a数组元素的正确引用是 【6a[1,3] C)a(2)(1) Da[2][4] A)B)
。 C 进行正确初始化的语句是【7】以下不能对二维数组aB)};6}}; C)D) int a[][3]={1,2,3,4,5,6};
【8】 指出下面各说明语句中哪些是合法的:(多选)
A. int abcd[0x80]; B. char 9ab[10];
C. char chi[-200]; D. int aaa[5]={3,4,5};
E. float key[]={,,1,0}; F. char disk[];
G. int n,floppy[n]; H. int cash[4]={1,2,3,4,5,6};
答案: ADE
【9】下面程序中有错误的行是 D (每行程序前面的数字表示行号)。
1 main()
2 {
float a[3]={1};3
4 int i;
5 scanf(“%d”,&a);
6 for(i=1;i<3;i++) a[0]=a[0]+a[i];
7 printf(“a[0]=%dn”,a[0]);
8 }
int a[2][3]={0};
A)int n=10,a[n];A )int a(10);
B)
)整
)a[10-10]CB)
)int a[10]={};A)
B)double a[1][4]; A)int
a[1+1][0])
A)3 B)6 C)7 D)5
【10】 请回答下列问题。
(1)array是一个一维整形数组,有10个元素,前6个元素的初值是9,4,7,49,32,-5,请写出正确的说明语句。 ___
(2)该数组下标的取值范围是从___到___(从小到大)。
(3)如何用scanf函数输入数组的第二个元素。 ___
(4)如何用赋值语句把39存入第一个元素。 ___
(5)如何表示把第六个和第四个元素之和存入第一个元素。 ___
答案: int array[10] = {9,4,7,49,32,-5};
0 9
scanf(%d,&array[1]);
array[0] = 39;
array[0] = array[5] + array[3];
【11】若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为 A 。(假)
设a[0][0]位于数组的第一个位置上。 A)i*m+j+1 B)j*m+i C)i*m+j-1 D)i*m+j
【12】若有说明:int a[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是 B 。
A)2 B)3 C)4 D)无确定值
【13】定义如下变量和数组:
int k;
int a[3][3]={1,2,3,4,5,6,7,8,9};
则下面语句的输出结果是 A 。
for(k=0;k<3;k++) printf(%d,a[k][2-k]);
A)3 5 7 B)3 6 9 C)1 5 9 D)1 4 7
【14】若有以下程序段:
… …
int a[]={4,0,2,3,1}; i,j,t;
for(i=1;i<5;i++)
{
t=a[i]; j=i-1;
while(j>=0&&t>a[j])
{ a[j+1]=a[j]; j--; }
a[j+1]=t;
}
… …
则该程序段的功能是 B 。
A) 对数组a进行插入排序(升序)
B) 对数组a进行插入排序(降序)
C) 对数组a进行选择排序(升序)
D) 对数组a进行选择排序(降序)
【题15】当运行以下程序时,从键盘输入:AhaMA Aha
#include <>
main()
{
char s[80],c=‘a';
int i=0;
scanf(“%s”,s);
while(s[i]!=‘0')
{
if(s[i]==c) s[i]=s[i]-32;
else if(s[i]==c-32) s[i]=s[i]+32;
i++;
}
puts(s);
}
A)ahAMa B)AhAMa C)AhAMa ahA D)ahAMa ahA
【题16】设数组a包括10个整型元素。下面程序的功能是求出a中各相邻两个元素的和,并将这些和存在数组b中,按每行3个元素的形式输出。请填空。
main()
{
int a[10],b[10],i;
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
for(【1】;i<10;i++)
【2】
for(i=1;i<10;i++)
{
printf(“=”,b[i]);
if(【3】==0) printf(“n”);
}
}
【1】i=1 【2】b[i]=a[i]+a[i-1] 【3】(i%3)
进制。请填空。n】下面程序将十进制整数转换成17【题.
main()
{
int i,base,n,j,num[20];
printf(“Enter data that will be convertedn”);
scanf(“%d”,&n);
printf(“Enter basen”);
scanf(“%d”,&base);
do{
i++;
num[i]=n【1】base;
n=n【2】base;
}while(n!=0);
printf(“The data %d has been converted into the %d--base
data:n”,n,base);
for(【3】)
printf(“%d”,num[j]);
}
【1】% 【2】/ 【3】j=i; j>=1; j--
【题18】下面程序的功能是将二维数组a中每个元素向右移一列,最右一列换到最左一列,移后的数组存到另一二维数组b中,并按矩阵形式输出a和b。请填空。
例如:array a: array b:
4 5 6 6 4 5
1 2 3 3 1 2
main()
{
int a[2][3]={4,5,6,1,2,3},b[2][3];
int i,j;
printf(“array a:n”);
for(i=0;i<=1;i++)
{
for(j=0;j<3;j++)
{
printf(“]”,a[i][j]);
【1】;
}
printf(“n”);
}
for(【2】;i++) b[i][0]=a[i][2];
printf(“array b:n”);
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf(“]”,b[i][j]);
【3】;
}
}
【1】b[i][j+1]=a[i][j] 【2】i=0;i<2 【3】printf(“n”)
编程答案:
[1]
#define M 50
main()
{
int a[M], c[5], i, n = 0, x;
printf(“Enter 0 or 1 or 2 or 3 or 4, to end with –1n”);
scanf(“%d”, &x);
while (x != -1)
{
if (x >= 0 && x <= 4)
{
a[n] = x;
n++;
}
scanf(“%d”, &x);
}
for (i=0; i<5; i++)
c[i] = 0;
for (i=0; i c[a[i]]++; printf(“The result is:n”); for (i=0; i<=4; i++) printf(“%d:%dn”,i c[i]); printf(“n”); } [2] main() { int a [5][5], i, j, n = 1; for (i=0; i<5; i++) for (j=0; j<5; j++) a[i][j] = n++; printf(“The result is:n”); for (i=0; i<5; i++) { for (j=0; j<=i; j++) printf(“M”, a[i][j]); printf(“n”); } } [3] #include <> #include <> main() { char a[80], b[] = “ab”, max; int i = 1, j; printf(“Input a stringn”); gets(a); puts(a); max = a[0]; while (a[i] != ‘0') { if (a[i] > max) { max = a[i]; j = i; } i++; } for (i=strlen(a)+2; i>j; i--) a[i] = a[i-2]; a[i+1] = ‘a'; a[i+2] = ‘b'; puts(a); } 第八章 函数补充作 【题1】以下正确的说法是 B 。 建立函数的目的之一是 A)提高程序的执行效率 B)提高程序的可读性 C)减少程序的篇幅 D)减少程序文件所占内存 【题2】以下正确的说法是 B 。 A) 用户若需调用标准库函数,调用前必须重新定义 B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 C) 系统根本不允许用户重新定义标准库函数 D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 【题3】若调用一个函数,且此函数中没有return语句,则正确的说法是 D 。 该函数 A)没有返回值 B)返回若干个系统默认值 C)能返回一个用户所希望的函数值 D)返回一个不确定的值 【题4】以下不正确的说法是 D 。 C语言规定 A)实参可以是常量、变量或表达式 B)形参可以是常量、变量或表达式 C)实参可以为任意类型 D)形参应与其对应的实参类型一致 【题5】以下正确的说法是 C 。 A) 定义函数时,形参的类型说明可以放在函数体内 B) return后边的值不能为表达式 C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 D) 如果形参与实参的类型不一致,以实参类型为准 【题6】以下程序是选出能被3整除且至少有一位是5的两位数,打印出所有这样的数及其个数。请选择填空。 sub(int k,int n) { int a1,a2; a2=【1】; (为:C) a1=k-【2】; (为:A) if((k%3==0&&a2==5)||(k%3==0&&a1==5)) { printf(“%d”,k); n++; return n; } else return -1; } main() { int n=0,k,m; for(k=10;k<=99;k++) { m=sub(k,n); if(m!=-1) n=m; } printf(“nn=%d”,n); } 【1】 A)k*10 B)k_x0010_ C)k/10 D)k*10_x0010_ 【2】 A)a2*10 B)a2 C)a2/10 D)a2_x0010_ 【题7】折半查找法的思路是:先确定待查元素的范围,将其分成两半,然后测试位于中间点元素的值。如果该待查元素的值大于中间点元素,就缩小待查范围,只测试中点之后的元素;反之,测试中点之前的元素,测试方法同前。函数binary的作用是应用折半查找法从存有10个整数的a数组中对关键字m进行查找,若找到,返回其下标值;返回-1。请选择填空。 binary(int a[10],int m) { int low=0,high=9,mid; while(low<=high) { mid=(low+high)/2;
版权声明:本文标题:C语言第七八章补充作业 答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1708521313h526640.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论