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); } }
本文来自博客园,作者:lzstar-A2,转载请注明原文链接:https://www.cnblogs.com/lzstar/p/15399235.html
作 者:lzstar-A2
出 处:https://www.cnblogs.com/lzstar/
关于作者:一名java转安全的在校大学生
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
欢迎大家关注安全学习交流群菜鸟联盟(IThonest),如果您觉得文章对您有很大的帮助,您可以考虑赏博主一杯可乐以资鼓励,您的肯定将是我最大的动力。thx.
菜鸟联盟(IThonest),一个可能会有故事的qq群,欢迎大家来这里讨论,共同进步,不断学习才能不断进步。扫下面的二维码或者收藏下面的二维码关注吧(长按下面的二维码图片、并选择识别图中的二维码),个人QQ和微信的二维码也已给出,扫描下面👇的二维码一起来讨论吧!!!