PTA 2019-1-11

一、判断题

1.在所有的关系运算符(>=、>、= =、!=、<=、<)中,优先级最低的运算符是“= =、!=”。

【思想】:
运算符优先级:

在这里插入图片描述
其中 一元运算符中+ -为正或负;

^(异或)
1.可以交换两个数的值。
2. 两个值不相同,则异或结果为真。反之,为假。
(0异或0=0,1异或0=1,0异或1=1,1异或1=0)

||(或)
(0或0=0,1或0=1,0或1=1,1或1=0)

|与|| &与&&的区别:结果无区别 但双的话计算步骤少;

2.八进制和十六进制如何表示
【思想】8进制前面有0 十六进制前面有0X
在转义字符中 8进制\ 十六进制\x

3.switch语句中default时必须的吗
【思想】否

二、选择题
1.以下正确的字符常量是______。
A.’\412’
B.255
C.’\08’
D.’'

自己疑问:什么是正确的字符常量

【思想】
字符常量是括在单引号中,例如,‘x’ 可以存储在 char 类型的简单变量中。
注意:
1.字符常量只能用单引号,双引号则代表是字符串
2.单引号内只能包含一个字符,多个字符时,出最后一个外前面会自动失效
3.字符常量的值,就是它在ASCII编码表中的值。是个从0-255之间的整数。因此字符常量可以作为整型数据来进行运算。
4.单引号括起来的字符包括英文字母大、小写字符各26个、数字字符10个,以及空白符(空格符、制表符、换行符),标点和特殊符号(键盘上的共30个)

如 ‘Y’+32的值为121,‘7’+‘6’的值为109。

【补充】在 C 程序中,9ab是非法的用户标识符
自己:F
有效用户标识符:不能以数字开头!

2.对下列代码的描述:

#include "stdio.h"
int main(){
    long num=1;
    while(num++ > 0) for(long i=num; i >=0; i--)printf("i :=\n \t %ld \n" , i);
    return 0;
}
正确的是:

A.程序有编译错误,不能执行
B.循环条件永为真,循环无限次,程序根本停不下来,打印输出无限行
C.循环有限次,程序正常结束,打印输出有限行
D.程序运行过程必定会出错(崩溃),结果打印输出有限行

自己:B
正确:D

【思想】

1.你在死循环中包含了break语句或return,比如if满足某个条件就执行break或者return。
2.你在循环中或调用的函数中,执行了exit函数,直接结束了整个程序。
3.你的代码有错,比如使用野指针,越界访问数组等不可控行为。
4.内存不足,程序终止,比如循环malloc申请内存,但没有释放,又或者调用递归函数造成内存溢出。**==

3.下列语句中, 可输出“☼”字符(ASCII 码为 15)。

A) putchar(‘☼’);
B) putchar(15);
C) putchar(’\17’);
D) printf("%c", ‘\Xf’);

自己:BCD
正确:BC
【错因】:‘\x’才为16进制转义符 '\X’不是

4.下列程序运行后的输出结果是

int a=10, b=20,c;
c=(a%b<1)(a/b>1);
printf("%d %d %d\n", a, b, c);

【思想】:小的数余大的数,结果为小的数!

三、填空题

1.运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为

#include <stdio.h>
int main(void)
{
    int c1=0,c2=0;
    char ch;                      

    while((ch=getchar()) !='#')
    switch(ch)
    {    case 'a':
        case 'h':c1++;
        default:c2++;
    }
    printf("c1=%d,c2=%d\n",c1,c2);

    return 0;
}
正确:c1=2 c2=5

【思想】
1.switch并不是按顺序来的 哪个符合就执行哪个
2.getchar()函数只能接收一个字符,其函数值就是从输入设备获取到的字符。

【难点】
1.这题为什么可以输入一大串还读出一大串,输入又不一定全读了,这题输入多个 由于是个循环所以一个一个判断
2.getchar可以读取哪些字符:除\n其余全部可以

2.在计算机系统中,符号整数采用 ___
来表示和存储。

正确:补码

补充:char用什么储存:ASCII码 所以字符型与数值型存储不一样

**【难点】**什么是某某码
计算机系统存储有符号整数

下列语句中,可输出“☼”字符(ASCII 码为 15)

A) putchar('☼');
B) putchar(15);
C) putchar('\17');
D) printf("%c", '\Xf');

自己难点:
1.char定义后 值为 什么?
ASCII码 且定义时要用数字来定义,若不用数字那就是变量

2.为什么int 和char 分别定义同一个值后putchar()
输出一样
因为定义的都是相同的数字,故输出一样;

3.putchar与printf
**如printf("%c",‘A’) 相当于 putchar(‘A’) **
注意,无论哪个要输出一个字符的时候 用的是对应的ASCII码

putchar(c )中c可以是字符常量 整形常量 字符变量或整形变量(其值在字符的ASCII代码范围内)

putchar(c )的扩展

 {1.putchar输出换行(‘\n’)
  2.putchar输出转义字符(‘\101’)=A(八进制)八进制只用斜杠就可以了!
  3.输出一个单撇号 (‘\'')}

4.分析实际问题

#include <stdio.h>

int main ()
{
int a;
scanf("%c",&a);
putchar(a); 
printf("\n");
printf("%c\n",a);
printf("%d",a);
}

此题自己【难点】:
int a后 scanf的是%c 那么在内存中储存的是什么?

经过试验后 得出结论
储存为%c 即ASCII码。(intchar相同的结果)

自己思考:char与int是整型 但char只能储存ASCII中的数字 int的范围大得多。

佐证:整型和字符型是互通的,他们是在内存中存储的本质是相同的,只是存储的范围不同而已,整型可以是2字节,4字节,8字节,而字符型只占1字节(8位)。

换做是float 则只有最后一步出结果 输字母出0

  • 补充
字符'0'char c = '0';   它的ASCII码实际上是48。内存中存放表示:00110000


字符'\0' : ASCII码为0,表示一个字符串结束的标志。这是转义字符。


整数0 :ASCII码为0,字符表示为空字符,NULL;数值表示为0;内存中表示为:00000000

四、程序填空题

5-1
语句填空:下列 for循环语句将输出:
0 1 2 0 1 2 0 1 2

 for( i=1; i<=9; i++ ) printf("%2d",_   )

自己 :无思路

正确:(i-1)%3

【思想】
1%3表示将1除以3,结果为0,余数为1,所以1%3等于1.

5-2
用数组来求fibonacci数列问题,打印前20项数列,每行打印4个数。

#include<stdio.h>
int main()
{
  int i;
  int f[20]={1,1};
  for (i=2;i<20;i++)
    f[i]=___;
  for ( ___ ;i<20;i++)
    {if( ___)printf("\n");
      printf("%d ",f[i]);
     }
      return 0;
}
前提:fibonacci数列特点:从第三项起
每一项都是前两项的和

正确

   1.f[i-1]+f[i-2]
   2.i=0
   3.i%4==0
  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值