错题集

本文是一份编程相关的错题集,涵盖了计算机基础理论和C语言知识点,包括条件运算符、数据类型转换、逻辑判断、字符串处理等。此外,还介绍了Markdown的排版技巧,如居中、居左、居右设置,以及SmartyPants、自定义列表、注脚、KaTeX数学公式、甘特图和流程图的创建方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#瞅瞅的错题集:
##计算机基础理论,代码。
1、若w=1,x=2,y=3,z=4,则条件表达式w<x? w:y<z? y:z的值是( D )
A: 4
B: 3我选的
C: 2
D: 1
解析:因为条件运算符的结合方向是***自右至左***的,所以表达式就可以变为w<x?w:(y<z?y:z),代入数据就为1<2?1:(3<4?3:4),进一步计算括号里的结果变为为1<2?1:3,最后整个条件表达式的结果为1。

2若希望当A的值为奇数时,表达式的值为”真”,A的值为偶数时,表达式的值为”假”,则以下不能满足要求的表达式是( C )。
A: A%2==1 
B: !(A%2==0)
C: !(A%2)
D: A%2我选的
解析:如果A为偶数,则A%2为0,!0为真,题目要求为假,所以c不对。

3、在下面的条件语句中(其中S1和S2标识C语言语句)一个功能上与其他三个语句不等价的是(D )
A: if(a)S1;else S2 我选的
B: if(a==0)S2;else S1
C: if(a!=0)S1;else S2
D: if(a==0)S1;else S2
解析:此题为a=0时,即为假:则执行S2;为真,执行S1。

4、下列表达式中,不满足“当x的值为偶数时值为真,为奇数时值为假”要求的是(B )
A: x%2==0
B: !x%2!=0
C: (x/2*2-x)==0
D: !(x%2)我选的
同2;

5、能正确表示a和b同时为正或同时为负的表达式是( D )。
A: (a>=0||b>=0)&&(a<0||b<0) 
B: (a>=0&&b>=0)&&(a<0&&b<0)我选的
C: (a+b>0)&&(a+b<=0)
D: a*b>0
解析:&&为且;||为或;题目中要求为或(||)。

6、若有条件表达式 (exp)?a++:b–,则以下表达式中能完全等价于表达式(exp)的是( B )。
A: (exp==0)
B: (exp!=0)
C: (exp==1)我选的
D: (exp!=1)
解析:为真才可以进行后续判断。

7、C语言中,为了区别一般的变量,符号常量必须用大写字母表示。
标准答案:N 我的答案:Y
8、C语言中,为了区别一般的变量,符号常量必须用大写字母表示
标准答案:N 我的答案:Y //错了两次!!!

9、如果strcmp(s1,s2)返回的结果为0,表示字符串s1和s2不相同。
标准答案:N 我的答案:Y
解析:strcmp函数 :为比较S1,S2字符串是否相同,若相同,则返回0;
若S1>S2,则返回正数;若S1<S2,则返回负数。

10、定义指针时不可以赋初值。
标准答案:N 我的答案:Y
解析:如int*p={“abcdef”}

指针是变量,它具有的值是某个变量或对象的地址值,它还具有一个地址值,这两个地址值是相等的。
标准答案:N 我的答案:Y
解析:指针所具的值就是他所指变量的地址值。

11、已有int i,j;float x;为将-10赋给i;12赋给j,410.34赋给x;则对应的scanf函数调用语句的数据输入形式__________。
标准答案:scanf("%d%d%f",&i,&j,&x);
我的答案:scanf("%d回车%d回车%.2f",回车i回车,回车j回车,回车k回车);
解析:输入scanf函数中,一定是使用地址值。

12、定义:int m=5,n=3;则表达式m/=n+4的值是_______,表达式m=(m=1,n=2,n-m)的值是________,m+=m-=(m=1)*(n=2)的值是________。
标准答案:|我的答案:1回车 1回车 2
0
1
-2
解析:m/=n+4所得数据为int型,则m/=n+4运算得出为零点几,只取小数点前的数。所以其值为零。

13、定义:double x=3.5,y=3.2;则表达式(int)x*0.5的值是_______,表达式y+=x++的值是_______。
标准答案: 我的答案:1回车6.7
1.5
6.7
解析:(数据类型)变量为强转为括号内的类型。

14、一般地,调用标准字符或格式输入输出库函数时,文件开头应有以下预编译命令:#include “________”
标准答案:stdio.h 我的答案:<stdio.h>
解析:<stdio.h>即 “stdio.h”。

15、 设x,y,z均为int型变量;写出描述“x,y和z中有两个为负数”的C语言表达式:_______________。
标准答案:(x<0&&y<0&&z>0)||(x<0&&y>0&&z<0)||(x>0&&y<0&&z<0)
我的答案:(x<0+y<0+z<0)==2
解析:细心,很简单的题,别想太多!

16、“n是大于整数m的奇数”的C语言表达式是___________。
标准答案:(n>m)&&(n%2==1)
我的答案:n%2==0&&n<m
解析:满足n为基数,且n大于m。

17、设x,i,j,k都是int变量,表达式**x=(i=4,j=16,k=32)**计算后,x的值为________。
标准答案:32 我的答案:1
解析:这种类型的语句一般取最后一个值
18、用下面的scanf函数输入数据,使a=3,b=7;
main()
{
int a,b;
scanf(“a=%d,b=%d”,&a,&b);
}则应在键盘上如何输入:_______________
标准答案:a=3,b=7 我的答案:a,b
解析:注意输入格式。

19、“y能被4整除但不能被100整除,或y能被400整除”的C语言表达式是__________。
标准答案:(y%4==0&&y%100!=0)||(y%400==0)
我的答案:y/4=0&&y/100=1||y/400=0
20、若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},p=a;则( )不是对a数组元素的正确引用(其中0≤i<10)。(B)*
A: p[i] 我选的
B: ((a+i))
C: a[p-a]
D: *(&a[i])
解析:B为二维数组。??
21、有如下语句int a=10,b=20,*p1,*p2;p1=&a;p2=&b;如图1所示,若要实现图2所示的存储
在这里插入图片描述
结构,可选用的赋值语句是( B )。
A: *p1=*p2; B: p1=p2; C: p1=*p2; 我选的 。D: *p1=p2;
解析:P1为地址值,*p1为值,无法进行赋值运算。排除C,D。A,图为两个指针指向一个数,而A为值之间的赋值,无法满足题目要求。

22、下面程序段中,for循环的执行次数是( C )。
char *s=”\ta\018bc”;
for( ;s!=’\0’; s++) printf(“”);
A: 9我选的。B: 5:C: 6:D: 7
解析:等于字符串s的长度。\t,一个字符;\018——ASCII码,算1个字符。a,b,c三个字符,加上‘\0’,一共六个字符。

23、下面判断正确的是_____A_______。
A: char *a=“china”;等价于char *a; a=“china”;
B: char str[10]={“china”};等价于char str[10];str[]={“china”};
C: char *s=”china”;等价于char s; s=”china”;我选的
D: char c[4]=”abc”,d[4]=”abc”;等价于char c[4]=d[4]=”abc”;
解析:char
p;a=“china”;(赋值形式不能为
a=“china”;)

26、若有定义:int p[4];则标识符p_____B______。
A: 是一个指向整型变量的指针
B: 是一个指针数组名
C: 是一个指针,它指向一个含有四个整型元素的一维数组。我选的
D: 定义不合法
解析:形如
P[4]为指针数组。

27、若int (*p)[5];,其中,p是___C____。
A: 5个指向整型变量的指针
B: 指向5个整型变量的函数指针
C: 一个指向具有5个整型元素的一维数组的指针
D: 具有5个指针元素的一维指针数组,每个元素都只能指向整型量。我选的
解析:每个元素都是一个指针变量。

28、下面程序段的运行结果是____A______。
char *s=“abcde”;
s+=2; printf(“%s”,s);
A: cde
B: 字符’c’。我选的
C: 字符’c’的地址
D: 无确定的输出结果
解析:输出为%S,意味输出字符串。

29、语句int(*prt)();的含义是_____C_______。
A: prt是一个指向一维数组的指针变量
B: prt是指向int型数据的指针变量。我选的
C: prt是指向函数的指针,该函数返回一个int型数据
D: prt是一个函数名,该函数的返回值是指向int型数据的指针
解析:注意此种题!!!int(*prt)(),指针可指向函数。

30、下面不能正确进行字符串赋值操作的是( B )。
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);
解析:字符串自带一个字符‘\0’,所以B中不能为s[5],应为s[6]。

31、已有定义int k=2,***ptrl,*ptr2;**且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是( B)
A: k=*ptr1+*ptr2
B: ptr2=k
C: ptr1=ptr2。我选的
D: k=ptr1(*ptr2)
解析:指针不加值为地址不能和表值的变量字母进行赋值运算。

32、若有说明:charlanguage[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};
则表达式
language[1]>*language[3]比较的是________C______。
A: 字符F和字符P
B: 字符串BASIC和字符串JAVA我选的
C: 字符B和字符J
D: 字符串FORTRAN和字符串PASCAL
解析:*language[]为一个二维数组,*language[1],*language[3]即language[0][1],language[0][3]。

33、若有说明:int*p1,*p2,m=5,n;以下程序段正确的是(D )
A: p1=&m;p2=&p1
B: p1=&n;scanf("%d",*p1)我选的
C: scanf("%d",n); *p1=n
D: p1=&n; *p1=m
解析:scanf函数中变量为地址值,而对于指针(int *p)而言,*p为指针所指值,p才为地址值。

34、函数max(a,b),为了使函数指针变量p指向函数max,则下面选项中赋值方法正确的是( A)。
A: p=max
B: *p=max
C: p=max(a, b)
D: *p=max(a, b )我选的
解析:*P为调用max函数后产生的一个数。

35、若有以下定义,且0≤i<4,则不正确的赋值语句是__B_____.
int b[4][6], *p, *q[4];
A: q[i] = b[i];
B: p = b;
C: p = b[i]
D: q[i] = &b[0][0];我选的
解析:*p只能指向一个一维数组,而b为一个二维数组名。

36、语句int *pa[5];下列描述中正确的是___D____.
A: pa是一个指向数组的指针,所指向的数组是5个int型元素
B: pa是一个指向某数组中第5个元素的指针,该元素是int型变量
C: pa [5]表示某个元素的第5个元素的值
D: pa是一个具有5个元素的指针数组,每个元素是一个int型指针。我选的

37、下面判断正确的是______A______。
A: char *a=“china”;等价于char *a; a=“china”;
B: char str[10]={“china”};等价于char str[10];str[]={“china”};
C: char *s=”china”;等价于char *s; *s=”china”;我选的
D: char c[4]=”abc”,d[4]=”abc”;等价于char c[4]=d[4]=”abc”;

38、若int (*p)[5];,其中,p是____C___。
A: 5个指向整型变量的指针
B: 指向5个整型变量的函数指针。我选的
C: 一个指向具有5个整型元素的一维数组的指针
D: 具有5个指针元素的一维指针数组,每个元素都只能指向整型量
解析:这是一个二维数组,而P表示 一个指向具有5个整型元素的一维数组的指针,( 是一个指针,它指向一个含有四个整型元素的一维数组)。

39、 已有定义int k=2,*ptrl,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是(B )
A: k=*ptr1+*ptr2
B: ptr2=k
C: ptr1=ptr2 我选的
D: k=*ptr1(*ptr2)
解析:多次错在这个地方。

40、若有语句:intp,a=4;和p=&a;下面均代表地址的一组选项是(D )
A: a,p,
&a
B: &*a,&a,*p
C: *&p,*p,&a 我选的
D: &a,p,&*p
解析:P为地址,*P为值,不是地址。

41、若有说明:charlanguage[]={“FORTRAN”,”BASIC”,”PASCAL”,”JAVA”,”C”};
则表达式
language[1]>*language[3]比较的是_______C_______。
A: 字符F和字符P
B: 字符串BASIC和字符串JAVA 我选的
C: 字符B和字符J
D: 字符串FORTRAN和字符串PASCAL
解析:此题为字符型,在比较首字符。

42、若有说明语句char a[]=“It is mine”; char *p=" It is mine";
则以下不正确的叙述是_____D______。
A: a+1表示的是字符t的地址
B: p指向另外的字符串时,字符串的长度不受限制 我选的
C: p变量中存放的地址值可以改变
D: a中只能存放10个字符

43、若有说明:int*p1,*p2,m=5,n;以下程序段正确的是( D)
A: p1=&m;p2=&p1
B: p1=&n;scanf("%d",*p1) 我选的
C: scanf("%d",n); *p1=n
D: p1=&n; *p1=m

44、若有以下定义,则数值不为3的表达式是_____C_____。
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

45、 下面程序段的运行结果是_____A_____。
char *s=“abcde”;
s+=2; printf(“%s”,s);
A: cde
B: 字符’c’
C: 字符’c’的地址 我选的
D: 无确定的输出结果

46、p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不能正确执行的赋值语句是( B)
A: c=*p1+*p2
B: p2=c
C: p1=p2 我选的 //这题做过多次
D: c=p1(*p2)

47、下面不能正确进行字符串赋值操作的是( B )。
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); 我选的

48、int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12};int (*prt)[3]=a,*p=a[0];
则下列能够正确表达数组元素a[1][2]的表达式是( D )。
A: *((*prt+1))
B: ((p+5))
C: (*prt+1)+2 我选的
D: ((a+1)+2)

49、以下正确的定义语句和赋值语句是____B_____。
A: int b[3][5],(*p)[3],(*q)[5];p=b;q=b;
B: float b[3][5],*p[3];p[0]=b[0];p[2]=*b+4;
C: double b[3][5],s[5][3],*q;q=b;s=q;
D: int b[10],*q;char *s;q=b;s=b;我选的

50、若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正确说明并赋值)元素的非法引用为______C________。
int b[2][3]={0}, (*p)[3];
p=b;
A: ((p+i)+j)
B: *(p[i]+j)
C: (p+i)+j
D: (
(p+i))[j] 我选的

51、选择排序

//选择排序   
#include<stdio.h>//在这里插入代码片
int main()
{
   int i,j,k,t; 
   int a[10]={9,7,8,5,4,0,3,6,2,1};
   printf("输入无序数组\n");
   for(i=0;i<10;i++)
   {
      printf("%d ",a[i]);
   }
   printf("\n");
   for(i=0;i<9;i++)
   {
      k=i;//进行标记,记住最小的数,去和其他数逐一比较
      for(j=i+1;j<10;j++)
       {
         if(a[k]>a[j])
	   {
	     k=j;
	   }
        if(k!=i)//进行交换后,a[0]一定为最小
	       {
		   t=a[k];
		   a[k]=a[i];
		   a[i]=t;
	       }
       }
   }
    printf("输出有序数组\n");
    for(i=0;i<10;i++)
	 {
	   printf("%d ",a[i]);
         }
          return 0;
}

输出结果:

输入无序数组
9 7 8 5 4 0 3 6 2 1
输出有序数组
0 1 2 3 4 6 5 8 7 9 Press any key to continue

52、冒泡排序

#include <stdio.h>//冒泡排序1
#define N 6
void sort(int arr[], int n);
void sort(int arr[], int n)
{
 int i,j,t;
 for(j=0;j<n-1;j++)
  for(i=0;i<n-1-j;i++)
   if(arr[i]>arr[i+1])
   {
    t=arr[i];
    arr[i]=arr[i+1];
    arr[i+1]=t;
   }
   
}
int main()
{
 int arr[N];
 int i;
 for(i=0;i<N;i++)
  scanf("%d",&arr[i]);
 sort(arr,N); 
 for (i = 0; i < N; i++)
 {
  printf("%d ", arr[i]);
 }
 return 0;
}
#include <stdio.h>//冒泡排序2,从小到大排序
int main()
{
    int i,j,t,a[10];    //定义变量及数组为基本整型
    printf("请输入10个数:\n");
    for(i=0;i<10;i++)
        scanf("%d",&a[i]);    //从键盘中输入要排序的10个数字
    for(i=0;i<9;i++)
        for (j=i+1;j<10;j++)
            if(a[i]>a[j])    //如果前一个数比后一个数大,则利用中间变量t实现两值互换
            {
                t=a[i];
                a[i]=a[j];
                a[j]=t;
            }
    printf("排序后的顺序是:\n");
    for(i=0;i<10;i++)
        printf("%5d", a[i]);    //输出排序后的数组
    printf("\n");
    return 0;
}

输出结果1:

3 2 4 5 6 7
2 3 4 5 6 7 Press any key to continue

输出结果2:

请输入10个数:
3 2 1 23 45 67 78 90 65 10
排序后的顺序是:
    1    2    3   10   23   45   65   67   78   90
Press any key to continue

53、设有以下语句:struct st{int n; struct st *next;};
static struct st a[3]={5, &a[1], 7, &a[2], 9, ‘\0’},*p;
p=&a[0];则表达式( D )的值是6。
A: p++ ->n 我选的 
B: p->n++
C: (*p).n++
D: ++p->n
54、如果二进制文件a.dat已经存在,现在要求写入全新数据,应以(B)方式打开。
A、“w”
B、“wb”
C、“w+”
D、“wb+”
55、定义FILE *fp; 则文件指针fp 指向的是(B)。文件在磁盘上的读写位置文件在缓冲区上的读写位置整个磁盘文件文件类型结构体
A、文件在磁盘上的读写位置
B、文件在缓冲区上的读写位置
C、整个磁盘文件
D、文件类型结构体

-表格
一个简单的表格是这么创建的:

项目Value
电脑$1600
手机$12
导管$1

设定内容居中、居左、居右

使用:---------:居中
使用:----------居左
使用----------:居右

第一列第二列第三列
第一列文本居中第二列文本居右第三列文本居左

SmartyPants

SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:

TYPEASCIIHTML
Single backticks'Isn't this fun?'‘Isn’t this fun?’
Quotes"Isn't this fun?"“Isn’t this fun?”
Dashes-- is en-dash, --- is em-dash– is en-dash, — is em-dash

创建一个自定义列表

Markdown
Text-to- HTML conversion tool
Authors
John
Luke

如何创建一个注脚

一个具有注脚的文本。1

注释也是必不可少的

Markdown将文本转换为 HTML

KaTeX数学公式

您可以使用渲染LaTeX数学表达式 KaTeX:

Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n1)!nN 是通过欧拉积分

Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t   . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=0tz1etdt.

你可以找到更多关于的信息 LaTeX 数学表达式[here][1].

新的甘特图功能,丰富你的文章

mermaid
gantt
dateFormat YYYY-MM-DD
title Adding GANTT diagram functionality to mermaid
section 现有任务
已完成 :done, des1, 2014-01-06,2014-01-08
进行中 :active, des2, 2014-01-09, 3d
计划一 : des3, after des2, 5d
计划二 : des4, after des3, 5d

  • 关于 甘特图 语法,参考 [这儿][2],

UML 图表

可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:

mermaid
sequenceDiagram
张三 ->> 李四: 你好!李四, 最近怎么样?
李四–>>王五: 你最近怎么样,王五?
李四–x 张三: 我很好,谢谢!
李四-x 王五: 我很好,谢谢!
Note right of 王五: 李四想了很长时间, 文字太长了
不适合放在一行.

李四–>>张三: 打量着王五…
张三->>王五: 很好… 王五, 你怎么样?

这将产生一个流程图。:

mermaid
graph LR
A[长方形] – 链接 -->> B((圆))
A -->> C(圆角长方形)
B -->> D{菱形}
C -->> D

  • 关于 Mermaid 语法,参考 [这儿][3],

FLowchart流程图

我们依旧会支持flowchart的流程图:

Created with Raphaël 2.2.0 开始 我的操作 确认? 结束 yes

  1. 注脚的解释 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值