1、数组定义中,数组名后是用方括号括起来的常量表达式,不能用圆括号。 √
2、如果strcmp(s1,s2)返回的结果为0,表示字符串s1和s2不相同 ×
注:若str1=str2,则返回零;若str1<str2,则返回负数;若str1>str2,则返回正数。
3、数组初始化时,初始值个数小于数组元素的个数,C语言自动将剩余的元素初始化为初始化列表中的最后一个初始值。 ×
4、对于定义int a[5];可以通过语句scanf("%d",a);输入全部元素的值。 ×
5、对于定义 char str[] = "abc\000def\n"
(注:其中0为数字零),求字符串str的长度len和数组str的大小size,len和size分别是:C
A.12 ,13
B.3 ,11
C.3 ,9
D.3 ,4
6、有两个字符数组a,b,则以下正确的输入语句是(B)
A.gets(a,b);
B.scanf("%s%s",a,b);
C.scanf("%s%s",&a,&b);
D.gets("a"),gets("b");
7、
设char cs[20]="\ta\017bc";则函数strlen(cs)的返回值为( B )
A.8
B.5
C.20
D.9
8、在C/C++语言中引用数组元素时,数组下标的要求,下列选项中最合适的是( C ) 。
A.整型常量
B.整型变量
C.整型表达式
D.任何类型的表达式
9、以下对字符数组进行初始化,错误的是( B )。
A.char c1[3]={'1','2','3'};
B.char c2[3]="123";
C.char c3[ ]={ '1','2','3','\0'};
D.char c4[ ]="123";
10、以下初始化数组的各语句中,错误的是( A )。
A.int a[3][]={1,2,3,4,5,6};
B.int a[2][2]={1,2,3,4};
C.float a[2][5]={0,2,4,6,8,10};
D.int a[][3]={1,2,3,4,5,6};
注:必须有列标
11、有定义语句“char s[10];”可以把字符串常量"123456"赋值给字符数组s的语句正确的是 ( C )。
A.s[]="123456";
B.s="123456";
C.strcpy(s,"123456");
D.strcmp(s,"123456");
12、判断字符串a和b是否相等,应当使用(D)。
A.if(a==b)
B.if(a=b)
C.if(strcpy(a,b))
D.if(strcmp(a,b))
13、以下程序段的输出结果是? B
A.16
B.20
C.18
D.36
注:默认从1开始
14、有如下程序
void main()
{ int n[5]={0,0,0},i,k=3;
for(i=0;i<k;i++) n[i]=i+1;
printf("%d\n",n[k]);
}
该程序的输出结果是____0____。
15、求一元二次方程的根
#include<stdio.h>
#include<math.h>
int main(void){
double a,b,c,s,x1,x2;
scanf("%lf%lf%lf",&a,&b,&c);
s=(b*b*1.0-4.0*a*c)*1.0;
x1=(-b+pow(s,0.5))/(2.0*a)*1.0;
x2=(-b-pow(s,0.5))/(2.0*a)*1.0;
if(s>0&&a!=0){
if(x1>x2){
printf("%0.2f\n%0.2f",x1,x2);
}else{
printf("%0.2f\n%0.2f",x2,x1);}}
else if(a==0&&b==0&&c==0){
printf("Zero Equation");}
else if(a==0&&b==0&&c!=0){
printf("Not An Equation");}
else if(s==0){
printf("%0.2f",-b/(2.0*a)*1.0);}
else if(s<0&&a!=0){
if(-b/(2*a)!=0){
printf("%0.2f+%0.2fi\n",-b/(2*a)*1.0,1.0*sqrt(-s)/(2.0*a));
printf("%0.2f-%0.2fi\n",-b/(2*a)*1.0,1.0*(sqrt(-s))/(2.0*a));}
else{printf("0.00+%.2fi\n",1.0*sqrt(-s)/(2.0*a));
printf("0.00-%.2fi\n",1.0*sqrt(-s)/(2.0*a));
}
}else{
printf("%0.2f",(c/b)*(-1.0));}
return 0;
}
16、分类统计字符个数
#include <stdio.h>
#define MAXS 15
void StringCount( char s[] );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */
int main()
{
char s[MAXS];
ReadString(s);
StringCount(s);
return 0;
}
/* Your function will be put here */
void StringCount( char s[] )
{
int let=0,bla=0,dig=0,oth=0;
for(int i=0;s[i]!='\0';i++)//字符串以'\0'结尾
{
if('A'<=s[i]&&s[i]<='Z'||'a'<=s[i]&&s[i]<='z') let++;
else if(s[i]==' '||s[i]=='\n') bla++;
else if('0'<=s[i]&&s[i]<='9') dig++;
else oth++;
}
printf("letter = %d, blank = %d, digit = %d, other = %d",let,bla,dig,oth);
}
17、字符串比较
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
int fun ( char str1[],char str2[] );
int main()
{
char str1[80],str2[80];
scanf("%s",str1);
scanf("%s",str2);
printf("%d",fun(str1,str2));
return 0;
}
/* 请在这里填写答案 */
#include<string.h>
int fun(char str1[], char str2[]) {
int n = 0;
n = strcmp(str1, str2);
if (n == 0)
return 0;
else
for (int i = 0; str1[i] != '\0'; i++) {
if (str1[i] != str2[i]) {
n = str1[i] - str2[i];
return n;
break;
}
}
}