部分错题记录

人走茶凉 提交于 2020-01-19 01:41:06

1.下面不能正确进行字符串赋值操作的是( )。
A: char s[6]={“ABCDE”};
B: char s[5]={‘A’,'B’,'C’,'D’,'E’};
C: char *s;s=”ABCDE”;
D: char *s; scanf(“%s”,s);
标准答案:B 您的答案:C
B选项应该为char s[6]={‘A’,'B’,'C’,‘D’,‘E’,’\0’};

2.在c语言中,不允许有常量的数据类型是( ) (2分)

A.整型
B.结构型
C.字符型
D.字符串
标准答案:B 您的答案:D
结构是用户自己建立的数据类型,没有常量

3.在C语言中,数字029是一个()
A: 八进制数
B: 十六进制数
C: 十进制数
D: 非法数
标准答案:D 您的答案:C
八进制数以0开头,八进制数不能大于7
十六进制以ox开头,十六进制的数不能大于15,且10 ~ 15的数用A~ F或a~f来表示

4.以下程序有错,错误原因是___________。

main()
 {int *p,i;
char *q,ch;
p=&i;   q=&ch;   *p=40;   p=q;}
 

A:p和q的类型不一致,不能执行p=q;语句
B: p中存放的是地址值,因此不能执行p=40;语句
C: q没有指向具体的存储单元,所以*q没有实际意义
D: q虽然指向了具体的存储单元,但该单元中没有确定的值,所以不能执行p=q; 语句
标准答案:A 您的答案:C
p和q指向的对象不同,因此p和q类型也不同

5.已有函数max(a,b),为了使函数指针变量p指向函数max,则下面选项中赋值方法正确的是( )。
A: p=max
B: *p=max
C: p=max(a, b)
D: *p=max(a, b )
标准答案:A 您的答案:D
指针指向函数

6.在下列叙述中,错误的一条是( )。
A: 全局变量存放在静态存储区中,在程序开始执行时就给全 局变量分配存储区,程序执行完才释放
B: 在有参函数中,形参在整个程序一开始执行时便分配内存单元
C: 用数组名作函数实参和形参时,应在主调用函数和被调用函数中分别定义数组
D: 在同一个源文件中,全局变量与局部变量同名时,在局部变量的作用范围内,全局变量不起作用
标准答案:B 您的答案:D
形参变量只有在被调用时才分配内存单元

7.若int (*p)[5];,其中,p是_______。
A: 5个指向整型变量的指针
B: 指向5个整型变量的函数指针
C: 一个指向具有5个整型元素的一维数组的指针
D: 具有5个指针元素的一维指针数组,每个元素都只能指向整型量
标准答案:C 您的答案:B
p是数组指针

8.设有以下语句:
struct st{int n; struct st *next;};
static struct st a[3]={5, &a[1], 7, &a[2], 9, ‘\0’},*p;
p=&a[0];
则表达式( )的值是6。
A: p++ ->n 
B: p->n++
C: (*p).n++
D: ++p->n
标准答案:D 您的答案:C
p++是先取值,再自增。++p先自增,再取值。

9.main函数的正确说明形式是___________。
A: main(int argc,char *argv)
B: main(int abc,char **abv)
C: main(int argc,char argv)
D: main(int c,char v[ ])
标准答案:B 您的答案:C

10.已知int a,*p=&a,*q=&a; a=10; *q=*p+1; *p=( )
A: 10
B: 不确定
C: 11
D: .-21456748
标准答案:C 您的答案:B
p和q指向同一个对象

11.若有赋值语句p=(double*)malloc(10*sizeof(double));,则正确的定义语句是( )
A: double *p
B: float **p
C: double **p
D: float *p
标准答案:A 您的答案:C
动态建立一片内存,并将内存指针赋予指向double数据的指针

12.已定义以下函数: int fun(int *p){return *p;} fun函数返回值是 ( )
A: 一个整数
B: 形参p的地址值
C: 形参p中存放的值
D: 不确定的值
标准答案:C 您的答案:A
*p为p中存放的值

13.在VC编辑环境下设有变量说明: int a=0,b=0;则表达式sizeof(a+b)的值是( )
A: 1
B: 2
C: 4
D: 8
标准答案:C,您的答案:D
a+b指的是相加,结果还是int型,表达式sizeof(a+b)指的是变量类型的大小。

14.若有以下定义,则数值不为3的表达式是__________。
int x[10]={0,1,2,3,4,5,6,7,8,9},p1;
A: x[3]
B: p1=x+3,p1++
C: p1=x+2,
(p1++)
D: p1=x+2,
++p1
标准答案:C 您的答案:B
B选项先执行p1=x+3,也就是指向x[3],因为p1定义成指针.*p1++ 这时候先取值再++,表达式仍然是3

  1. 定义以下结构体数组:
struct  date
  {
    int year;
    int  month;
  };
 struct  s
  {
   struct date birth;
   char  name[20];
  }x[4]={{2008,8,"hangzhou"},{2009,3,"Tianjin"}};

语句printf("%c,%d",x[1].name[1],x[1].birth.year);的输出结果为( )。
A.a,2008
B.hangzhou,2008
C.i,2009
D.Tianjin,2009
正确答案:C
%c输出单个字符
数组下标从0开始

  1. 关于自定义函数的叙述,正确的是()
    A.自定义函数必须有返回值
    B.自定义函数体必须有形式参数
    C.自定义函数可以没有返回值
    D.return后面不可以用表达式
    正确答案:C

17.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()

A.函数的实参和其对应形参共占同一个存储单元
B.形参只是形式上的存在,不占用具体的存储单元
C.同名的实参和形参占同一个存储单元
D.函数的形参和实参分别占用不同的存储单元
正确答案:D

18.字符指针是指向字符串的指针,可以用字符串常量给字符指针赋值。标准答案:Y 您的答案:N

19.C语言中,执行表达式(*p)++后p的指向改变了。标准答案:N 您的答案:Y
p的指向不改变

20.设有以下结构体类型说明和变量定义,则变量a在内存中所占的字节数是______。(VC环境中)

struct  stud
{char num[6];
 int s;
 float ave;
}a;

标准答案:16 您的答案:14
(6+2) + 4 + (2+2)

21.int i; for(i=1;i<10;i+=3){ 循环体 };循环体将执行___________次。
标准答案:3
您的答案:9
i+=3,每次增加3

22.下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。

main()
{ int i, j;
 for(i=0;  _______; i++)
   {j=i*10+6;
    if(  ________ )  continue;
    printf("%d", j);
   }
}

标准答案:
i<100
j%3!=0
您的答案:
i<10
j%3

23.下面的程序运行后的结果是:

在这里插入图片描述
答案(填空1):4 3
参考答案:答案(填空1):4334

24.编写完整的程序,从终端输入一个无符号短整数k,输出将k的高4位和低4位交换后的结果。例如,程序执行时:
输入:54321(对应二进制为11010100 00110001);
输出:5181 (对应二进制为00010100 00111101)。

#include <stdio.h>
int main(){   
 /**********Begin**********/    
 int k;    
 int i,j,l,m;    
 scanf("%d",&k);
    i=k/16/16/16%16;    
    m=k/16/16%16;   
    l=k/16%16;  
    j=k%0x10; 
    k=j*0x10*0x10*0x10+m*0x10*0x10+l*0x10+i;    
    printf("%d",k);
        /**********End**********/    
        return 0;
        }

25.程序,从终端输入一个字符,判断该字符是否是十六进制数字字符,如果是,则输出该数字字符对应的整数,否则以十进制形式输出该字符对应的ASCII码。
例:
输入字符:‘a’ //a是十六进制字符;
输出结果: 10 //打印输出对应的十六进制整数10。
输入字符:‘g’ //g不是进制字符;
输出结果: 103 //g对应的ASCII值为103。

char c;
scanf("%c",&c);
if((c>='0' && c<='9') || (c>='a'&&c<='f') || (c>='A'&&c<='F')){if(c>='0' && c<='9')  
{ 
printf("%d",c-'0');if(c>='a' && c<='f')   
printf("%d",c-'a'+10);if(c>='A' && c<='F')   
printf("%d",c-'A'+10);}

else
{
printf("%d",c);
}

用条件语句判断

26.读故事
请编写函数,从文件中读出文章显示到屏幕上。

函数原型

// 读故事
void ReadStory(FILE *f);

说明:参数 f 为文件指针。函数读出 f 所指示文件中的一篇文章,将其输出到屏幕。

裁判程序

#include <stdio.h>
#include <stdlib.h>

// 读故事
void ReadStory(FILE *f);

int main()
{
    FILE *f;
    f = fopen("Story.txt", "r");
    if (!f)
    {
        puts("文件无法打开!");
        exit(1);
    }

    // 读故事
    ReadStory(f);

    if (!fclose(f))
    {
        puts("文件无法关闭!");
        exit(1);
    }
    return 0;
}

/* 你提交的代码将被嵌在这里 */

打开 Windows 的记事本软件,复制下面的内容,保存文件并命名为“Article.txt”。

Story.txt

A Cure for a Headache

One day a man went into a chemist's shop and said, "Have you anything to cure a
headache?"
The chemist took a bottle from a shelf,  held it under the gentleman's nose and
took out the cork.  The smell was so strong that tears came into the man's eyes
and ran down his cheeks.
"What did you do that for?"  he said angrily,  as soon as he could get back his
breath.
"But that medicine has cured your headache, hasn't it?" said the chemist.
"You fool," said the man, "It's my wife that has the headache, not me!"

输入样例

(无)

输出样例

A Cure for a Headache

One day a man went into a chemist's shop and said, "Have you anything to cure a
headache?"
The chemist took a bottle from a shelf,  held it under the gentleman's nose and
took out the cork.  The smell was so strong that tears came into the man's eyes
and ran down his cheeks.
"What did you do that for?"  he said angrily,  as soon as he could get back his
breath.
"But that medicine has cured your headache, hasn't it?" said the chemist.
"You fool," said the man, "It's my wife that has the headache, not me!"

代码

void ReadStory(FILE *f)
{	char ch;
	ch=getc(f);
	while(ch!=EOF){
	printf("%c",ch);
	ch=getc(f);
	}
}

用循环语句将字符输出

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!