数组
一、选择题
1、若有以下说明语句:int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c=’a’,d,g;则数值为4的表达式是(d)。
A)a[g-c] B)a[4] C)a[‘d’-‘c’] D)a[‘d’-c]
2、假设int型变量占两个字节的存储单元,若有定义:int x[10]={0,2,4};则数组x在内存中所占字节数为(d)。
A)3 B)6 C)10 D)20
3、下列合法的数组定义是(d)。
A)int a[]=”string”; B)int a[5]={0,1,2,3,4,5};
C)char a=”string”; D)char a[]={0,1,2,3,4,5};
4、若给出定义:char x[]=”abcdefg”;char y[]={‘a’,’b’,’c’,’d’,’e’,’f’,’g’};则正确的叙述为(c)。
A)数组x和数组y等价 B)数组x和数组y的长度相同
C)数组x的长度大于数组y的长度 D)数组y的长度大于数组x的长度
6、下列程序运行后的输出结果是(d)。N0=n0+1 1,n1=n0+1 2,n2=n0+1 2,n0=n1+1,n1=n1+1,n2=n1+1
#include<stdio.h>
int main()
{
int n[3],t,j,k;
for(t=0;t<3;t++)
n[t]=0;
k=2;
for(t=0;t<k;t++)
for(j=0;j<3;j++)
n[j]=n[t]+1;
printf("%d\n",n[1]);
}
A)2 B)1 C)0 D)3
7、有以下程序,执行后输出结果是(d)。
#include<stdio.h>
int main()
{
int p[7]={11,13,14,15,16,17,18}, i=0,k=0;
while(i<7 && p[i]%2)
{
k =k+ p[i];
i++;
}
printf("%d\n", k);
}
A)58 B)56 C)45 D)24
9、有以下程序,执行后输出结果是(a)。
#include<stdio.h>
int main()
{
int m[][3]={1,4,7,2,5,8,3,6,9};
int i,j,k=2;
for(i=0; i<3; i++)
{
printf("%d ",m[k][i]);
}
}
A)4 5 6 B)2 5 8 C)3 6 9 D)7 8 9
10、以下能正确定义一维数组的选项是(b)。
A)int num[]; B) #define N 100
int num[N];
C)int num[0..100]; D) int N=100;
int num[N];
11、有以下程序,执行后输出结果是(c)。
#include<stdio.h>
int main( )
{
char a[]="abcdefg",b[10]="abcdefg";
printf("%d %d\n",sizeof(a),sizeof(b));
}
A)7 7 B)8 8 C)8 10 D)10 10
12、若有以下定义语句:char s[10],s=”abcd”;printf(“%s\n”,s);则运行结果是( d)。
A)输出abcd B)输出a C)输出ab cd D)编译不通过
13、不能把字符串“Hello!”赋给数组b的语句是(b)。
A)char b[10]={‘H’,’e’,’l’,’l’,’o’,’!’};
B)char b[10];b=”Hello!”;
C)char b[10]; strcpy(b,”Hello!”);
D)char b[10]=”Hello!”;
14、若有以下程序段,该程序段的输出结果是(a)。
char str[]=”ab\n\012\\\””;
printf(“%d”,strlen(str));
A)3 B)4 C)6 D)12
15、下列程序的输出结果是(c)。
#include <stdio.h>
main()
{
char ch[7]={"65ab21"};
int j,s=0;
for(j=0;ch[j]>='0'&&ch[j]<='9';j+=2)
s=10*s+ch[j]-'0';
printf("%d\n",s);
}
A)12ba56 B)66521 C)6 D)62
//16、设已定义char s[]=”\”Name\\Address\”\n”;,则字符串s所占的字节数是(a)。?
A)19 B)18 C)16 D)14
17、设已定义char c[8]=”Tianjin”和int j,则下面的输出函数调用中错误的是( d)。
A)printf(“%s”,c); B)for(j=0;j<8;j++) printf(“%c”,c[j]);
C)puts(c); D)for(j=0;j<8;j++) puts(c[j]);
18、设已定义char a[10]和 int j,则下面输入函数调用中错误的是(b)。
A)scanf(“%s”,a); B)for(j=0;j<9;j++) scanf(“%c”,a[j]);
C)gets(a); D)for(j=0;j<9;j++) scanf(“%c”,&a[j]);
19、设已定义char x[8]和int j,为了给该数组赋值,下面语句中正确的是(d)。
A)x[8]=”Turbo C”; B)x=” Turbo C”;
C)x[]=”Turbo C”; D)for(j=0;j<7;j++) x[j]=getchar();
20、有如下程序,该程序的输出结果是(d)。
#include <stdio.h>
main()
{
int n[5]={0,0,0},j,k=2;
for(j=0;j<k;j++)
n[j]=n[j]+1;
printf("%d\n",n[k]);
}
A)不确定的值 B)2 C)1 D)0
程序编写
请编写一个程序,它的功能是:将字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main(int argc, const char *argv[])
{
char str[]="asdfdfadsfadsdfa";
for(int i=1;i<sizeof(str);i+=2)
if(str[i]<='z'&&str[i]>='a')
str[i]=str[i]-('a'-'A');
printf("%s\n",str);
return 0;
}