c语言复习题及答案第七章数组
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章数组 (8学时)
学习目的与要求:
1 、重点掌握一维数组的定义和引用;
2 、基本掌握二维数组的定义和引用;
3 、重点掌握字符型数组的定义与引用;
4 、能正确使用字符串处理函数;
5 、学会使用数组解决实际问题。
重点:
1 、一维数组的定义与引用;
2 、二维数组的定义与引用;
3 、字符数组的定义与引用;
第1讲
知识归纳:
1、一维数组的定义:类型说明符数组名[ 常量表达式 ] ;
(1)(1)数组名后必须用方括弧 [ ] ,用其他括弧均错误;
(2) 方括弧中的常量表达式表示数组的元素个数;
(3) 方括弧中的常量表达式,必须是能计算出具体数值,且不改变的常量,不能是变量;
2、一维数组的引用:
数组名[ 下标 ]
for ( i =0 ; i<7 ; i ++ ) printf( “%c” , c1[ i ] );
(2)将整个字符串一次输入输出,用格式符%s ;
如:char c1[10] ;
scanf ( “ %s”, c1) ; 100]; D) int N=100;
int num[N];
(2003年9月)
25、有以下程序
main()
{ char a[ ]={‘a’,‘b’,‘c’,‘d’, ‘e’, ‘f’,‘g’,‘h’,‘\0’}; int i,j;
i=sizeof(a); j=strlen(a);
printf(“%d,%d\b”i,j);
}
程序运行后的输出结果是( )。
A)9,9 B)8,9 C)1,8 D)9,8
(2002年9月)
21、C 22、C 23、D 24、B 25、D
二、填空题
1、下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在一
维数组中返回,二进制数的最低位放在下标为0的元素中,其它依此类推。请填空。
fun(int x,int b[])
{ int k=0,r;
do
{ r=x%2;
b[k++]=r;
x/=2 ; } while(x); } (1996年4月)
2 2
2、以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相
同字符的ASCII码之差。例如:输入的两个字符串分别为abcdef和abceef,则输出为-1。
请填空。
#include< >
main()
{ char str[100],str2[100],c;
int i,s;
printf("\n input string 1:\n"); gest(str1);
printf("\n input string 2:\n"); gest(str2);
i=0;
while((strl[i]==str2[i]&&(str1[i]!= ))
i++;
s= ;
printf("%d\n",s);
} (1998年9月)
'\0'或0 strl[i]-str2[i]
3、若想通过以下输入语句使a中存放字符串1234,b中存放字符5,则输入数据的形式应该是a=1234 b=5 A或a=1234b=5。
char a[10],b;
scanf("a=%s b=%c",a,&b); (1999年4月)
4、以下程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低
于平均分的学生成绩,用输入负数结束输入。请填空。
main( )
{ float x[1000], sum=,ave, a;
int n=0,i;
printf("Enter mark:\n");scanf("%f",&a);
while(a>=&& n<1000)
{ sum+; x[n]=;
n++; scanf("%f",&a);
}
ave=;
printf("Output:\n");
printf("ave=%f\n",ave);
for (i=0;i if printf (“%f\n”,x[i]); } (1999年9月) =a a sum/n x[i] 5、下面程序的功能是:将字符数组a中下标值为偶数的元素从小到大排列,其它元素不变。 请填空。 #include< > #include< > main() { char a[]="clanguage",t; int i, j, k; k=strlen(a); for(i=0; i<=k-2; i+=2) for(j=i+2; j<=k;j+=2) if(a[i]>a[j]) { t=a[i]; a[i]=a[j]; a[j]=t; } puts(a); printf("\n"); } (2000年4月) 6、下列程序段的输出结果是Hello。 main() { char b[]=”Hello,you”; b[5]=0; printf(“%s \n”, b ); } (2001年4月) 7、若变量n中的值为24,则prnt函数共输出5行,最后一行有4个数。 void prnt(int n, int aa[ ]) { int i; for(i=1; i<=n;i++) { printf(“%6d”, aa[i]); if( !(i%5) ) printf(“\n”); } printf(“\n”); } (2001年4月) 8、若已定义:int a[10], i;,以下fun函数的功能是:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素 中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1。请填空。 fun( int a[ ]) { int i; for(i=1; i<=10; i++) =i; for(i=0; i<5; i++) =a[i]; } (2001年9月) a[i-1] a[9-i] 9、若有定义语句: char s[100],d[100]; int j=0, i=0;,且s中已赋字符串,请填空以 实现字符串拷贝。(注:不得使用逗号表达式) while(s[i]){ d[j]=s[i++];j++;} d[j]=0; (2001年9月) 10、以下程序的输出结果是abc。 main() { char s[]="abcdef"; s[3]=‘\0'; printf("%s\n",s); } (2002年4月) 11、若有以下程序 main() { int a[4][4]={{1,2,-3,-4},{0,-12,-13,14},{-21,23,0,-24},{-31,32,-33,0}}; int i,j,s=0; for(i=0;i<4;i++) { for(j=0;j<4;j++) { if(a[i][j]<0)continue; if(a[i][j]==0)break; s+=a[i][j]; }