c/c++零基础坐牢第三天

科技资讯 投稿 6200 0 评论

c/c++零基础坐牢第三天

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

结束时间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

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

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

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

B.0x0

C.0

D.0XABC

 

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

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

 

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

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

【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

 

体会: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  ;

 

体会:考查原样输入。

【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 ;

 

体会:考查输入格式。

【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

 

体会:原样输入。

【C0074】根据以下定义语句和数据的输入方式,scanf语句的正确形式应为_______。 已有定义:float f1 , f2 ; 数据的输入方式:4.52↙ 3.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 ;

 

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

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

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

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

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

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

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

 

体会: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中将无确定值

 

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

 

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

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

 

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

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

 

【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:我试图与你重逢,在凌晨三点的旧梦里......

 

编程笔记 » c/c++零基础坐牢第三天

赞同 (33) or 分享 (0)
游客 发表我的评论   换个身份
取消评论

表情
(0)个小伙伴在吐槽