A - C语言实验—— Hello World! (printf练习)

语法点: c语言的程序的基本框架:

#include <stdio.h> //包含头文件<stdio.h>
int main() //主函数
{
return 0; //向操作系统返回0表示程序正常结束
}
<stdio.h> 全称为 standard input output(标准输入输出头文件), 里面有printf、scanf等与输入输出有
关的库函数
程序从主函数(main()函数)开始执行
return 0与main前面的int对应, 表示函数的返回值与其类型
语法点: printf()输出函数
printf()为格式化输出函数, 使用 printf(“”) , " “里面为要打印的内容, printf会把” "里面的内容原封不动 输出

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

输出的内容应与output内的东西完全一致,不应该输出其他的额外信息, 否则会wa printf(“”)输出的内容要用双引号围起来,最后的;不要忘记,表示的是一条语句
一般oj(除pta)会自动忽略最后的空格与换行(\n), 所以输出 printf(“Hello World!\n”); 也是对的, 但不要在前面或者中间输出任何无关的信息
B - C语言实验——输出字符串
与第一题相同,直接复制输出框的内容即可,不要添加任何的无关信息(除了末尾的\n(换行符, 类似QQ聊天 按enter)可以选择是否添加)
code B

#include <stdio.h>int main()
{printf("C is so fun.");//这里的\n有无均可
return 0;
}

C - C语言实验——图形输出(字符常量练习)

打印一个由 ‘#’ 围成的图形, 只需要用 \n 控制好换行就可以,可以写在一个printf语句里, 也可以分开成多 个printf语句
code C

//一个printf
#include <stdio.h>
int main()
{printf("#\n##\n###\n####\n#####\n######\n");
return 0;
}
//多个printf
#include <stdio.h>
int main()
{printf("#\n"); //记得\n也要放到" " 里面
printf("##\n");
printf("###\n");
printf("####\n");
printf("#####\n");
printf("######\n");
return 0;
}
//循环
#include <stdio.h>int main()
{for(int i = 1; i <= 6; i++) //外循环控制打印的行数
{for(int j = 1; j <= i; j++) //内循环控制每一行打印的内容
{printf("#");
}
printf("\n"); //不要忘了每一行结尾都要打印换行
}
return 0;
}

7-4 输出倒三角图案

本题要求编写程序,输出指定的由“”组成的倒三角图案。
输入格式:
本题目没有输入。
输出格式:
按照下列格式输出由“
”组成的倒三角图案。



#include <stdio.h>
int main()
{printf("* * * *\n");printf(" * * *\n");printf("  * *\n");printf("   *");return 0;
}

D - C语言实验——求两个整数之和

语法点: 数据类型, 赋值语句, 常用占位符
c语言基本数据类型包括整数类型和浮点类型。整数类型又包含char(字符型), int(整型), short int(短 整型), long int(长整型), long long int(更长的整型); 浮点类型(也叫实型)包括float(单精度浮点型)、 double(双精度浮点型)、long double(更高精度的浮点型)。 在32位以上系统上, int范围与long int范
围相同, 而float精度较低一般不使用, 在实际做题的过程中, 需要整型我们一般直接定义int, 而需要 浮点型我们也一般直接使用double, 当题目数据较大时(大于10的9次方或2的32次方) 考虑使用long long
声明一个变量的语法格式为: 数据类型 变量名; 如 int a; 表示声明了一个整型变量, 变量名为a, 系 统会在内存中开辟一块大小为4字节的空间(详细了解请去看数据类型相关参考资料). 可以使用赋值 号 = 为变量赋值, 如 a = 4; 在变量声明的时候为其赋初值叫做变量的初始化, 如 int a = 123;
占位符用于scanf和printf函数控制格式化输入输出. 如 printf(“sum = %d”, a); 这里的 %d 就是一
个占位符, 表示会把 , 后面的int整型变量a的值放到这个地方输出, 如a的值为123,输出的结果就是 sum = 123 .
每一种数据类型都对应一种占位符, 常见的占位符有:
%d int 类型占位符
%c char 类型占位符(单独的一个字符变量)
%lld long long 类型占位符
%s char数组类型占位符 (用于读取和输出不含空格的字符串)
%f float 类型占位符(单精度浮点型)
%lf double 类型占位符(双精度浮点型)
%o 八进制占位符
%x 十六进制占位符(其中字母部分输出时为小写字母)
%X 十六进制占位符(其中字母部分输出时为大写字母)
%p 指针变量类型占位符
一般来说printf与scanf的占位符是相同的, 最新的c标准double类型变量scanf的占位符为 %lf 而 printf的占位符为 %f , 当然使用 %lf 也不会错
code D

//使用赋值语句
#include <stdio.h>int main()
{int a = 123, b = 456;
printf("sum is %d", a + b);
return 0;
}
//只有一个样例 , 直接输出即可(没有练习的意义)
#include <stdio.h>int main()
{printf("sum is 579");
return 0;
}

E - A+B Problem

这个题数据规模比较小, 直接开int即可, 如果a和b范围较大, 可能需要开long long
语法点: scanf输入函数
scanf函数用于从标准输入(键盘输入)读取数据, 并按照格式化赋值给对应的变量, 如
scanf(“%d %d”, &a, &b); 表示从键盘中读取两个整数并将其依次赋值给变量a和b, 如在键盘输 入 123 456 a的值会变成123, b的值会变成456。 注意scanf函数与printf函数相同, 有几个占位符后 面就要有几个变量参数, 不然会发生错误; scanf函数后面赋值的变量前面必须有&符号, &为取地址 符号, 可以理解为需要找到这个变量的地址才能给它赋值,而printf打印则不需要地址. 有个特例为 char字符数组(字符串)使用%s赋值的时候不需要使用取地址符号, 因为数组名本身就是一个地址
code E

#include <stdio.h>int main()
{int a, b;
scanf("%d %d", &a, &b); //俩%d之间加不加空格都一样 , 读取的时候会自动跳过空白符(如空格、制表符(\t)、 printf("%d", a + b);
return 0;
}

F - C语言实验——交换两个整数的值(顺序结构)

语法点: 评测机制
评测程序像黑匣子, 从标准输入流(stdin)或文件中读取的输入数据经过提交的程序, 得到输出的结果 (存到文件或者标准输出流stdout)并与事先的正确数据进行比对, 进而得到AC或WA(在运行代码时可 能会出现CE/TLE/RTE等错误)
因此我们在考试or比赛中只需要保证程序得到正确的结果即可, 中间的过程不重要(平时练习还是要
code F

//直接输出而不交换
#include <stdio.h>int main()
{int a, b;
scanf("%d %d", &a, &b);
printf("%d %d", b, a); //不交换而直接反着输出
return 0;
}
//开额外变量暂存值实现交换
#include <stdio.h>int main()
{int a, b;
scanf("%d %d", &a, &b);
int t; //新的c标准允许我们在使用的时候定义变量 , 而不是最开始全定义在开头
t = a; //t暂存a的值
a = b; //赋值之后b的值会代替a的值
b = t; //t里面是原来a的值
printf("%d %d", a, b);
return 0;
}
//不开额外变量交换a和b → 加减运算法
#include <stdio.h>int main()
{int a, b;
scanf("%d %d", &a, &b);
//通过加减运算让a变成b, b变成a即可 , 方法不唯一
a = a + b; //如果数据规模大a和b可能需要开long long
b = a - b;
a = a - b;printf("%d %d", a, b);
return 0;
}
//不开额外变量交换a和b → 使用位运算的异或进行交换 , 如感兴趣可自行了解
#include <stdio.h>int main()
{int a, b;
scanf("%d %d", &a, &b);b = a ^ b;
a = a ^ b;
b = a ^ b;printf("%d %d", a, b);
return 0;
}

G - C语言实验——逆置正整数(eg123变成321)

语法点: % 与 / 运算符
/ 为整除符号, / 符号运算的结果取决于左右值的精度大小, 如果 / 左右都是整数, 最后运算的结 果也是整数, 会忽略余数, 如3/ 2的结果是1, 而非1.5。
想算出来1.5可以将左右两边其中一边改成小数, 如 3.0/ 2, 这样运算的结果也是一个浮点数(1.5) 也可以乘以一个1.0, 如3 * 1.0 / 2, 这样也相当于让除号一边变成浮点型 ;
% 运算则是求除法运算后的余数, 如3 % 2 的结果为 1
语法点: != 0 和 == 0 的简写
(非零) 表示真, (0)表示假
if(A != 0) 可以简写为 if(A)
if(A == 0) 可以简写为 if(!A)
拓展知识: C语言运算符
code G

//分离每一位并且加起来(原版)
#include <stdio.h>int main()
{int n;
scanf("%d", &n);int a1, a2, a3;
a1 = n % 10; //分离当前的个位
a2 = n / 10 % 10; //分离当前的十位
a3 = n / 100; //分离当前的百位
int ans = a1 * 100 + a2 * 10 + a3;
printf("%d", ans);
return 0;
}
//分离每一位(从低位到高位)
#include <stdio.h>int main()
{int n;
scanf("%d", &n);int sum = 0;
int p = 0;
while(n)
{p = p * 10 + n % 10; //每次当前位  * 10进位并且加上当前位的值 n /= 10;
}
printf("%d", p);
return 0;
}
//分离每一位并且加起来(从高位到低位)
#include <stdio.h>int main()
{int n;
scanf("%d", &n);
int rev = 0; //存逆置后的结果
int p = 100; //p表示的是逆置后的当前位(基数), 逆置后每一位分别为百位 , 十位 , 个位 , 每次  / 10 while(n) // n != 0 的简写 , 用循环来分离每一位
{rev += n % 10 * p; //n % 10表示分离当前位的数字
p /= 10; //基数  / 10
n /= 10; //n除以10, 表示向前一位
}printf("%d", rev);
return 0;
}
//按字符串的方式逆序输出
#include <stdio.h>int main()
{char s[4];//3个字符 ,字符数组至少要开4
scanf("%s", s);
for(int i = 2; i >= 0; i--) //三位数 , 从下标为2开始逆序输出
{if(s[i] == '0' && i > 0) continue; //跳过后面多余的0
printf("%c", s[i]);
}
return 0;
}
//
#include <stdio.h>
int main()
{int a,b,c,d,e;scanf("%d",&a);b=a%10;c=(a/10)%10;d=a/100;e=b*100+c*10+d;printf("%d\n",e);return 0;
}

H - C语言实验——买糖果

Input
输入爸爸给小瑜的钱n元,n为整数。
Output
小瑜最多能买回的糖块数以及剩下的钱(单位为:角),用空格分隔。
Sample
Input
2
Output
6 2

注意换算一下单位, 还是 % 的简单应用
code H

#include <stdio.h>int main()
{int n;
scanf("%d", &n);
n *= 10; //n = n * 10的简写 , 换算成角
printf("%d %d", n / 3, n % 3); //买的糖数  = 总钱数  / 单价 , 剩余钱数  = 总钱数 % 单价 return 0;
}

I - C语言实验——三个整数和、积与平均值

Description
给出三个整数,请你设计一个程序,求出这三个数的和、乘积和平均数。
Input
输入只有三个正整数a、b、c。
Output
输出一行,包括三个的和、乘积、平均数。 数据之间用一个空格隔开,其中平均数保留小数后面两位。
Sample
Input
2 3 3
Output
8 18 2.67

语法点: 整数 / 整数 与 整数 / 浮点数
计算 整数 / 整数 默认作为整除运算, 即只会获得商的结果, 余数会自动舍弃; 而当 整数 / 浮点数 的 时候 (或者整数 * 浮点数), 在运算的时候会将两个数都转为精度更高的浮点数, 这样才能得到小数结 果。 另一种转为浮点型运算的方式是在式子后面 * 1.0, 如 a * 1.0 / b
语法点: 实型(浮点型) 保留精度(小数点后几位)
%.mf表示保留小数点后几位小数, 如 printf(“%.5f”, x) 表示输出x并保留小数点后五位小数, %.0f 表示保留整数部分
保留精度的原则是"四舍六入五成双", 可以不必深究, 大部分情况下均满足"四舍五入"
(int)(x + 0.5) 与 round()函数可以实现较为严格的四舍五入
code I

#include <stdio.h>
int main()
{
int a, b, c;
scanf(“%d %d %d”, &a, &b, &c);
int sum, mul;
double ave; //平均数是小数 , 要定义成double
sum = a + b + c;
mul = a * b * c;
ave = sum / 3.0; //注意这里是3.0, 不然会进行整除运算
//这里也可以写称 ave = sum * 1.0 / 3;
printf(“%d %d %.2f”, sum, mul, ave); //%.2f控制精度为保留小数点后两位小数 return 0;
}

J - C语言实验——格式化输出(常量练习)

只需要了解printf和scanf的常见占位符及其用法即可(当然也可以全当字符串输出)
code J

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

K - C语言实验——圆柱体计算

已知圆柱体的底面半径r和高h,计算圆柱体底面周长和面积、圆柱体侧面积以及圆柱体体积。其中圆周率定义为3.1415926。
输入格式:
输入数据有一行,包括2个正实数r和h,以空格分隔。
输出格式:
输出数据一行,包括圆柱体底面周长和面积、圆柱体侧面积以及圆柱体体积,以空格分开,所有数据均保留2位小数。

这里的圆周率可以定义为常量
语法点: 常量的定义
常量一般有两种定义的方式
第一种是用#define 宏定义
如 #define pi 3.14159
第二种是const 赋予变量只读的属性
如 const double pi = 3.14159;
注意第一种不需要写数据类型也不需要写分号, 而第二种需要写
语法点: pi的表示方式
使用const修饰的变量或者#define宏定义都可以定义常量pi, 如果想使用更加精确的pi, 可以使用

#include <stdio.h>
#define pi 3.1415926 //用define定义的常量后面没有分号 , 也不需要指定类型
int main()
{double r, h;
scanf("%lf %lf", &r, &h);double c = 2 * pi * r;
double s = pi * r * r;
double ss = c * h;
double v = s * h;printf("%.2f %.2f %.2f %.2f", c, s, ss, v);
return 0;
}
#include <stdio.h>
const double pi = 3.1415926; //用const修饰的变量会被赋予只读属性。注意需要声明类型 ,后面也有分号 int main()
{double r, h;
scanf("%lf %lf", &r, &h);double c = 2 * pi * r;
double s = pi * r * r;
double ss = c * h;
double v = s * h;printf("%.2f %.2f %.2f %.2f", c, s, ss, v);
return 0;
}
//利用acos()函数定义更高精度的pi, 在算法题中可能用到
#include <stdio.h>
#include <math.h>
#define pi acos(-1.0)int main()
{double r, h;
scanf("%lf %lf", &r, &h);double c = 2 * pi * r;
double s = pi * r * r;
double ss = c * h;
double v = s * h;printf("%.2f %.2f %.2f %.2f", c, s, ss, v);
return 0;
}

L - C语言实验——温度转换

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

#include <stdio.h>int main()
{double f, c;
scanf("%lf", &f);
c = 5 * (f - 32) / 9; //除号前面为double类型 , 这里的9可以不写成9.0
printf("%.2f", c);
return 0;
}

M - C语言实验——单个字符输入和输出(顺序结构)

可以选择getchar() 与 putchar() 函数, 也可以直接用scanf() 和 printf()的 %c 或 %s输入输出
code M

//使用getchar()和putchar()
#include <stdio.h>int main()
{char c = getchar(); //需要拿一个char变量来存返回值
putchar(c);
return 0;
}
//用scanf和printf %c输入输出
#include <stdio.h>int main()
{char c;
scanf("%c", &c);
printf("%c", c);
return 0;
}
//用scanf和printf %s输入输出
#include <stdio.h>int main()
{char c[2];
scanf("%s", c);
printf("%s", c);
return 0;
}

N - C语言实验——转换字母(顺序结构)

Input
a
Output
A

转换字母的大小写一般有两种方式, 即通过ASCII码小写字母比大写字母大32或者计算偏移量来实现 (当 然也可以使用ctype.h头文件下的tolower和toupper函数)
语法点: ASCII码 && 常用ASCII码
char类型字符变量在计算机中存储的实际上是一个数(即ASCII码值, 范围为0 ~ 127, 因为char类型
常用的ASCII码值:
‘0’: 48
‘a’: 97
‘A’: 65
其他的’1’ ~ ‘9’、‘b’ ~ ‘z’、 ‘B’ ~ ‘Z’的编码值可以由’0’、‘a’、'A’推出
如果不知道字符的ASCII值, 可以用 %d 格式打印char类型变量, 打印出来的即为对应的ASCII码值 如 char c = 'a '; printf(“%d”, c); 的值为97
code N

//小写字母ASCII码值 -32 = 对应大写字母ASCII码值

#include <stdio.h>int main()
{char a;
scanf("%c", &a);printf("%c", a - 32);
return 0;
}
//小写字母到'a '的距离与其对应的大写字母到'A'的偏移量(距离)相同 , 这个技巧以后会经常用到
#include <stdio.h>int main()
{char a;
scanf("%c", &a);printf("%c", a - 'a ' + 'A');
return 0;
}
//使用<ctype.h>头文件下的toupper函数转换为大写字母
#include <stdio.h>
#include <ctype.h>
int main()
{char a;
scanf("%c", &a);printf("%c", toupper(a));
return 0;
}

O - 实数的输出和占位

可以仔细比对自己的输出结果与output的结果
语法点: 控制输出的宽度及左右对齐
宽度:
%md 为控制输出宽度为m, 如果输出的内容的长度小于m, 不足的位置会用空格填充, 比如 %8d 输
出 123 时,结果为 (前面五个空格)123 ; 如果输出内容长度>=m,则不影响输出结果
%0md 也是控制输出宽度为m, 只是不足m的部分会用 0 填充, 如 %08d 输出 123 时, 结果 为 00000123
对齐:
C语言默认输出为左对齐
当使用 %md 或 %0md 这种控制宽度的语句时会改变为右对齐 如 000123
在控制宽度语句的基础上添加负号 - , 会重新变成左对齐

Description
输入一个实数,请你按如下要求输出:
第一行按双精度默认输出,
第二行双精度数输出共占 10 位,其中 3 位小数,右对齐,左补空格并在两端添加星号包裹,
第三行双精度数输出共占 10 位,其中 3 位小数,左对齐,右补空格并在两端添加星号包裹。
Input
一个double范围内的正实数 a 。
Output
共三行,按题目描述输出。
Sample
Input
123.56789
Output
123.567890

  • 123.568*
    *123.568 *

code O

#include <stdio.h>int main()
{double a;
scanf("%lf", &a);
printf("%f\n", a); //双精度默认输出 , 注意最新的c标准double类型输出用f而不是lf, 当然用lf也不会错
printf("*%10.3f*\n", a);//设置宽度后会变成右对齐
printf("*%-10.3f*\n", a); //使用负号并且设置宽度会恢复左对齐
return 0;
}

P - 大整数的输入输出

注意long long类型占位符是%lld

Description
输入两个 long long 范围内的整数,输出他们的和。
Input
两个 long long 范围内的整数。
Output
输出的两个大整数的和,保证结果在 long long 范围内。
Sample
Input
2222222222
3333333333
Output
5555555555

code P

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

Q - --带’ 和 ”字符的输出

Description
输入一个字符,输出两行。
第一行将字符用 ’ 包裹。
第二行将字符用 " 包裹。
Input
输入一个字符。
Output
按题目描述输出。
Sample
Input
A
Output
‘A’
“A”

语法点: 转义字符
在某些字母前面加上转义符号 \ 会让其有特殊的含义, 如 \n 表示换行, \t 表示tab(制表符), \0 表 示空字符NULL,常用作字符串结束标志, 如果想打印出来 \ " ’ % 等特殊字符, 也需要用转义字符转 义一下, 如 \ , \ ’ , " , %% 等, 注意只有 % 符号的转义符号为 % , 其他均为
code Q

#include <stdio.h>int main()
{char c = getchar();
printf("\ '%c\ '\n", c);
printf("\"%c\"\n", c);
return 0;
}

R - --'%'字符的输入输出

语法点同上一题, 注意的是 % 的转义字符是 % , 其他的都是 \ ; 也可以当字符串直接输出

Description
输入三个用 % 分割的正整数 a b c 代表月,日,年,
要求按照输入样式原样输出。
Input
三个int范围内的正整数,中间用 % 分割。
Output
按题目描述原样输出。
Sample
Input
9%17%2018
Output
9%17%2018

code R

//注意scanf输入和printf输出都需要把%转义
#include <stdio.h>int main()
{int a, b, c;
scanf("%d%%%d%%%d", &a, &b, &c);
printf("%d%%%d%%%d", a, b, c);
return 0;
}
//直接当字符串输出(如果使用gets需要用c提交)
#include <stdio.h>int main()
{char s[100];
gets(s); //gets用于读取一行字符串(无视中间的空格), 但在cpp里已经弃用 , 需要用c提交 puts(s); //puts用于输出字符串 ,并且会自动输出换行符
return 0;
}

S - ‘\’字符的输入输出

*语法点同上一题, \ 的转义字符为 *

Input
9\17\2018
Output
9\17\2018

code S

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

T - 十六进制数输出和占位

语法点: 十六进制数输出
十六进制的每一位由 0 1 2 3 4 5 6 7 8 9 a(A) b(B) c© d(D) e(E) f(F) 组成, 其中字母为小写时输出
code T

题目:
输入一个整数,请你按如下要求输出:
第一行按原样输出,
第二行以十六进制输出(字母小写),
第三行以十六进制输出(字母大写)。
Input
一个int范围内的正整数 a 。
Output
共三行,按题目描述输出。
Sample
Input
456
Output
456
1c8
1C8

#include <stdio.h>int main()
{int a;
scanf("%d", &a);
printf("%d\n", a);
printf("%x\n", a); //%x字母小写
printf("%X\n", a); //%X字母大写
return 0;
}

U - 八进制数输出和占位

Description
输入一个整数,请你按如下要求输出:
第一行按原样输出,
第二行以八进制靠右输出,不足 8 位左补 0 并在两端添加星号包裹,
第三行以八进制靠左输出,不足 8 位右补空格并在两端添加星号包裹。
Input
一个int范围内的正整数 a 。
Output
共三行,按题目描述输出。
Sample
Input
123
Output
123
00000173
*173 *

语法点同O题 “控制输出的宽度及左右对齐”
在控制宽度的%md前面加一个0, 也就是%0md,可以把宽度不足的位用0填充
语法点: 八进制数的输出
%o 为八进制整数的占位符
code U

#include <stdio.h>int main()
{int a;
scanf("%d", &a);
printf("%d\n", a);
printf("*%08o*\n", a); //八进制输出用%o
printf("*%-8o*\n", a); //控制宽度会变成右对齐 , 在前面再添加一个符号会重新变成左对齐 return 0;
}

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

语法点同O题 “控制输出的宽度及左右对齐”

Description
输入一个整数,请你按如下要求输出:
第一行按原样输出,
第二行整数靠右原样输出,不足 8 位左补 0 并在两端添加星号包裹,
第三行整数靠左原样输出,不足 8 位右补空格并在两端添加星号包裹。
Input
一个int范围内的正整数 a 。
Output
共三行,按题目描述输出。
Sample
Input
123456
Output
123456
00123456
*123456 *

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

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

语法点同O题 “控制输出的宽度及左右对齐”

Description
输入一个整数,请你按如下要求输出:
第一行按原样输出,
第二行按原样靠右输出,不足 8 位左补空格并在两端添加星号包裹,
第三行按原样靠左输出,不足 8 位右补空格并在两端添加星号包裹。
Input
一个int范围内的正整数 a 。
Output
共三行,按题目描述输出。
Sample
Input
123456
Output
123456

  • 123456*
    *123456 *

code W

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

X - 字符型数据输出和占位

语法点同O题 “控制输出的宽度及左右对齐”

Description
输入一个字符,请你按如下要求输出:
第一行字符数据默认输出,
第二行字符型数据输出共占 4 位,右对齐,左补 3 个空格并在两端添加星号包裹,
第三行字符型数据输出共占 4 位,左对齐,右补 3 个空格并在两端添加星号包裹。
Input
输入一个字符 。
Output
共三行,按题目描述输出。
Sample
Input
c
Output
c

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

7-3 sdut-C语言实验-虎子分糖果

我们中国各个地区都有拜年的美好习俗,小朋友最喜欢走亲访友了,因为亲戚们会给准备很多糖果吃。虎子家也不例外,妈妈买了很多俄罗斯糖果准备给前来拜年的小朋友分。为了公平,给每个小朋友的糖果数一定得是一样的。
假设虎子妈妈准备了m块俄罗斯糖果,来了n位小朋友,请问每个小朋友可以分到多少块糖?还剩多少块?
输入格式:
输入n和m,其中n>0,m>0。
输出格式:
输出每个小朋友分到的糖果数和剩余的糖果数。
输入样例:
3 31
输出样例:
在这里给出相应的输出。例如:
10 1

法一

#include <stdio.h>
int main()
{int a,b,c,d;scanf("%d %d",&a,&b);c=b/a;d=b-a*c;printf("%d %d",c,d);return 0;
}

法二

#include <stdio.h>
int main()
{int n,m,c,d;scanf("%d %d",&n,&m);c=m/n;d=m%n;printf("%d %d\n",c,d);return 0;
}

7-12 计算摄氏温度

给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。
输入格式:
输入在一行中给出一个华氏温度。
输出格式:
在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。
输入样例:
150
输出样例:
Celsius = 65

#include <stdio.h>
int main(){int a=0;scanf("%d",&a);int c;c=5*(a-32)/9;printf("Celsius = %d",c);return 0;
}

7-13 整数四则运算

本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在整型范围内。
输入格式:
输入在一行中给出2个正整数A和B。
输出格式:
在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。
输入样例:
3 2
输出样例:
3 + 2 = 5
3 - 2 = 1
3 * 2 = 6
3 / 2 = 1

#include <stdio.h>
int main()
{int a, b;scanf("%d %d", &a, &b);printf("%d + %d = %d\n", a, b, a + b);printf("%d - %d = %d\n", a, b, a-b);printf("%d * %d = %d\n", a, b, a * b);printf("%d / %d = %d\n", a, b, a / b);return 0;
}

7-14 计算物体自由下落的距离

一个物体从100米的高空自由落下。编写程序,求它在前3秒内下落的垂直距离。设重力加速度为10米/秒2。
输入格式:
本题目没有输入。
输出格式:
按照下列格式输出
height = 垂直距离值

#include <stdio.h>
int main()
{int g=10;double h;h=0.5*g*3*3;//公式套用printf("height = %.2f",h);return 0;
}

7-1 sdut-C语言实验-求一个3*3矩阵对角线元素之和

分数 300
作者 马新娟
单位 山东理工大学
给定一个3*3的矩阵,请你求出对角线元素之和。

输入格式:
按照行优先顺序输入一个3*3矩阵,每个矩阵元素均为整数。

输出格式:
从左下角到右上角这条对角线上的元素之和。

输入样例:
1 2 3
3 4 5
6 0 1
输出样例:
在这里给出相应的输出。例如:

13

#include <stdio.h>
int main()
{int a[3][3];int i,j;for(i=0;i<=2;i++){for(j=0;j<=2;j++){scanf("%d",&a[i][j]);}}int sum=0;for(i=0;i<=2;i++){sum+=a[i][2-i];}printf("%d\n",sum);
}

7-2 sdut- C语言实验-矩阵转置

分数 300
作者 马新娟
单位 山东理工大学
输入N*N的矩阵,输出它的转置矩阵。

输入格式:
第一行为整数N(1≤N≤100)。
接着是一个N*N的矩阵。

输出格式:
转置矩阵。

输入样例:
2
1 2
1 2
输出样例:
1 1
2 2

#include<stdio.h>
int main()
{int i,j,n;int a[100][100];
int b[100][100];scanf("%d\n",&n);for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d ",&a[i][j]);b[j][i]=a[i][j];}}for(j=0;j<n;j++){for(i=0;i<n;i++){if(i==0)printf("%d",b[j][i]);elseprintf(" %d",b[j][i]);}printf("\n");}return 0;
}

7-3 sdut-C语言实验- 杨辉三角

分数 300
作者 马新娟
单位 山东理工大学
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
上面的图形熟悉吗?它就是我们中学时候学过的杨辉三角。
杨辉三角,是二项式系数在三角形中的一种几何排列,中国南宋数学家杨辉1261年所著的《详解九章算法》一书中出现。在欧洲,帕斯卡(1623----1662)在1654年发现这一规律,所以这个表又叫做帕斯卡三角形。帕斯卡的发现比杨辉要迟393年,比贾宪迟600年。

21世纪以来国外也逐渐承认这项成果属于中国,所以有些书上称这是“中国三角形”(Chinese triangle)。

其实,中国古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光辉灿烂的篇章,而杨辉三角的发现就是十分精彩的一页。

让我们开始做题吧!

输入格式:
输入数据包含多组测试数据。
每组测试数据的输入只有一个正整数n(1≤n≤30),表示将要输出的杨辉三角的层数。
输入以0结束。

输出格式:
对应于每一个输入,请输出相应层数的杨辉三角,每一层的整数之间用一个空格隔开,每一个杨辉三角后面加一个空行。

输入样例:
2
3
0
输出样例:
1
1 1

1
1 1
1 2 1

#include<stdio.h>
int main()
{int i,j,n;int a[30][30];while(scanf("%d\n",&n)!=EOF){if(n==0)break;for(i=1;i<=n;i++){for(j=1;j<=i;j++){if(j==1||j==i)a[i][j]=1;else a[i][j]=a[i-1][j]+a[i-1][j-1];}}for(i=1;i<=n;i++){for(j=1;j<=i;j++){if(j==1)printf("%d",a[i][j]);elseprintf(" %d",a[i][j]);}printf("\n");}printf("\n");       }    return 0;
}

7-4 sdut-C语言实验- 排序

分数 300
作者 马新娟
单位 山东理工大学
给你N(N<=100)个数,请你按照从小到大的顺序输出。

输入格式:
输入数据第一行是一个正整数N,第二行有N个整数。

输出格式:
输出一行,从小到大输出这N个数,中间用空格隔开。

输入样例:
5
1 4 3 2 5
输出样例:
1 2 3 4 5

#include<stdio.h>
int main()
{int i,j,n;int a[100];scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n-1;i++){for(j=0;j<n-1-i;j++){if(a[j]>a[j+1]){int t;t=a[j+1];a[j+1]=a[j];a[j]=t;}}}for(i=0;i<n;i++){if(i==0){printf("%d",a[i]);}else{printf(" %d",a[i]);}}return 0;
}

7-5 冒泡法排序之过程

分数 300
作者 颜晖
单位 浙大城市学院
本题要求使用冒泡法排序,将给定的n个整数从小到大排序后输出,并输出排序过程中每一步的中间结果。

冒泡排序的算法步骤描述如下:

第1步:在未排序的n个数(a[0]〜 a[n−1])中,从a[0]起,依次比较相邻的两个数,若邻接元素不符合次序要求,则对它们进行交换。本次操作后,数组中的最大元素“冒泡”到a[n−1];

第2步:在剩下未排序的n−1个数(a[0] 〜 a[n−2])中,从a[0]起,依次比较相邻的两个数,若邻接元素不符合次序要求,则对它们进行交换。本次操作后,a[0] 〜 a[n−2]中的最大元素“冒泡”到a[n−2];

……

第i步:在剩下未排序的n−k个数(a[0]〜a[n−i])中,从a[0]起,依次比较相邻的两个数,若邻接元素不符合次序要求,则对它们进行交换。本次操作后,a[0] 〜 a[n−i]中的最大元素“冒泡”到a[n−i];

……

第n−1步:在剩下未排序的2个数(a[0] 〜a[1])中,比较这两个数,若不符合次序要求,则对它们进行交换。本次操作后,a[0] 〜 a[1]中的最大元素“冒泡”到a[1]。

输入格式:
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:
在每一行中输出排序过程中对应步骤的中间结果,即每一步后a[0]〜 a[n−1]的值,相邻数字间有一个空格,行末不得有多余空格。

输入样例:
5
8 7 6 0 1
输出样例:
7 6 0 1 8
6 0 1 7 8
0 1 6 7 8
0 1 6 7 8

#include <stdio.h>
int main()
{int n;int i,j;scanf("%d",&n);int a[100];for(i=0;i<=n-1;i++){scanf("%d",&a[i]);}if(n==1) printf("%d",a[0]);for(i=0;i<n-1;i++){   for(j=0;j<n-1;j++){if(a[j]>a[j+1]){int t=a[j+1];a[j+1]=a[j];a[j]=t;}}for(int i=0;i<=n-1;i++){if(i==0)printf("%d",a[i]);else printf(" %d",a[i]);if(i==n-1)printf("\n");}}}

7-6 求一批整数中出现最多的个位数字

分数 300
作者 徐镜春
单位 浙江大学
给定一批整数,分析每个整数的每一位数字,求出现次数最多的个位数字。例如给定3个整数1234、2345、3456,其中出现最多次数的数字是3和4,均出现了3次。

输入格式:
输入在第1行中给出正整数N(≤1000),在第二行中给出N个不超过整型范围的非负整数,数字间以空格分隔。

输出格式:
在一行中按格式“M: n1 n2 …”输出,其中M是最大次数,n1、n2、……为出现次数最多的个位数字,按从小到大的顺序排列。数字间以空格分隔,但末尾不得有多余空格。

输入样例:
3
1234 2345 3456
输出样例:
3: 3 4

#include<stdio.h>
int main()
{int i,j,n;int a[1000];int c[1000];scanf("%d",&n);for(i=0;i<n;i++){scanf("%d",&a[i]);}for(i=0;i<n;i++){if(a[i]==0){c[0]++;}int t=a[i];for(;t!=0;){int x;x=t%10;t=t/10;c[x]=c[x]+1;}}    int max=-1;for(i=0;i<10;i++){if(c[i]>max){max=c[i];}}printf("%d:",max);for(i=0;i<10;i++){if(max==c[i]){printf(" %d",i);}}printf("\n");return 0;
}

7-7 6-4在数组中查找整数

分数 300
作者 沙金
单位 石家庄铁道大学
6-4本题要求从输入的N个整数中查找给定的X。如果找到,输出X的位置(从0开始数);如果没有找到,输出“Not Found”。

输入格式:
输入在第一行中给出两个正整数N和X,第二行给出N个整数。数字均不超过长整型,其间以空格分隔。

输出格式:
在一行中输出X的位置,或者“Not Found”。

输入样例1:
在这里给出一组输入。例如:

5 7
3 5 7 1 9
输出样例1:
在这里给出相应的输出。例如:

2
输入样例2:
在这里给出一组输入。例如:

5 7
3 5 8 1 9
输出样例2:
在这里给出相应的输出。例如:

Not Found

#include <stdio.h>
int main()
{int n,x;scanf("%d %d",&n,&x);int i;int a[100];for(i=0;i<=n-1;i++){scanf("%d",&a[i]);}int k=0;for(i=0;i<=n-1;i++){if(a[i]==x)  printf("%d",i);else k++;}if(k==n) printf("Not Found");}

7-8 sdut- C语言实验-数组逆序(数组移位)

分数 300
作者 马新娟
单位 山东理工大学
有n个整数,使其最后m个数变成最前面的m个数,其他各数顺序向后移m(m < n < 100)个位置。

输入格式:
输入数据有2行,第一行的第一个数为n,后面是n个整数,第二行整数m。

输出格式:
按先后顺序输出n个整数。

输入样例:
5 1 2 3 4 5
2
输出样例:
在这里给出相应的输出。例如:

4 5 1 2 3

#include<stdio.h>
int main()
{int i,n,j,m;int a[100];scanf("%d",&n);for(i=0;i<n;i++){if(i!=n-1)scanf("%d ",&a[i]);elsescanf("%d\n",&a[i]);}scanf("%d",&m);for(i=0;i<m;i++){int t=a[n-1];for(j=n-1;j>0;j--){a[j]=a[j-1];}a[0]=t;}for(i=0;i<n;i++){if(i==0)printf("%d",a[i]);else printf(" %d",a[i]);}return 0;
}

7-9 求矩阵各行元素之和

分数 300
作者 C课程组
单位 浙江大学
本题要求编写程序,求一个给定的m×n矩阵各行元素之和。

输入格式:
输入第一行给出两个正整数m和n(1≤m,n≤6)。随后m行,每行给出n个整数,其间

以空格分隔。

输出格式:
每行输出对应矩阵行元素之和。

输入样例:
3 2
6 3
1 -8
3 12
输出样例:
9
-7
15

#include <stdio.h>
int main()
{int m,n;scanf("%d %d",&m,&n);int a[100][100];int i,j;for(i=0;i<=m-1;i++){for(j=0;j<=n-1;j++){scanf("%d",&a[i][j]);}     }int sum;for(i=0;i<=m-1;i++){   sum=0;for(j=0;j<=n-1;j++){sum+=a[i][j];}   printf("%d\n",sum);}}

7-10 在数组中查找1

分数 300
作者 庄波
单位 滨州学院
编写程序在 n 个元素的数组中查找指定的元素 x。

输入格式:
第一行包含两个整数 n 和 x,分别表示数组元素的个数(不超过 20)和待查找的数。

第二行包含 n 个整数,要求依次存入数组。

输出格式:
若在数组中找到 x 提示找到,并给出在数组中第一出现的时下标。

若找不到,则提示未找到。

输入样例 1:
在这里给出一组输入。例如:

5 3
1 2 3 4 5
输出样例 1:
在这里给出相应的输出。例如:

Found 3 at 2
输入样例 2:
在这里给出一组输入。例如:

5 6
1 2 3 4 5
输出样例 2:
在这里给出相应的输出。例如:

Not found 6

#include <stdio.h>
int main()
{int n,x;scanf("%d %d",&n,&x);int a[100];int i;for(i=0;i<=n-1;i++){scanf("%d",&a[i]);}int k=0;for(i=0;i<=n-1;i++){if(a[i]==x)printf("Found %d at %d",x,i);else k++;}if(k==n) printf("Not found %d",x);
}

7-11 统计学生成绩

分数 300
作者 陈建海
单位 浙江大学
本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:

大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。

输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。

输入样例:
7
77 54 92 73 60 65 69
输出样例:
1 0 2 3 1

#include <stdio.h>
int main()
{int n;int i;int b=0,c=0,d=0,e=0,f=0;scanf("%d",&n);int a[10000];for(i=0;i<=n-1;i++){scanf("%d",&a[i]);}for(i=0;i<=n-1;i++){if(a[i]>=90)b++;else if(a[i]>=80) c++;else if(a[i]>=70) d++;else if(a[i]>=60) e++;else f++;}printf("%d %d %d %d %d",b,c,d,e,f);
}

7-12 统计字符

分数 300
作者 颜晖
单位 浙大城市学院
本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。

输入格式:
输入为10个字符。最后一个回车表示输入结束,不算在内。

输出格式:
在一行内按照

letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数
的格式输出。

输入样例:
aZ &
09 Az
输出样例:
letter = 4, blank = 3, digit = 2, other = 1

#include <stdio.h>
int main()
{char a[10];int i;int b=0,c=0,d=0,e=0;for(i=0;i<10;i++){scanf("%c",&a[i]);}for(i=0;i<10;i++){if((a[i]>='a')&&(a[i]<='z')||(a[i]>='A')&&(a[i]<='Z'))b++;else if(a[i]=='\n'||a[i]==' ')c++;else if(a[i]>='0'&&a[i]<='9')d++;else e++;}printf("letter = %d, blank = %d, digit = %d, other = %d",b,c,d,e);
}

山东理工大学-2022级-程序设计基础I-顺序结构相关推荐

  1. 山东理工大学-2022级-程序设计基础II-实验4 递推

    7-2 养兔子 分数 20 全屏浏览题目 切换布局 作者 ly单位 山东理工大学 一对成熟的兔子每天能且只能产下一对小兔子,每次都生一公一母,每只小兔子的成熟期是1天,小兔子出生后隔一天才能再生小兔子 ...

  2. 山东理工大学-2022级-程序设计基础I-实验9 字符串

    部分答案来源于网络! 7-1 sdut-C语言实验-字符编码 #include<stdio.h> #include<string.h>int main() {int i,len ...

  3. c语言编程入门题库,级程序设计基础题库(c语言)(..更新).doc

    级程序设计基础题库(c语言)(..更新).doc 14级<程序设计基?础>题库100?道 1.总共抽10?道题,按题型:顺序(1道).分支(1道).单循环(2道).多循环(1道).数组(1 ...

  4. 创意c语言程序设计,重庆理工大学-c语言程序设计基础教程_习题答案(纪纲_金艳).doc...

    重庆理工大学-c语言程序设计基础教程_习题答案(纪纲_金艳).doc 还剩 56页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环 ...

  5. python程序设计基础教程答案山东联盟答案_Python程序设计基础 (山东联盟) 期末...

    Python 程序设计基础(山东联盟) 下面运算符中可以用来连接两个字符串的 ? 答 :+ 表达式 -15 // 4 的值是 ? 答 :-4 下面哪个不是字符串提供的方法 ? 答 :search() ...

  6. 吉林大学 超星慕课 高级语言程序设计 实验04 数组及其在程序设计中的应用 (2022级) 程序第04一13题

    本人能力有限,发出只为帮助有需要的人. 建议同学们自己写完后再进行讨论. 第三题后难度明显下降,所以后面的就一起发了 4. (程序题) 题目编号:Exp04-Basic04,GJBook3-06-19 ...

  7. MATLAB程序控制结构之顺序结构

    目录 1.数据的输入 2.数据的输出 3.程序的暂停 程序的控制结构有3种,顺序结构(顺序结构是指按照程序中语句的排列顺序依次执行,直到程序的最后一个语句为止.这是最简单的一种程序结构.),选择结构和 ...

  8. c语言 程序数据要五行输出,C语言实验二程序、总结 顺序结构与输入、输出方法...

    实验二顺序结构与输入/输出方法 一实验目的 1 学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自增减运算 符的使用. 2 掌握C语言中赋值语句的使用. 3 掌握C语言中各种数据的输入/ ...

  9. JAVA程序设计基础05循环结构

    一.while循环结构 while(循环条件) { 循环操作: } 编写JAVA程序,输入一个数字,实现该数字阶乘的计算. 二.深入理解while循环 使用while循环计算存款利息 编写java程序 ...

最新文章

  1. vue.js $refs和$emit 父子组件交互
  2. linux 路由器去广告,linux – 如何正确发送路由器广告?
  3. Android-Binder进程间通讯机制-多图详解
  4. java tree json_treePanel json java后台
  5. RDMA技术详解(二):RDMA Send Receive操作
  6. Gnu/Linux网卡绑定bonding
  7. pandas 日期比较大小_pandas处理日期时间,按照时间筛选
  8. MySQL Router 测试使用 转
  9. php类似while函数,php 实现类似于pyhon中的Construct库的功能(四)实现do-while功能...
  10. 您的用户账户没有连接到http://192.168.0.112:8080/tfs上的team foundation server的权限
  11. Vmware 6.5.1正式版在Ubuntu 8.10下面运行非常缓慢的解决方
  12. 雨棚板弹性法计算简图_钢结构雨篷图纸计算书
  13. 简单的 Nodejs jade 实现Hello world
  14. 清风数学建模学习笔记——逻辑回归的二分类模型
  15. python数据分析论文报告电影_一个实战案例带你走完python数据分析全流程:豆瓣电影评论的关键词云图制作...
  16. java版b2b2c社交电商spring cloud分布式微服务 (三) 服务消费者(Feign)
  17. 怎样压缩图片大小到20k?教你一键压缩图片大小
  18. 基于HPC场景的集群管理系统(slurm系统初相识)
  19. 故障诊断分类 matlab代码 轴承内圈、外圈、滚动体故障分类
  20. FlowForge 重要组件及概念

热门文章

  1. 2023中国AIGC应用研究报告 | 附120页报告下载
  2. Zeal下载和添加文档解决方法
  3. 2020上半年总结及感悟
  4. Windows系统安装使用Redis教程
  5. 使用JS和JAVA实现文件格式与base64格式相互转换
  6. VC Office2007界面对话框实现(续)
  7. 【CNN-VGGNet】
  8. stm32 串口输出 中文乱码
  9. Mybatis的where标签
  10. c++:线程和进程的区别