前言

 最近有朋友和同学找我要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);

}
}