C语言基础部分练习(http://acm.hgnu.edu.cn)
前言
最近有朋友和同学找我要c语言基础练习答案,为了方便分享,放在我的博客上了,如果对你确实有帮助,可以考虑点下赞或打赏哦(都能通过,没有专注于搞算法,所以有的地方可以优化,欢迎在评论区留言)
A. A+B问题
#include<stdio.h>
int main()
{
int a,b,c;
scanf("%d%d",&a,&b);
c=a+b;
printf("%d",c);
return 0;
}
B. 圆的面积
#include<stdio.h>
int main()
{
double p=3.1415926535898;
double r,s;
scanf("%lf",&r);
s=p*r*r;
printf("%0.6lf",s);
}
C. 闰年
#include<stdio.h>
int main()
{
int y;
scanf("%d",&y);
if(y%400==0||(y%4==0&&y%100!=0)){
printf("yes");
}
else
printf("no");
return 0; }
D. 求四个数的最大数
#include<stdio.h>
int main()
{
int a[4];
int i,max;
for(i=0;i<4;i++)
{
scanf("%d",&a[i]);
}
max=a[0];
for(i=0;i<4;i++)
{
if(max<a[i])
max=a[i];
} printf("%d",max); return 0;
}
E. 判断素数
#include<stdio.h>
int main()
{
int flag=1,i,a;
scanf("%d",&a);
if(a==1){
printf("NO");
return 0;
}
for(i=2;i<a;i++)
if(a%i==0)
flag=0; if(flag==0)
printf("NO");
else
printf("YES");
return 0;
}
F. 最大公约数
#include<stdio.h>
int main()
{
int n,m,t;
scanf("%d%d",&n,&m);
while((t=n%m)!=0)
{
n=m;
m=t;
}
printf("%d",m);
return 0;
}
G. 奇数和
#include<stdio.h>
int main()
{
int i,n;
long k=0;
scanf("%d",&n);
for(i=1;i<n;i+=2){
k+=i;
}
printf("%ld",k);
}
H. 阶乘和
#include<stdio.h>
int main(){
long n,i;
long sum=1;
long k=0;
scanf("%ld",&n);
for(i=1;i<=n;i++)
{
sum=sum*i;
k+=sum;
}
printf("%ld",k);
return 0;
}
I. 分解质因数2
#include <stdio.h>
int main(){
int n; // 用户输入的整数
int i; // 循环标志
scanf("%d",&n);
printf("%d = 1*",n);
for(i=2; i<=n; i++){
while(n!=i){
if(n%i==0){
printf("%d*",i);
n=n/i;
}else
break;
}
}
printf("%d\n",n);
return 0;
}
J. 求n以内所有素数
#include<stdio.h>
int main()
{
int flag,i,j,n;
scanf("%d",&n);
for(i=2;i<n;i++){
flag=1;
for(j=2;j<i;j++)
{
if(i%j==0)
{
flag=0;
break;
}
}
if(flag==1)
{
printf("%d\n",i);
}
} }
K. 从小到大排序
#include<stdio.h>
int main()
{
int n,i,j,temp;
int arr[100]; scanf("%d",&n); for(i=0;i<n;i++){
scanf("%d",&arr[i]);
} for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(arr[i]>arr[j])
{
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
} for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
L. 数据去重
#include<stdio.h>
int main(){
int n,i,t,res=0;
int arr[100];
scanf("%d",&n);
for(i = 0; i < n; i++){
scanf("%d",&arr[i]);
}
for(i = 0; i < n - 1; i++){
if(arr[i] == arr[i + 1] && arr[i] != 0){
for(t = i+1; t < n - 1; t++){
arr[t] = arr[t + 1];
}
arr[t] = 0;
i--;
res++;
}
}
for(i = 0; i < n - res; i++){
printf("%d ",arr[i]);
}
return 0;
}
M. 连接字符串
#include<stdio.h>
int main()
{
int i=-1;
int j=-1;
char arr1[60],arr2[30];
scanf("%s",arr1);
scanf("%s",arr2);
while(arr1[++i]!='\0');
while(arr2[++j]!='\0')
{
arr1[i++]=arr2[j];
}
arr1[i]='\0';
printf("%s",arr1);
return 0;
}
N. 合并序列
#include<stdio.h>
int main()
{
int m,n;
int i,j,k=0;
int arr1[100],arr2[100];
scanf("%d",&m);
scanf("%d",&n);
for(i=0;i<m;i++){
scanf("%d",&arr1[i]);
}
for(i=0;i<n;i++){
scanf("%d",&arr2[i]);
}
for(i=0;i<m;i++)
{ for(j=0;j<n;j++){
//找到位置后移 if(arr1[i]>arr2[n-1]){
arr2[n]=arr1[i];
n++;
break;
} if(arr1[i]<arr2[j]){
for(k=n+1;k>j;k--){
arr2[k]=arr2[k-1];
}
arr2[j]=arr1[i];
n++;
break;
}
} }
for(i=0;i<n;i++)
{
printf("%d ",arr2[i]);
} }
O. 大整数加法
#include<stdio.h>
#include<string.h> int main()
{
int bigint_1[100001] = {0};
int bigint_2[100001] = {0};
char sNum_1[100001] = {'\0'};
char sNum_2[100001] = {'\0'}; //输入大整数1和大整数2
scanf("%s %s",sNum_1,sNum_2); for(int i = 0,j = strlen(sNum_1) - 1;j >= 0;)
{
bigint_1[i++] = sNum_1[j--] - '0';
}
for(int i = 0,j = strlen(sNum_2) - 1;j >= 0;)
{
bigint_2[i++] = sNum_2[j--] - '0';
} int k = 0;
while(k <= 100000)
{
bigint_1[k] += bigint_2[k]; if(bigint_1[k] >= 10)
{
bigint_1[k+1]++;
bigint_1[k] -= 10;
}
k++;
} int mark = 0;
int i = 0;
for(i = 100000;i >= 0;i--)
{
if(bigint_1[i] != 0)
{
mark = i;
break;
}
} if(i == -1)
{
printf("0\n");
}
else
{
for(int i = mark;i >= 0;i--)
{
printf("%d",bigint_1[i]);
}
putchar('\n');
} return 0;
}
P. 杨辉三角
#include<stdio.h>
int main()
{
int i,j,n;
int arr[50][50];
scanf("%d",&n);
for(i=0;i<n;i++)
{
arr[i][0]=1;
arr[i][i]=1;
}
for(i=2;i<n;i++)
{
for(j=1;j<i;j++){
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
} for(i=0;i<n;i++)
{
for(j=0;j<=i;j++)
{
printf("%d ",arr[i][j]);
}
printf("\n");
}
return 0; }
Q. 水仙花数
#include<stdio.h>
int main()
{
int i,g,s,b;
for(i=100;i<1000;i++){
g=i%10;
s=i/10%10;
b=i/100;
if(g*g*g+s*s*s+b*b*b==i){
printf("%d\n",i);
}
} }
R. 回文数
#include<stdio.h>
int main()
{
int g,s,b,q,i=2546;
for(i=1000;i<10000;i++){
g=i%10;
s=i%100/10;
b=i/100%10;
q=i/1000;
if((g==q)&&(s==b))
{
printf("%d\n",i);
}
}
}
S. 删除零元素
#include<stdio.h>
int main()
{
int i,n;
int arr[50];
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",&arr[i]);
if(arr[i]==0){
i--;
n--;
}
}
printf("%d\n",n);
for(i=0;i<n;i++)
{
printf("%d ",arr[i]);
} }
T. 输出倒三角
#include<stdio.h>
int main()
{
int i,j,n;
scanf("%d",&n);
for(i=n;i>0;i--)
{
for(j=0;j<i;j++)
{
printf("* ");
}
printf("\n");
} }
U. 1000以内的完数
#include<stdio.h>
int main()
{
//注释部分用于显示因子
//int c=0,temp[500];
for(int i=2;i<=1000;i++)
{
int sum=1;
for(int j=2;j<=i/2;j++)
{
if(i%j==0)
{
sum+=j;
//temp[c++]=j;
}
}
if(sum==i)
{
printf("%d\n",i);
}
}
}
V. 单词翻转
#include<stdio.h>
#include<string.h>
int main()
{
int i,j,n;
char dc[100];
char dcs[10][100];
i=j=-1;
n=0;
gets(dc);
while(dc[++i]!='\0')
{
if(dc[i]=='\40')
{
dcs[n][++j]='\0';
n++;
j=-1;
continue;
}
dcs[n][++j]=dc[i];
}
dcs[n][++j]='\0';
for(i=n;i>=0;i--)
{
printf("%s",dcs[i]);
if(i!=0){
printf(" ");
}
} }
W. 报数
#include<stdio.h>
int main()
{
int arr[1000]={0};
int i,n,m,count,k=1;
scanf("%d",&n);
scanf("%d",&m);
count=n;
for(i=0;;i=(i+1)%n)
{
if(count==1)
break; if(arr[i]==1)
continue;
if(k==m)
{
arr[i]=1;
k=0;
count--;
}
k++;
} for(i=0;i<n;i++)
{
if(arr[i]==0){
printf("%d\n",i+1);
}
} }
X. 九九乘法表
#include<stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%d ",i,j,i*j); }
printf("\n"); } }
Y. 分解质因数
#include<stdio.h>
int main()
{
int i,j,k,t,n;
scanf("%d",&k);
scanf("%d",&t);
for(i=k;i<=t;i++)
{
n=i;
printf("%d=",n);
for(j=2;j<n;j++)
{
if(n%j==0)
{
printf("%d*",j);
n=n/j;
j=1;
}
}
printf("%d\n",n); }
}
C语言基础部分练习(http://acm.hgnu.edu.cn)的更多相关文章
- Linux入门所必备的Linux命令和C语言基础
文件和目录(底部有视频资料) cd /home 进入 '/ home' 目录' cd - 返回上一级目录 cd -/- 返回上两级目录 cd 进入个人的主目录 cd ~user1 进入个人的主目录 c ...
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...
- 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)
索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...
- C#语言基础
第一部分 了解C# C#是微软公司在2000年7月发布的一种全新且简单.安全.面向对象的程序设计语言,是专门为.NET的应用而开发的.体现了当今最新的程序设计技术的功能和精华..NET框架为C#提供了 ...
- C语言基础回顾
第一章 C语言基础 1. C语言编译过程 预处理:宏替换.条件编译.头文件包含.特殊符号 编译.优化:翻译并优化成等价的中间代码表示或汇编代码 汇编:生成目标文件,及与源程序等效的目标的机器语言代码 ...
- 黑马程序员_ C语言基础(二)
------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 概览 今天基础知识分为以下几点内容(注意:循环.条件语句在此不再赘述): 1.Hello W ...
- C#语言基础— 输入与输出
C#语言基础— 输入与输出 1.1函数的四要素:名称.输入.输出.加工 1.2主函数:输出语句.输入语句: Static viod Main(string[] stgs)//下划线部分可以自己指定 { ...
- 【GoLang】GO语言系列--002.GO语言基础
002.GO语言基础 1 参考资料 1.1 http://www.cnblogs.com/vimsk/archive/2012/11/03/2736179.html 1.2 https://githu ...
- R语言基础:数组&列表&向量&矩阵&因子&数据框
R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...
随机推荐
- Linux系统常用指令
建立一个文件或文件夹的软链接: ln -s 原名 软链接名 软链接就类似Windows下的"快捷方式",访问它其实访问的是它指向的内容. git仓库操作 1.通常远程操作的第一步, ...
- 使用python自动发放员工工资条到个人邮箱
人力资源部每个月发工资条,以前靠人工手动一条一条的复制,200多号员工,差不多需要耗费一天时间. 用python写个脚本,分分钟的事情就可以全部发送完. 我这边工资表如下图 姓名在C列,邮箱在B列. ...
- 一个lseek引起的思考
先看一段代码: int find_value(int fd) { int ret; char buff[8] = ""; struct timeval st,ed; long lo ...
- x64 番外篇——知识铺垫
写在前面 此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...
- mysql 在已存在的表中添加/删除字段约束AUTO_INCREMENT遇到的问题
1. 在已存在的表中添加字段约束AUTO_INCREMENT修饰符 mysql> alter table user modify uid int auto_increment primary k ...
- springboot服务引入外部jar包在windows运行正常,在linux环境上无法加载到引入jar包的类
一.问题描述 最近开发了一个springboot程序,需要依赖第三方jar包,这个jar包无法直接通过pom远程仓库下载,需要从自己本地引入,于是配置pom文件如下:将本地jar包引入工程,syste ...
- 学习Redis(三)
一.安装部署 1.常规安装 1.安装 # wget http://download.redis.io/releases/redis-3.0.7.tar.gz # tar xf redis-3.0.7. ...
- VMware ESXi安装NVIDIA GPU显卡硬件驱动和配置vGPU
一.驱动软件准备:从nvidia网站下载驱动,注意,和普通显卡下载驱动地址不同. 按照ESXi对应版本不同下载不同的安装包.安装包内含ESXi主机驱动和虚拟机驱动. GPU显卡和物理服务器兼容查询:( ...
- c语言代码规范
什么叫规范?在C语言中不遵守编译器的规定,编译器在编译时就会报错,这个规定叫作规则.但是有一种规定,它是一种人为的.约定成俗的,即使不按照那种规定也不会出错,这种规定就叫作规范.虽然我们不按照规范也不 ...
- C++ | 程序编译连接原理
文章目录 预编译(生成*.i文件) 编译(生成*.s文件) 汇编(生成*.o文件,也叫目标文件) 链接(生成*.exe文件,也叫可执行文件) 汇编--目标文件 查看文件头 查看符号表 查看 .o 文件 ...