Last updated on

2022级《程序设计基础I》实验1-顺序结构程序设计


Hello World!(printf练习)

problemId:1110

Description

很高兴你能上机实践所学的C语言知识!

编程不是在课本上的几页纸就能学会的,你必须多思考、多上机才能真正学会一门编程语言,这也是我们出这些题目的初衷。

这些题目都是课本上的基本题目,主要目的是让大家巩固课堂上所学到的,希望大家能够认真对待!

为了便于调试题目,做这些题目时可以先在CodeBlocks、DevC++或Microsoft VC++6.0中调试成功后再提交。

下面我们就开始吧:


利用C语言基本格式显示以下内容: Hello World!

Input

本题没有输入数据

Ouput

输出字符串Hello World!输出后需要换行。

samples

<input>—>

<output>—> Hello World!

Code

print("Hello World!")

Code

#include<stdio.h>
int main(){
    printf("Hello World!");
}

输出字符串

problemId:1151

Description

在屏幕上输出一行信息:This is a C program.

Input

无输入数据。

Ouput

输出字符串This is a C program.

samples

<input>—>

<output>—> This is a C program.

Code

#include<stdio.h>
int main(){
    printf("This is a C program.");
}

图形输出(字符常量练习)

problemId:1112

Description

用基本输出语句打印以下图形:

#

##

###

####

#####

######

Input

本题目没有输入数据

Ouput

输出图形由6行组成,第1行有1个#号,第i行有连续的i个#号:

#

##

###

####

#####

######

samples

<input>—>

<output>—>

Code

#include<stdio.h>
int main(){
    int i;
    int j;
    for (i=1;i<=6;i++){
        for (j=1;j<i;j++){
            printf("#");
        }
        printf("#\n");
    }
}

求两个整数之和

problemId:1152

Description

求两个整数之和,不从键盘输入数据,直接使用赋值语句(a=123;b=456)输入数据,然后计算两个整数之和输出。

Input

无输入数据。

Ouput

输出a和b之和。

samples

<input>—>

<output>—> sum is 579

Code

#include<stdio.h>
int main(){
    int a=123,b=456;
    int sum=a+b;
    printf("sum is %d",sum);
}

A+B Problem

problemId:1000

Description

Calculate $a + b$

### Input

Two integer $a, b$ $(0 \le a, b \le 10)$

### Ouput

Output a + b.

### samples \--> 1 2 \--> 3 \--> 3 3 \--> 6 ### Code ``` #include int main(){ int a,b,sum; scanf("%d%d",&a,&b); sum=a+b; printf("%d",sum); } ``` # 交换两个整数的值(顺序结构) problemId:1115 ### Description

交换两个变量的值,由终端输入两个整数给变量x、y,然后交换x和y的值后,输出x和y。

Input

从键盘输入两个整数变量x和y;

Ouput

在交换x、y的值后将x和y输出!

samples

<input>—> 4 6 <output>—> 6 4

Code

#include<stdio.h>
int main(){
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d %d",b,a);
}

逆置正整数

problemId:1189

Description

输入一个三位正整数,将它反向输出。

Input

3位正整数。

Ouput

逆置后的正整数。

samples

<input>—> 123 <output>—> 321

Code

#include<stdio.h>
int main(){
    int a,a100,a10,a1;
    scanf("%d",&a);
    a1=a%10;
    a10=(a%100-a1)/10;
    a100=(a%1000-a1-a10*10)/100;
    printf("%d",a1*100+a10*10+a100);
}

买糖果

problemId:1203

Description

小瑜是个爱吃糖果的馋鬼,天天嚷着要爸爸买糖果,可是爸爸很忙,哪有时间啊,于是就让小瑜自己去了,糖果3角钱一块,爸爸给小瑜n元钱,请你告诉小瑜最多能买几块糖,还剩几角钱?

Input

输入爸爸给小瑜的钱n元,n为整数。

Ouput

小瑜最多能买回的糖块数以及剩下的钱(单位为:角),用空格分隔。

samples

<input>—> 2 <output>—> 6 2

Code

#include<stdio.h>
int main(){
    int money;
    scanf("%d",&money);
    printf("%d %d",money*10/3,money*10%3);
}

三个整数和、积与平均值

problemId:1167

Description

给出三个整数,请你设计一个程序,求出这三个数的和、乘积和平均数。

Input

输入只有三个正整数a、b、c。

Ouput

输出一行,包括三个的和、乘积、平均数。 数据之间用一个空格隔开,其中平均数保留小数后面两位。

samples

<input>—> 2 3 3 <output>—> 8 18 2.67

Code

#include<stdio.h>
int main(){
    int a,b,c;
    float num;
    scanf("%d%d%d",&a,&b,&c);
    printf("%d %d %.2f",a+b+c,a*b*c,(a+b+c)/3.0);
}

格式化输出(常量练习)

problemId:1111

Description

用c语言的基本输出格式打印下列内容:

100

A

3.140000

Input

本题目没有输入数据

Ouput

输出三行数据:

100

A

3.140000

samples

<input>—>

<output>—> 100 A 3.140000

Code

#include<stdio.h>
int main(){
    printf("%d\n",100);
    printf("%c\n",'A');
    printf("%f",3.140000);
    return 0;
}

圆柱体计算

problemId:1207

Description

已知圆柱体的底面半径r和高h,计算圆柱体底面周长和面积、圆柱体侧面积以及圆柱体体积。其中圆周率定义为3.1415926。

Input

输入数据有一行,包括2个正实数r和h,以空格分隔。

Ouput

输出数据一行,包括圆柱体底面周长和面积、圆柱体侧面积以及圆柱体体积,以空格分开,所有数据均保留2位小数。

samples

<input>—> 1 2 <output>—> 6.28 3.14 12.57 6.28

Code

#include<stdio.h>
int main(){
    int r,h;
    const double pi=3.1415926;
    scanf("%d%d",&r,&h);
    printf("%.2f %.2f %.2f %.2f",2*pi*r,pi*r*r,2*pi*r*h,pi*r*r*h);
    return 0;
}

温度转换

problemId:1208

Description

输入一个华氏温度,输出摄氏温度,其转换公式为:$$C=5(F-32)/9$$

### Input

输入数据只有一个实数,即华氏温度。

### Ouput

输出数据只有一个,即摄氏温度,保留2位小数。

### samples \--> 32.0 \--> 0.00 ### Code ``` #include int main(){ float F; scanf("%f",&F); printf("%.2f",(F-32.0)*5/9); } ``` # 单个字符输入和输出(顺序结构) problemId:1113 ### Description

用getchar()从键盘上输入一个字符,用putchar()打印出来!

Input

从键盘上输入一个字符!

Ouput

把刚刚输入的字符打印出来!

samples

<input>—> A <output>—> A

Code

#include<stdio.h>
int main(){
    char ch;
    ch=getchar();
    putchar(ch);
}

转换字母(顺序结构)

problemId:1116

Description

从键盘上输入一个小写字母,然后将小写字母装换成大写字母输出!

Input

从键盘上输入一个小写字母。

Ouput

小写字母装换成大写字母输出。

samples

<input>—> a <output>—> A

Code

#include<stdio.h>
int main(){
    char ch;
    scanf("%c",&ch);
    printf("%c",ch-32);
}

实数的输出和占位

problemId:4291

Description

输入一个实数,请你按如下要求输出:

第一行按双精度默认输出,

第二行双精度数输出共占 10 位,其中 3 位小数,右对齐,左补空格并在两端添加星号包裹,

第三行双精度数输出共占 10 位,其中 3 位小数,左对齐,右补空格并在两端添加星号包裹。

Input

一个double范围内的正实数 a 。 

Ouput

共三行,按题目描述输出。

samples

<input>—> 123.56789 <output>—> 123.567890

  • 123.568* *123.568 *

Code

#include<stdio.h>
int main(){
    double a;
    scanf("%lf",&a);
    printf("%lf\n",a);
    printf("*%10.3lf*\n",a);
    printf("*%-10.3lf*",a);
}

大整数的输入输出

problemId:4292

Description

输入两个 long long 范围内的整数,输出他们的和。

Input

两个 long long 范围内的整数。

Ouput

输出的两个大整数的和,保证结果在 long long 范围内。

samples

<input>—> 2222222222 3333333333 <output>—> 5555555555

Code

#include<stdio.h>
int main(){
    long long int a,b;
    scanf("%lld %lld",&a,&b);
    printf("%lld",a+b);
}

带’ 和 ”字符的输出

problemId:4293

Description

输入一个字符,输出两行。

第一行将字符用 ' 包裹。

第二行将字符用 " 包裹。

Input

输入一个字符。

Ouput

按题目描述输出。

samples

<input>—> A <output>—> ‘A’ “A”

Code

#include<stdio.h>
int main(){
    char ch;
    scanf("%c",&ch);
    printf("\'%c\'\n",ch);
    printf("\"%c\"",ch);
}

’%‘字符的输入输出

problemId:4294

Description

输入三个用 ` % ` 分割的正整数 a b c 代表月,日,年,

要求按照输入样式原样输出。

Input

三个int范围内的正整数,中间用 ` %` 分割。

Ouput

按题目描述原样输出。

samples

<input>—> 9%17%2018

<output>—> 9%17%2018

Code

#include<stdio.h>
int main(){
    int day,month,year;
    scanf("%d%%%d%%%d",&month,&day ,&year);
    printf("%d%%%d%%%d",month,day,year);
}

‘\’字符的输入输出

problemId:4295

Description

输入三个用 ` \ ` 分割的正整数 a b c 代表日,月,年,

要求按照输入样式原样输出。

Input

三个int范围内的正整数,中间用 ` \ ` 分割。

Ouput

按题目描述原样输出。

samples

<input>—> 9\17\2018

<output>—> 9\17\2018

Code

#include<stdio.h>
int main(){
    int day,month,year;
    scanf("%d\\%d\\%d",&month,&day ,&year);
    printf("%d\\%d\\%d",month,day,year);
}

十六进制数输出和占位

problemId:4296

Description

输入一个整数,请你按如下要求输出:

第一行按原样输出,

第二行以十六进制输出(字母小写),

第三行以十六进制输出(字母大写)。

Input

一个int范围内的正整数 a 。 

Ouput

共三行,按题目描述输出。

samples

<input>—> 456 <output>—> 456 1c8 1C8

Code

#include<stdio.h>
int main(){
    int a;
    scanf("%d",&a);
    printf("%d\n%x\n%X",a,a,a);
}

八进制数输出和占位

problemId:4297

Description

输入一个整数,请你按如下要求输出:

第一行按原样输出,

第二行以八进制靠右输出,不足 8 位左补 0 并在两端添加星号包裹,

第三行以八进制靠左输出,不足 8 位右补空格并在两端添加星号包裹。

Input

一个int范围内的正整数 a 。 

Ouput

共三行,按题目描述输出。

samples

<input>—> 123

<output>—> 123 00000173 *173 *

Code

#include<stdio.h>
int main(){
    int a;
    scanf("%d",&a);
    printf("%d\n*%08o*\n*%-8o*",a,a,a);
}

十进制输入输出和其它非空格占位

problemId:4298

Description

输入一个整数,请你按如下要求输出:

第一行按原样输出,

第二行整数靠右原样输出,不足 8 位左补 0 并在两端添加星号包裹,

第三行整数靠左原样输出,不足 8 位右补空格并在两端添加星号包裹。

Input

一个int范围内的正整数 a 。 

Ouput

共三行,按题目描述输出。

samples

<input>—> 123456 <output>—> 123456 00123456 *123456 *

Code

#include<stdio.h>
int main(){
    int a;
    scanf("%d",&a);
    printf("%d\n*%08d*\n*%-8d*",a,a,a);
}

十进制输入输出和空格占位

problemId:4299

Description

输入一个整数,请你按如下要求输出:

第一行按原样输出,

第二行按原样靠右输出,不足 8 位左补空格并在两端添加星号包裹,

第三行按原样靠左输出,不足 8 位右补空格并在两端添加星号包裹。

Input

一个int范围内的正整数 a 。 

Ouput

共三行,按题目描述输出。

samples

<input>—> 123456 <output>—> 123456

  • 123456* *123456 *

Code

#include<stdio.h>
int main(){
    int a;
    scanf("%d",&a);
    printf("%d\n*%8d*\n*%-8d*",a,a,a);
}

字符型数据输出和占位

problemId:4300

Description

输入一个字符,请你按如下要求输出:

第一行字符数据默认输出,

第二行字符型数据输出共占 4 位,右对齐,左补 3 个空格并在两端添加星号包裹,

第三行字符型数据输出共占 4 位,左对齐,右补 3 个空格并在两端添加星号包裹。

Input

输入一个字符 。 

Ouput

共三行,按题目描述输出。

samples

<input>—> c <output>—> c

  • c* *c *

Code

#include<stdio.h>
int main(){
    char a;
    scanf("%c",&a);
    printf("%c\n*%4c*\n*%-4c*",a,a,a);
}