1.选择题
(1)以下程序的输出结果是 。
#include <stdio.h>
#include <string.h>
main()
{
char str[12]={'s','t','r','i','n','g'};
printf("%d\n",strlen(str));
}
A.6 B.7 C.11 D.12
(2)以下语句的输出结果是 。
printf("%d\n",strlen("\t\"\065\xff\n"));
A.5 B.14
C.8 D.输出项不合法,无正常输出
(3)以下程序的功能是:给数组的所有元素输入数据,应填入的正确答案是 。
#include <stdio.h>
main()
{
int a[10],i=0;
while(i<10)
scanf("%d", );
…
}
A.a+(i++) B.&a[i+1] C.a+i D.&a[++i]
(4)设有static char str[]="Beijing";,则执行语句printf("%d\n", strlen(strcpy(str,"China")));后的输出结果为 。
A.5 B.7 C.12 D.14
(5)下面各语句中,能正确进行为字符串赋值操作的是 。
A.char st[4][5]={"ABCDE"}; B.char s[5]={'A','B','C','D','E'};
C.char *s; s="ABCDE"; D.char *s; scanf("%s",s);
(6)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int n[2],i,j,k;
for(i=0;i<2;i++)
n[i]=0;
k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++)
n[j]=n[j]+1;
printf("%d\n",n[k]);
}
A.不确定的值 B.3 C.2 D.1
(7)以下对C语言字符数组的描术中,错误的是 。
A.字符数组可以存放字符串
B.字符数组中的字符串可以整体输入、输出
C.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值
D.不可以用关系运算符对字符数组中的字符串进行比较
(8)定义如下变量和数组:
int i;
int x[3][3]={1,2,3,4,5,6,7,8,9};
以上语句的输出结果是 。
for(i=0;i<3;i++)
printf("%d",x[i][2-i]);
A.1 5 9 B.1 4 7 C.3 5 7 D.3 6 9
(9)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int n[3],i,j,k;
for(i=0;i<3;i++)
n[i]=0;
k=2;
for(i=0;i<k;i++)
for(j=0;j<k;j++)
n[j]=n[i]+1;
printf("%d\n",n[1]);
}
A.2 B.1 C.0 D.3
(10)不能将字符串:Hello!赋给数组b的语句是 。
A.char b[10]={'H','e','l','l','o','!','\0'}; B.char b[10];b="Hello!";
C.char b[10];strcpy(b,"Hello!"); D.char b[10]="Hello!";
(11)若有以下定义语句:
int a[12]={1,2,3,4,5,6,7,8,9,10,11,12};
char c='a',d,g;
则数值为4的表达式是 。
A.a[g-c] B.a[4]
C.a['d'-'c'] D.a['d'-c]
(12)以下程序的输出结果是 。
#include <stdio.h>
main()
{
char *a="12134211";
int v1=0,v2=0,v3=0,v4=0,k;
for(k=0;s[k];k++)
switch(s[k])
{
default: v4++;
case '1': v1++;
case '3': v3++;
case '2': v2++;
}
printf("v1=%d,v2=%d,v3=%d,v4=%d\n",v1,v2,v3,v4);
}
A.v1=4,v2=2,v3=1,v4=1 B.v1=4,v2=9,v3=3,v4=1
C.v1=5,v2=8,v3=6,v4=1 D.v1=8,v2=8,v3=8,v4=8
(13)当执行以下程序且输入ABC时,输出结果是 。
#include <stdio.h>
#include <string.h>
main()
{
char ss[10]="12345";
strcat(ss,"6789");
gets(ss);
printf("%s\n",ss);
}
A.ABC B.ABC9 C.123456ABC D.ABC456789
(14)以下数组定义中,合法的是 。
A.int a[]="string"; B.int a[5]={0,1,2,3,4,5};
C.string s="string"; D.char a[]={0,1,2,3,4,5};
(15)若有以下定义语句:
char s[10]="abcd";
printf("%s\n",s);
则输出结果是(以下u代表空格) 。
A.abcd B.a
C.abcduuuuu D.编译不通过
(16)以下程序的输出结果是 。
#include <stdio.h>
main()
{
char *s="121";
int k=0,a=0,b=0;
do
{
k++;
if(k%2==0)
{
a=a+s[k]-'0';
continue;
}
b=b+s[k]-'0';
a=a+s[k]-'0';
} while(s[k+1]);
printf("k=%d a=%d b=%d\n",k,a,b);
}
A.k=3 a=2 b=3 B.k=3 a=3 b=2 C.k=2 a=3 b=2 D.k=2 a=2 b=3
(17)以下程序的输出结果是 。
#include <stdio.h>
main()
{
char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++)
printf("%s\n",&w[k][k]);
}
A.ABCD B.ABCD
FGH EFG
KL IJ
M
C.EFG D.FGH
JK KL
O
(18)以下程序片段的输出结果是 。
char str[]="ab\n\012\\\"";
printf(%d",strlen(str));
A.3 B.4 C.6 D.12
(19)若有以下定义语句:
char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
则正确的叙述为 。
A.数组x和数组y等价
B.数组x和数组y的长度相同
C.数组x的长度大于数组y的长度
D.数组x的长度小于数组y的长度
(20)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int i,k,a[10],p[3];
k=5;
for(i=0;i<10;i++)
a[i]=i;
for(i=0;i<3;i++)
p[i]=a[i*(i+1)];
for(i=0;i<3;i++)
k+=p[i]*2;
printf("%d\n",k);
}
A.20 B.21 C.22 D.23
(21)以下程序的输出结果是 。
#include <stdio.h>
main()
{
char ch[7]="65ab21";
int i,s=0;
for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)
s=10*s+ch[i]-'0';
printf("%d\n",s);
}
A.2ba56 B.6521 C.6 D.62
(22)执行以下程序时,如果从键盘上输入:
ab<CR>
c <CR>
def<CR>
则输出结果为 。
#include <stdio.h>
main()
{
char c[N];
int i=0;
for(;i<N;c[i]=getchar(),i++)
for(i=0;i<N;i++)
putchar(c[i]);
printf("\n");
}
A.a B.a C.ab D.abcdef
b b c
c c d
d d
e
f
(23)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int y=18,i=0,j,a[8];
do
{
a[i]=y%2; i++;
y=y/2;
} while(y>=1);
for(j=i-1;j>=0;j--)
printf("%d",a[j];
printf("\n");
}
A.10000 B.10010 C.00110 D.10100
(24)以下描述中,不正确的是 。
A.字符型数组中可以存放字符串
B.可以对字符型数组进行整体输入、输出
C.可以对整型数组进行整体输入、输出
D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值
(25)执行以下程序片段后,变量k的值为 。
int k=3,s[2];
s[0]=k;k=s[1]*10;
A.不定值 B.33 C.30 D.10
(26)以下程序的输出结果是 。
#include <stdio.h>
main()
{
char arr[2][4];
strcpy(arr,"you");
strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s\n",arr);
}
A.you&me B.you C.me D.err
(27)若执行下列程序时,输入123<空格>456<空格>789<CR>,则输出结果是 。
#include <stdio.h>
main()
{
char s[100];
int c, i;
scanf("%c",&c);
scanf("%d",&i);
scanf("%s",s);
printf("%c,%d,%s\n",c,i,s);
}
A.123,456,789 B.1,456,789
C.1,23,456,789 D.1,23,456
(28)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int n[5]={0,0,0},i,k=2;
for(i=0;i<k;i++)
n[i]=n[i]+1;
printf("%d\n",n[k]);
}
A.不确定的值 B.2 C.1 D.0
(29)若有定义语句int t[3][2];,能正确表示t数组元素地址的表达式是 。
A.&t[3][2] B.*(t+3) C.t+1 D.t[2]
(30)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int a[3][2]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;i<3;i++)
for(j=0;j<i;j++)
s+=a[i][j];
printf("%d\n",s);
}
A.18 B.14 C.20 D.21
(31)以下程序的输出结果是 。
#include <stdio.h>
main()
{
char w[][10]={"ABCD","EFGH","IJKL","MNOP"},k;
for(k=1;k<3;k++)
printf("%s\n",w[k]);
}
A.ABCD B.ABCD C.EFG D.EFGH
FGH EFG JK IJKL
KL IJ O
M
(32)以下定义语句中,错误的是 。
A.int a[]={1,2}; B.char *a[3];
C.char s[10]="test"; D.int n=5,a[n];
(33)设int型变量占用两个字节,如有定义int x[10]={0,2,4};,则数组x在内存中所占的字节数是 。
A.3 B.6 C.10 D.20
(34)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int i,a[10];
for(i=9;i>=0;i--)
a[i]=10-i;
printf("%d%d%d",a[2],a[5],a[8]);
}
A.258 B.741 C.852 D.369
(35)以下数组定义中,不正确的是 。
A.int a[2][3];
B.int b[][3]={0,1,2,3};
C.int c[100][100]={0};
D.int d[3][]={{1,2},{1,2,3},{1,2,3,4}};
(36)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int a[4][4]={{1,3,5},{2,4,6},{3,5,7}};
printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1],a[3][0]);
}
A.0650 B.1470
C.5430 D.不确定的值
(37)以下选项中,不能正确赋值的语句是 。
A.char s1[10];s1="Ctest"; B.char s2[]={'C', 't', 'e', 's', 't'};
C.char s3[20]="Ctest"; D.char *s4="Ctest\n"
(38)以下程序的输出结果 。
#include <stdio.h>
main()
{
char a[]={'a','b','c','d','e','f','g','h','\0'};
int i,j;
i=sizeof(a);
j=strlen(a);
printf("%d,%d\n"i,j);
}
A.9,9 B.8,9 C.1,8 D.9,8
(39)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int aa[4][4]={{1,2,3,4},{5,6,7,8},{3,9,10,2},{4,2,9,6}};
int i,s=0;
for(i=0;i<4;i++)
s+=aa[i][1];
printf("%d\n",s);
}
A.11 B.19 C.13 D.20
2.填空题
(1)以下程序的输出结果为 。
#include <stdio.h>
main()
{
int i,j,row,column,m;
int array[3][3]={{100,200,300},{28,72,-30},{-850,2,6}};
m=array[0][0];
for(i=0;i<3;i++)
for(j=0;j<3;i++)
if(array[i][j]<m)
{
m=array[i][j];
row=i,column=j;
}
printf("%d,%d,%d\n",m,row,column);
}
(2)以下程序的功能是:统计从键盘输入的字符中大写字母的个数。用#号作为输入结束的标志。
#include <stdio.h>
#include <ctype.h>
main()
{
int num[26],i;
char c;
for(i=0;i<26;i++)
num[i]=0;
/*统计从键盘输入的大写字母的个数*/
while( != '#')
if( isupper(c)) num[c-65]+=1;
/*输出大写字母和该字母的个数*/
for(i=0;i<26;i++)
if( ) printf("%c:%d\n,C,num[i]);
}
(3)以下程序的输出结果是 。
#include <stdio.h>
main()
{
int arr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]=i;
printf("%d\n",k);
}
(4)若有定义语句char s[100],d[100]; int j=0,i=0;,且s中字符串已赋值,以下程序的功能是实现字符串的复制(注:不得使用逗号表达式)。
while(s[i])
{
d[j]= ;
j++;
}
d[j]=0;
(5)以下程序的输出结果是 。
#include <stdio.h>
main()
{
char s[]="abcdef";
s[3]='\0';
printf("%s\n",s);
}
(6)以下程序用来对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如,输入的两个字符串分别为abcdef和abceef,则输出结果为-1。
#include <stdio.h>
main()
{
char str[100],str2[100],c;
int i,s;
printf("\n Input string 1:\n");
gets(str1);
printf("\n Input string 2:\n");
gets(str2);
i=0;
while((strl[i]==str2[i])&&(str1[i]!= ))
i++;
s= ;
printf("%d\n",s);
}
(7)以下程序可以把从键盘上输入的十进制数(long型)以二进制和十六进制形式输出。
#include <stdio.h>
main()
{
char b[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
int c[64],d,i=0,base;
long n;
printf("Enter a number:\n");
scanf("%ld",&n);
printf("Enter a new base:\n");
scanf("%d",&base);
do
{
c[i]= ;
i++;
n=n/base;
} while(n!=0);
printf("Transmite the new base:\n");
for(--i;i>=0;--i)
{
d=c[i];
printf("%c",b ;
}
}
3.上机操作题
(1)有10个整数存放在一个数组中,编写一个程序,求这10个整数的最大值。
(2)有n个学生,每个学生有m门课,编写一个程序,求出每个学生的总分,每门课的平均分。
(3)编写一个程序,实现输入一个字符串时,将字符串中的所有小写字母转换成对应的大写字母。
(4)编写一个程序,删除一个字符串中的所有空格。