c/c++从入门到入土(3)

开始时间2023-04-17 19:07:20

结束时间2023-04-17 20:53:40

前言:经过三天的算法训练,大家肯定对后面的编程知识产生浓厚的兴趣,有了前两章的知识铺垫,我们今天来学习一下如何从键盘输入和屏幕输出!以下是自制思维导图参考于苏小红C语言程序设计(第四版):

 作业三 输入输出

【C0067】设有定义:long x = 123456L ; ,则以下能够正确输出变量x值的语句是_______。
A.printf( "x=%d\n" , x ) ;

B.printf( "x=%ld\n" , x ) ;

C.printf( "x=%8dL\n" , x ) ;

D.printf( "x=%LD\n" , x ) ;

 答案:B

体会:printf()的一般格式printf(格式控制字符串);printf(格式控制字符串,输出值参数表);

格式控制字符串是用双引号括起来的字符串,也称转换控制字符串,输出值参数表中可有多个输出值,也可没有(只输出一个字符串时)。

一般情况下,格式控制字符串包括两部分:格式转换说明和需原样输出的普通字符。

格式转换说明由%开始,并以转换字符结束,用于指定各输出值参数的输出格式。

该题考差格式转换说明,x为长整型数据,格式转换说明为%ld

【C0068】若有以下程序段
int m = 0xabc , n = 0xabc ;
m -= n ;
printf( "%X\n" , m ) ;
执行后输出结果是_______。
A.0X0

B.0x0

C.0

D.0XABC

答案:C

体会:格式转换说明%X为以无符号十六进制整数形式(大写)输出,不输出前导符0x。本题中很明显m=n,通过m-=n;语句变量m的值变为0,最后输出0;

【C0069】已知char a = '\103' ;则语句printf( "%3d" , a ) ; 执行后的输出结果为_______。
A.67

B.'C'

C.  67

D.103

答案:C

体会:字符型变量a的值被赋为'\103',‘ddd’为1到3位八进制ascll码值所代表的字符,3*1+1*64=67,所以变量a为C。输出格式为“%3d”,这里指定输出想输出时所占的列数并输出基本整型。

若m为正整数,当输出数据宽度小于m时,在域内向右靠齐,左边多余位补空格;当输出数据宽度大于m时,按实际宽度全部输出;若m有前导符0,则左边多余位补0。

若m为负整数,则输出数据在域内向左靠齐。

“%3d”,x为67,向右靠齐,左边补一个空格。

【C0070】已知a、b、c为int类型,执行语句:scanf( "a=%d, b=%d, c=%d" , &a , &b , &c ) ; ,若要使得a为1,b为2,c为3。则以下选项中正确的输入形式是_______。
A.a=1
b=2
c=3

B.1, 2, 3

C.a=1, b=2, c=3

D.1 2 3

答案:C

体会:scanf(格式控制字符串,参数地址表),其中格式控制字符串是用双引号括起来的字符串,它包括格式转换说明符和分隔符两个部分。函数scanf()的格式转换说明符通常由%开始,并以一个格式字符结束,用于指定各参数的输入格式。

注意!如果函数scanf()的格式控制字符串中存在除格式说明符以外的其他字符,那么这些字符必须在输入数据时由用户从键盘原样输入。

【C0071】已知i、j、k为int型变量,若从键盘输入:1,2,3↙,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是_______。
A.scanf( "%2d%2d%2d" , &i , &j , &k ) ;

B.scanf( "%d %d %d" , &i , &j , &k ) ;

C.scanf( "%d,%d,%d" , &i , &j , &k ) ;

D.scanf( "i=%d,j=%d,k=%d" , &i , &j , &k ) ;

答案:C

体会:考查原样输入。

【C0072】x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是_______。
A.INPUT x、y、z ;

B.scanf( "%d,%d,%d" , &x , &y , &z ) ;

C.scanf( "%d,%d,%d" , x , y , z ) ;

D.read( "%d,%d,%d" , &x , &y , &z ) ;

答案:B

体会:考查输入格式。

【C0073】若有int a ; float b ; scanf( "%d,%f" , &a , &b ) ; 使a、b的值分别为30和5.5,则正确的输入是_______。
A.30 5.5

B.30, 5.5

C.a=30, b=5.5

D.a=30 b=5.5

答案:B

体会:原样输入。

【C0074】根据以下定义语句和数据的输入方式,scanf语句的正确形式应为_______。
已有定义:float f1 , f2 ;
数据的输入方式:4.523.5↙
A.scanf( "%f, %f" , &f1 , &f2 ) ;

B.scanf( "%f%f" , &f1 , &f2 ) ;

C.scanf( "%3.2f %2.1f" , &f1 , &f2 ) ;

D.scanf( "%3.2f%2.1f" , &f1, &f2 ) ;

答案:B

体会:scanf( "%f%f" , &f1 , &f2 ) ;以下五种输入格式输入数据,效果一样

1)以回车符作为数据分隔符

2)以空格符作为数据分隔符

3)以逗号作为数据分隔符

4)以制表符作为数据分隔符

5)以字符-作为数据分隔符

【C0075】以下针对scanf( )函数的叙述中,正确的是_______。
A.输入项可以为一实型常量,如scanf( "%f" , 3.5 ) ;

B.只有格式控制,没有输入项,也能进行正确输入,如scanf( "a=%d, b=%d" ) ;

C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如:scanf( "%4.2f" , &f ) ;

D.当输入数据时,必须指明变量的地址,如scanf( "%f" , &f ) ;

答案:D

体会:Ascanf后参数必须是一个指针,也就是取地址符加一个变量,不能是一个常量;B只有格式控制,没有输出项不能正确输入;C当输入一个实型数据时,scanf只能指定数据的长度不能指定数据输入的精度。

【C0076】有以下程序
#include<stdio.h>
int main( ){
  char c1 = '1' , c2 = '2' ;
  c1 = getchar( ) ; c2 = getchar( ) ;
  putchar( c1 ) ; putchar( c2 ) ;
}
当运行时输入a↙后,以下叙述正确的是_______。
A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入2个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

答案:A

体会:getchar()和putchar()是C标准函数库中专门用于字符输入/输出的函数。函数putchar()的作用是把一个字符输出到屏幕当前光标位置,而函数getchar()的作用是从键盘读字符。当程序调用getchar()时,程序就等待用户按键,用户从键盘输入的字符会被首先放到输入缓冲区中,直到用户按下回车键为止(回车符也会被放到输入缓冲区)。当用户键入回车后,getchar()才开始从标准输入流中读取字符,并且每次调用只读取一个字符,其返回值是用户输入的字符的ascll码,若遇到文件结尾(End-Of-File),则返回-1,且将用户输入的字符回显到屏幕上。如果用户在按回车之前输入了多个字符,那么其他字符会继续留在输入缓存区中,等待后续getchar()函数调用来读取,即后续的getchar()调用直接从缓冲区中读取字符,直到缓冲区中的字符(包括回车)全部读取完后,才会等待用户按键,只要缓冲区中有字符就不会等待用户的按键操作。

注意!函数getchar()没有参数,函数的返回值就是从终端键盘读入的字符。

【C0077】已知float f = 123.467 ; ,则执行语句printf( "%.2f\n" , f ) ; ,输出结果是123.47。
【C0078】已知字符'A'的ASCII值为十进制65,变量c为字符型,则执行语句c = 'A' + '6' - '3' ; printf( "%c\n " , c ) ; ,输出结果是D。
【C0079】scanf( )函数在输入数据时默认的分隔符有回车、Tab、空格。
【C0080】已知:int i = 10 , j = 1 ; 则执行语句 printf( "%d,%d" , i++ , ++j ) ; 后,输出结果10,2
【C0081】下面程序的运行结果是261。

#include<stdio.h>
int main( ){
  int  m = 177 ;
  printf( "%o\n" , m ) ;
  return 0 ;
}

分析:%o形式输出,即以无符号的八进制整数形式输出,不输出前导符0。

【C0082】下面程序的运行结果是20。

#include<stdio.h>
int main( ){
  int  n = 0 ;
  n += ( n = 10 ) ;
  printf( "%d\n", n ) ;
  return  0 ;
}

分析:最后输出n的基本整型,n先被赋初值为10,然后进行+=运算为20.

【C0083】下面程序的运行结果是201,10。

#include<stdio.h>
int main( ){
  int  a = 201 , b = 012 ;
  printf( "%2d,%2d\n" , a , b ) ;
  return  0 ;
}

分析:最后以逗号分隔以2为域宽输出a,b的值。

【C0084】下面程序的运行结果是y=4630y=    4630。

#include<stdio.h>
int main( ){
  int  y = 2456 ;
  printf( "y=%3o" , y ) ;
  printf( "y=%8o\n" , y ) ;
  return  0 ;
}

分析:注意域宽。

【C0085】下面程序的运行结果是*3.140000,3.142*。

#include <stdio.h>
int main( ){
  printf( "*%f,%4.3f*\n" , 3.14 , 3.1415 ) ;
  return  0 ;
}
【C0086】下面程序的运行结果c:dec=120,oct=170,hex=78,ASCII=x。

#include<stdio.h>
int main( ){
  char  c = 'x' ;
  printf( "c:dec=%d,oct=%o,hex=%x,ASCII=%c\n" , c , c , c , c ) ;
  return  0 ;
}
【C0087】下面程序的运行结果是x=1 y=2 *sum*=310 squared is : 100。

#include<stdio.h>
int main( ){
  int  x = 1 , y = 2 ;
  printf( "x=%d y=%d *sum*=%d" , x , y , x + y ) ;
  printf( "10 squared is : %d\n" , 10 * 10 ) ;
  return  0 ;
}
【C0088】下面程序的运行结果是2 48 20.0 20.0。

#include<stdio.h>
int main( ){
  int  n = 100 ;
  char  c ;
  float  f = 10.0 ;
  double  x ;
  x = f *= n /= ( c = 48 ) ;
  printf( "%d %d %3.1f %3.1f\n" , n , c , f , x ) ;
  return  0 ;
}
【C0089】下面程序的运行结果是x+y+z=48。
运行时从键盘输入:25 13 10↙。

#include<stdio.h>
int main( ){
  int  x , y , z ;
  scanf( "%d%d%d" , &x , &y , &z ) ;
  printf( "x+y+z=%d\n" , x + y + z ) ;
  return  0 ;
}
【C0090】下面程序的运行结果是55, ,A。
运行时从键盘输入:55 A B↙。

#include <stdio.h>
int main( ){
  int  k = 0 ; char c1 = 'a' , c2 = 'b' ;
  scanf("%d%c%c" , &k , &c1 , &c2 ) ;
  printf( "%d,%c,%c\n" , k , c1 , c2 ) ;
  return  0 ;
}

编程题!!

第一题

7-1 【C0091】编写一个程序,读入一个字母,输出与之对应的ASCII码值
分数 10
作者 C语言程序设计,沈国荣,浙江大学出版社
单位 石家庄铁道大学
编写一个程序,读入一个字母,输出与之对应的ASCII码值。

输入格式:
以以下些格式输入一个字母:

请输入一个字母:<字母>

输出格式:
对于输入的字母,以以下格式输出该字母的ASCII码值:

<字母>的ASCII码为<字母的ASCII码>

输入样例:
请输入一个字母:A
输出样例:
A的ASCII码为65
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
int main()
{
    char a;
    scanf("请输入一个字母:%c",&a);
    printf("%c的ASCII码为%d\n",a,a);
    return 0;
}

----------分割线----------

第二题

7-2 【C0092】输入圆的半径,圆柱的高,计算圆周长、圆面积和圆柱体积
分数 10
作者 C语言程序设计,沈国荣,浙江大学出版社
单位 石家庄铁道大学
编写一个程序,从键盘输入圆半径r,圆柱高h,分别计算圆周长cl、圆面积cs和圆柱体积cv,输出计算结果时要求保留小数点后4位。。

输入格式:
以以下些格式输入半径和高:

请输入圆半径和圆柱高:<半径r>,<高h>

输出格式:
以以下些格式输出圆周长cl、圆面积cs和圆柱体积cv,要求计算结果保留小数点后4位:

圆周长=<圆周长cl>

圆面积=<圆面积cs>

圆柱体积=<圆柱体积cv>

输入样例:
请输入圆半径和圆柱高:1,1
输出样例:
在这里给出相应的输出。例如:

圆周长=6.2832
圆面积=3.1416
圆柱体积=3.1416
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include<stdio.h>
#define PI 3.1416
int main()
{
    double r,h;
    double cl,cs,cv;
    r=1;
    h=1;
    cl=2*PI*r;
    cs=PI*r*r;
    cv=PI*r*r*h;
    printf("圆周长=%.4lf\n",cl);
    printf("圆面积=%.4lf\n",cs);
    printf("圆柱体积=%.4lf\n",cv);
    return 0;
}

----------分割线----------

第三题

7-3 【C0093】输入一个三位数,分别求出这个三位数的个位、十位和百位上的数字
分数 10
作者 C语言程序设计,沈国荣,浙江大学出版社
单位 石家庄铁道大学
【C0093】编写一个程序,输入一个三位数,分别求出这个三位数的个位、十位和百位上的数字。

输入格式:
以以下格式输入一个三位整数:

输入三位整数:<三位数>

输出格式:
以以下格式输出该三位数的各位数字:

个位<个位数字>,十位<十位数字>,百位<百位数字>

输入样例:
输入三位整数:123
输出样例:
个位3,十位2,百位1
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
 #include<stdio.h>
int main()
{
    int g,s,b,num;
    num=123;
    scanf("%d",&num);
    b=num/100;
    s=num%100/10;
    g=num%10;
    printf("个位%d,十位%d,百位%d\n",g,s,b);
    
    
    return 0;
}

总结:从输入输出开始,你正式半步踏入编程的大门,接踵而来的是各种各样的“error”“warning”,它们会阻碍你向前迈进下一步。希望你可以遇到一个解决一个,虽然“子子孙孙无穷尽也”,但你一定也能在解决报错中感受到编程的乐趣,加油加油!

每天一mo:我试图与你重逢,在凌晨三点的旧梦里......