数组
一、选择题
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)。
#include
int main()
{
int n[3],t,j,k;
for(t=0;t<3;t++)
n[t]=0;
k=2;
for(t=0;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 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、有以下程序,执行后输出结果是(c)。 #include 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 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、若有以下程序段,该程序段的输出结果是(C)。 char str[]=”ab\n\012\\\””; printf(“%d”,strlen(str)); A)3 B)4 C)6 D)12 15、下列程序的输出结果是(C)。 #include 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所占的字节数是(C)。 A)19 B)18 C)16 D)14 17、设已定义char c[8]=”Tianjin”和int j,则下面的输出函数调用中错误的是(A)。 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 main() { int n[5]={0,0,0},j,k=2; for(j=0;j n[j]=n[j]+1; printf("%d\n",n[k]); } A)不确定的值 B)2 C)1 D)0 程序编写 请编写一个程序,它的功能是:将字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 #include #include int main(int argc, const char *argv[]) { char str[100]; printf("请输入字符串:"); fgets(str, sizeof(str), stdin); int i = 0; while (str[i] != '\0') { if (i % 2 != 0 && isalpha(str[i])) { str[i] = toupper(str[i]); } i++; } printf("结果字符串为:%s\n", str); return 0; }