C语言期末复习总结4

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;
			}
		}
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值