PTA3

1.执行语句putchar('S');后,在屏幕上显示的输出结果是'S'屏幕显示的输出结果应该是 S ,没有单引号。F

2.为了检查以下else-if语句的三个分支是否正确,至少需要设计63组测试用例,即ch的取值至少有63组(52个大小写英文字母、10个数字字符、其他字符)。T

if((ch >= 'a' && ch <= 'z' ) || ( ch >= 'A' && ch <= 'Z'))
    letter ++;
else if(ch >= '0' && ch <= '9')
    digit ++; 
else                    
    other ++;

3.设变量已正确定义,以下是合法的switch语句.   F  case中的变量值只能是整数常量值,不能有多余的符号

switch(choice){         
    case choice == 1: price = 3.0; break; 
    case choice == 2: price = 2.5; break;
    case choice == 3: price = 4.0; break;
    case choice == 4: price = 3.5; break;
    default: price = 0.0; break;
}

 4.对于如下switch语句(不使用break)的一般形式,其执行流程是:首先求解表达式,如果表达式的值与某个常量表达式的值相等,则执行该常量表达式后的所有语句段,如果表达式的值与任何一个常量表达式的值都不相等,则执行 default 后的所有语句段。T

switch (表达式) {
    case 常量表达式1: 语句段1; 
    case 常量表达式2: 语句段2; 
      …
    case 常量表达式n: 语句段n; 
    default:语句段n+1; 
}

1.下列运算符中,优先级最低的是(B )。A=D>C>B

A.*       B.=       C.==       D.%

2.设变量已正确定义,为了检查以下else-if语句的分支是否正确,至少需要设计( B)组测试用例。+   ,-  ,* , /  ,value2 = 0,还有一个随便的东西

if(op == '+'){
    printf("=%.2f\n", value1 + value2);
}else if(op == '-'){
    printf("=%.2f\n", value1 - value2);
}else if(op == '*'){
    printf("=%.2f\n", value1 * value2);
}else if(op == '/'){
    if(value2 != 0){
        printf("=%.2f\n", value1 / value2);
    }else{
     printf("Divisor can not be 0!\n");
    }
}else{
   printf("Unknown operator!\n");
}

A.7       B.6       C.5       D.4

3. 有一函数

程序段中错误的是(C

 A.

if(x > 0) y = 1;
else if(x == 0) y = 0;
else y = -1;

B.

y = 0;
if(x > 0) y = 1;
else if(x < 0) y = -1;

C.

y = 0;
if(x >= 0);
if(x > 0) y = 1;
else y = -1;     输入0出来的是-1

D.

if(x >= 0)
if(x > 0) y = 1;
else y = 0;
else y = -1;


1.C语言中,以下( ABCD)是法合的字符常量。字符型常量用一对单括号以及所括起的字符表示

A.'A'       B.'z'       C.'0'       D.'$'       E."a"   'a'

 2.对于以下两个程序段,下列叙述正确的是( ACF)。

A.在程序段1和程序段2中,语句y = x + 1;的执行条件皆为满足x<1。

B.在程序段1和程序段2中,语句y = x + 1;的执行条件皆为满足x<2。

C.在程序段1中,语句y = x + 2;的执行条件是满足x>=2。

D.在程序段1中,语句y = x + 2;的执行条件是满足x>=1且x<2。

E.在程序段2中,语句y = x + 2;的执行条件是满足x>=2。

F.在程序段2中,语句y = x + 2;的执行条件是满足x>=1且x<2。

/ * 程序段1 */
if (x < 2){
      if (x < 1){
          y = x + 1;
      }
}else{
       y = x + 2;
}
/ * 程序段2 */
if (x < 2){
       if (x < 1){
           y = x + 1;
       }else{
           y = x + 2;
       }
}

3.设变量已正确定义,以下(ACD)是合法的switch语句。

A.

switch(op){
       default: printf("Error\n"); break;
}

B.

switch(op){
       case '*': printf("%d\n", value1 * value2); break;
       case '+': printf("%d\n", value1 + value2); break;
       case '-': printf("%d\n", value1 - value2); break;
       case '*': printf("%d\n", value1 * value2); break;
       default: printf("Error\n"); break;
}

C.switch('/')  √

switch('/'){
       case '*': printf("%d\n", value1 * value2); break;
       case '-': printf("%d\n", value1 - value2); break;
       case '+': printf("%d\n", value1 + value2); break;
       default: printf("Error\n"); break;
}

D.

switch(op+1){
       default: printf("Error\n"); break;
       case '*': printf("%d\n", value1 * value2); break;
       case '+': printf("%d\n", value1 + value2); break;
}

E.

switch(op){
       case op == '+': printf("%d\n", value1 + value2); break;
       default: printf("Error\n"); break;
}

 4.设变量已正确定义,以下(BCD)是合法的switch语句。

A.

switch(choice){
      case 1: price = 3.0; break;
      case 2: price = 2.5; break;
      case 3: price = 4.0; break;
      case 4: price = 3.5; break;
      case 1: price = 3.0; break;
      default: price = 0.0; break;
}

B.

switch(choice){
      case 1: price = 3.0; break;
      case 2+2: price = 3.5; break;
}

C.switch(9) √

switch(9){
      case 3: price = 4.0; break;
      case 2: price = 2.5; break;
}

D.

switch(choice* choice+1){
      default: price = 0.0; break;
      case 2: price = 2.5; break;
}

5.判断ch是数字字符的C语言表达式是(BD ) 。

A.

'0' <= ch <= '9'

B.

ch >= '0' && ch <= '9'

C.ch <= '9'

ch >= '1' && ch <= '10'

D.

! (ch < '0' || ch > '9')

6.设变量已正确定义,以下程序段( AD) 的功能是交换变量xy的值。

A.

temp = x; x = y; y =temp;

B.

 x = y; y = x;

C.

y = x; x = y;

D.

x = x + y; y = x - y; x = x – y;


1.写出执行以下程序段后变量的值。

int i, s = 0; 
for(i = 1; i < 10; i = i + 2){ 
   s = s + i;
}

i的值是11s的值是25

2.写出执行以下程序段后变量的值。

char op;
int value1, value2;
scanf("%d%c%d", &value1, &op, &value2);
switch(op){
   case '+': printf("%d", value1 + value2); 
   default: printf("Error"); 
   case '-': printf("%d", value1 - value2); 
}

输入11+1,输出12Error10

输入14-5,输出9;

输入10$100,输出Error-9。

3.写出执行以下程序段后变量的值。

char ch;
int digit, i, minus, other; 
digit = minus = other = 0;
for(i = 1; i <= 5; i++){
    ch = getchar(); 
    switch (ch){
        case '-': 
        minus++; break; 
        case '0' : case '1' : case '2' : case '3' : case '4' :
        case '5' : case '6' : case '7' : case '8' : case '9' : 
        digit ++;break;
        default: 
        other ++; break; 
    }   
}

输入R-e-d,digit的值是0 ,minus的值是 2,other的值是3.

输入1+4-5,digit的值是 3,minus的值是1,other的值是1.

输入16-or,digit的值是2,minus的值是1,other的值是2.

4.写出执行以下程序段后变量的值。

int x, y;
scanf("%d", &x);
if (x > 0){ 
    y = 1;
}else if (x = 0){
    y = 0;
}else{
   y = -1;
}    

输入10x的值是10.

若输入-10x的值是0.

5.写出以下程序段的运行结果。

if(op == '+'){
    printf("%d", value1 + value2);
}
if(op == '-'){ 
    printf("%d", value1 - value2);
}else{
    printf("Error");
}

输入8-5,则输出3

输入3+4,则输出7Error


1.为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−10.5。请编写程序实现水费的计算,要求定义和调用函数fun(x)计算水费,其中x的类型是double,函数类型是double。

#include <stdio.h>

double fun(double x);

int main()
{
    double x, y;

     scanf ("%lf", &x);

y=fun(x);

   printf ("f(%.2f) = %.2f\n", x, y);

    return 0;
}

double fun(double x)

{
    double result;

 
    if (x <= 15){ 
        result = 4 * x / 3;
    }else{
        result = 2.5 * x - 10.5; 
    } 

return result;

2.假设变量已正确定义并赋值,写出满足下列条件的C表达式。

① 与数学式

对应的C表达式:sqrt(s*(s-a)*(s-b)*(s-c))

② 取number的个位数字:number%10

③ 取number的十位数字:number/10%10 。

④ 取number的百位数字:number/100%10

⑤ number是奇数:number%2!=0

⑥ number是5的倍数:number%5==0

 3.输入一个正整数n,再输入n个字符,将这些字符输出,输出时在字符之间加一个空格,最后一个字符的后面没有空格。

输入格式:

在第1行输入一个正整数n

在第2行输入n个字符

输出格式:

在一行内输出n个字符,请注意:字符之间有一个空格,最后一个字符的后面没有空格。

输入样例:

5
Happy

输出样例:

H a p p y

# include <stdio.h>

int main()
{    
    char ch;
    int first = 1, k, n; 

    scanf("%d\n", &n);
    for(k = 1; k <= n; k++){

ch=getchar();

       if ( first == 1 ){ 
             putchar(ch);        

frist=0;

        }else{ 

putchar(' ');

                putchar(ch);
        }
    }

    return 0;

4.ch不是小写英文字母。

(ch<'a'||ch>'z')

5.输入15个字符,统计并输出空格或回车、数字字符和其他字符的个数。要求使用switch语句编写。请注意,输入15个字符后,需回车表示输入结束,这最后一个回车表示输入结束,不统计在内。

# include <stdio.h>`

int main()
{
    int blank, digit, i, other; 
    char ch;
   
    blank = digit = other = 0; 
    for(i = 1; i <= 15; i++){ 
        ch = getchar();  
        switch (ch){

case' ':
case'\n';
   blank++;
   break;
case '0' : case '1' : case '2' : case '3' : case '4' :
case '5' : case '6' : case '7' : case '8' : case '9' : 
   digit++;
   break;
default:
   other++;
   break;

        }     
    }
    printf("blank = %d, digit = %d, other = %d\n", blank, digit, other);

    return 0;
}

6.输入年,输出该年每个月的天数。其中1、3、5、7、8、10、12月有31天,4、6、9、11月有30天,2月平年有28天,闰年有29天。判断闰年的条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。

#include <stdio.h>

int main()
{
    int day, month, year;

    scanf("%d", &year);
    for(month = 1; month <= 12; month++){
        switch (month){
        case 2: 

if((year%4==0&&year%100!=0)||year%400==0)

                 day = 29; 
                 }else{ 
                 day=28;
                }

       break;
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
 

               day = 31; break;

case 4:case 6:case 9:case 11:

                day = 30; break;
        }
        printf("%d ", day) ;
    }

    return 0;
}

7.输入一个正整数n,再输入n个整数,输出其中的偶数。。

# include <stdio.h>
int main()
{
    char ch;
    int first, k, n, x; 

    scanf("%d", &n);

fiest=1;

    for(k = 1; k <= n; k++){
        scanf("%d", &x); 

if(x%2==0){

            if ( first == 1 ){ 
                printf("%d", x); 

       first=0;

               }else{ 
                
 

       printf("%d",x);

            }
        }
    }

    return 0;
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值