文章目录
- 一、一元二次方程求实根
- 二、实现两个字符串的连接并且不用strcat函数
- 三、计算并输出杨辉三角前十行
- 四、输入正整数n生成n*n方阵,转置并输出
- 五、输入字符串求其长度
- 六、编写函数,函数功能:删去一维数组中所有重复的数,只保留不同的数。
- 七、将一个数插入到数组中,并且不改变数组原来的顺序
- 八、输入两个整数,求最大公因数
- 九、输入一个十进制数,转换为任意进制数
- 十、输入一个以回车为结束的字符串,过滤掉所有的非数字字符后转换成十进制整数输出
- 十一、循环右移:整数右移任意位置
- 十二、输入一个一回车结束的字符串,过滤掉所有非十六进制数后组成一个新的字符串,输出该字符串并将其转换成十进制后输出
- 十三、字符数组中任意位置插入任意字符
- 十四、输入两个字符串,找到第二个字符串在第一个字符串中的位置,如没找到输出-1。用指针法实现
- 十五、递归方法将整数n转换成字符串
一、一元二次方程求实根
#include <stdio.h>
#include <math.h>
int main()
{
float a,b,c,x1,x2,m,n,disc;
scanf("%f%f%f",&a,&b,&c);
disc=b*b-4*a*c;//dis<0无实根,>0有两个不相等的实根,=0有两个相等的实根
if(m<0)printf("方程无实根");
else{
m=sqrt(disc)/(2*a);
n=(-b)/(2*a);
x1=n+m;
x2=n-m;
printf("两个实根分别为%f,%f",x1,x2);
}
return 0;
}
二、实现两个字符串的连接并且不用strcat函数
#include <stdio.h>
int main()
{
char ch1[50],ch2[20],*p,*q;
gets(ch1);
gets(ch2);
p=ch1;q=ch2;
while(*p)p++;
while(*q)
{
*p=*q;
p++;q++;
}
*p='\0';
puts(ch1);
return 0;
}
三、计算并输出杨辉三角前十行
#include <stdio.h>
int main()
{
int i,j,a[10][10]={0};
for(i=0;i<10;i++)
{
a[i][0]=1;
a[i][i]=1;}
for(i=2;i<10;i++)
for(j=0;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(i=0;i<10;i++)
{for(j=0;j<10;j++)
printf("%4d",a[i][j]);
printf("\n") ;
}
return 0;
}
四、输入正整数n生成n*n方阵,转置并输出
#include <stdio.h>
int main()
{
int i,j,t,n,a[10][10],b[10][10];
scanf("%d",&n);
if(n>1&&n<=6)
{for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=i*n+j+1;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
printf("\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
b[j][i]=a[i][j];
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
printf("%4d",b[i][j]);
printf("\n");
}
return 0;
}}
五、输入字符串求其长度
#include <stdio.h>
int main()
{
int length (char *p);
int len;
char ch1[80];
gets(ch1);
len=length(ch1);
printf("长度为%d",len);
}
int length(char *p)
{int n=0;
while(*p)
{p++;n++;
}
return n;
}
六、编写函数,函数功能:删去一维数组中所有重复的数,只保留不同的数。
#include <stdio.h>
int fun(int a[],int x)
{
int i,j,k;
for(i=0;i<x;i++)
{
for(j=i+1;j<x;j++)
if(a[i]==a[j])
{
for(k=j;k<x-1;k++)
a[k]=a[k+1];
j--;
x--;
}
}
return x;
}
int main()
{
int a[100],i,n,x;
printf("输入数组个数:");
scanf("%d",&x);
printf("输入数组内容:");
for(i=0;i<x;i++)
scanf("%d",&a[i]);
n=fun(a,x);
for(i=0;i<n;i++)
printf("%d ",a[i]);
return 0;
}
七、将一个数插入到数组中,并且不改变数组原来的顺序
#include <stdio.h>
int main()
{
int a[10]={1,3,5,7,9,10,11,15,17};
int x,i,j,k;
scanf("%d",&x);
if(x>a[8])a[9]=x;
else{
for(i=0;i<9;i++)
if(x<a[i])
{
for(j=9;j>i;j--)
a[j]=a[j-1];
a[i]=x;
break;
}
}
for(i=0;i<10;i++)
printf("%3d",a[i]);
return 0;
}
八、输入两个整数,求最大公因数
#include <stdio.h>
int main()
{
int m,n,r;
do{
scanf("%d%d",&m,&n);
}while(m<=0||n<=0);
if(m<n)
{
r=m;m=n;n=r;
}
while(n!=0)
{
r=m%n;
m=n;
n=r;
}
printf("%d",m);
return 0;
}
九、输入一个十进制数,转换为任意进制数
#include <stdio.h>
int main()
{
int m,n,k,a[10],i,j;
char s[]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
printf("输入一个十进制数:\n");
scanf("%d",&m);
printf("要转换的进制是:\n");
scanf("%d",&n);
i=0;
while(m!=0)
{
k=m%n;
a[i]=k;
i++;
m=m/n;
}
for(j=i-1;j>=0;j--)
printf("%c",s[a[j]]);
return 0;
}
十、输入一个以回车为结束的字符串,过滤掉所有的非数字字符后转换成十进制整数输出
#include <stdio.h>
int main()
{
char c[20];
int i=0,m=0;
while((c[i]=getchar())!='\n')
{
if(!(c[i]>='a'&&c[i]<='z')&&!(c[i]>='A'&&c[i]<='Z'))
m=m*10+c[i]-'0';
i++;
}
printf("%d",m);
return 0;
}
十一、循环右移:整数右移任意位置
有n个整数,使前面各数顺序循环移动m个位置(m<n)。
编写函数实现上述功能,在主函数中输入n个整数并输出调整后的n个数。例如:
输入 input n,m:5,3
1 2 3 4 5
输出:3 4 5 1 2
#include <Stdio.h>
void fun(int *x,int m,int n);
int main()
{
int a[10],m,n,i;
scanf("%d",&n);
scanf("%d",&m);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
fun(a,n,m);
for(i=0;i<n;i++)
printf("%d",a[i]);
return 0;
}
void fun(int *x,int n,int m)
{
int i,j,k;
for(i=0;i<m;i++)
{
k=x[n-1];
for(j=n-1;j>0;j--)
x[j]=x[j-1];
x[0]=k;
}
}
十二、输入一个一回车结束的字符串,过滤掉所有非十六进制数后组成一个新的字符串,输出该字符串并将其转换成十进制后输出
#include <Stdio.h>
int main()
{
char c,a[80];
int i=0,j=0,b[80],m=0;
while((c=getchar())!='\n')
{
if((c>='a'&&c<='f')||(c>='A'&&c<='F')||(c>='0'&&c<='9'))
{
a[j]=c;j++;
}
i++;
}
a[j]='\0';
printf("%s\n",a);
i=0;
while(a[i]!='\0')
{
if(a[i]>='a'&&a[i]<='f')b[i]=a[i]-'a'+10;
if(a[i]>='A'&&a[i]<='F')b[i]=a[i]-'A'+10;
if(a[i]>='0'&&a[i]<='9')b[i]=a[i]-'0';
i++;
}
for(j=0;j<i;j++)
m=m*16+b[j];
printf("%d",m);
return 0;
}
十三、字符数组中任意位置插入任意字符
#include <stdio.h>
int main()
{
char s[80],c,*p,*q;
int x,n=0;
gets(s);scanf("%c",&c);
scanf("%d",&x);
p=q=s;
while(*p)p++;
while(*q)
{
n++;
if(n==x)
{
while(p>=q)
*(p+1)=*p--;
*q=c;
break;
}
q++;
}
puts(s);
return 0;
}
十四、输入两个字符串,找到第二个字符串在第一个字符串中的位置,如没找到输出-1。用指针法实现
#include <stdio.h>
int main()
{
char ch1[80],ch2[80],*p,*q;
gets(ch1);gets(ch2);
p=ch1;
q=ch2;
int count=0,flag=1;
while(*p)
{
if(*p==*q)
{
while(*p==*q&&*q!='\0')
{p++;q++;}
p--;
}
if(*q=='\0'){flag=0;break;}
else {p++;count++;q=ch2;}
}
if(flag==1)printf("-1");
else printf("%d个位置",count);
return 0;
}
十五、递归方法将整数n转换成字符串
#include <stdio.h>
int main()
{
void convert(int n);
int number;
scanf("%d",&number);
if(number<0)
{
putchar('-');
number=-number;
}
convert(number);
printf("\n");
}
void convert(int n)
{
int i;
if((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
版权声明:本文为m0_60500662原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。