前言:本人水平有限,有不足或错误之处,欢迎指正
以下都是一些比较基础的编程思路,应付c语言考试应该够用了。
一.题库编程常用思路
(1)水仙花数
#include<stdio.h>
int main()
{
int i,a,b,c;
for(i=100;i<=999;i++)
{
a=i/100; //求百位上的数字
b=i/10%10; //求十位上的数字
c=i%10; //求个位上的数字
if(i==a*a*a+b*b*b+c*c*c) printf("%d\n",i);
}
return 0;
}
(2)判断是否为完数
#include<stdio.h>
int main()
{
int i, j, s, n;
scanf("%d", &n);
for( i=2; i<=n; i++ )
{
s=0;
for( j=1; j<i; j++ )
{
if(i%j == 0)
s += j;
}
if(s == i)
printf("%d\n", i);
}
return 0;
}
(3)将一个数逆序后输出
#include<stdio.h>
int main()
{
int n,s=0;
scanf("%d", &n);
while(n)
{
s=s*10+n%10;
n/=10;
}
printf("%d\n",s);
return 0;
}
写成函数形式
int reverse(int x)
{
int s=0;
while(x)
{
s=s*10+x%10;
x/=10;
}
return s;
}
(4)判断是否为素数
int prime(int n)
{
int i;
if(n==1) return 0;
for(i=2;i<n;i++)
{
if(n%i==0)
return 0;
}
return 1;
}
(5)规定输出n个数1行
if(cnt%5==0)
printf("\n");
(6)读取以某数字结束的字符串
#include<stdio.h>
int main()
{
int n,s=0;
while(1)
{
scanf("%d",&n);
if(n==-1) break;
s+=n;
}
printf("%d\n",s);
return 0;
}
(7)输出一个规则图形
外循环是循环行数,内循环循环要求输出的字符
(8)数组逆序输出(以给定数组为示例)
#include<stdio.h>
int main()
{
int i,j,a[10]={1,2,3,4,5,6,7,8,9,10};
for(i=0,j=9;i<j;i++,j--)
{
int t;
t=a[i];
a[i]=a[j];
a[j]=t;
}
for(i=0;i<10;i++)
printf("%d ",a[i]);
return 0;
}
(8)字符串逆序输出
#include<stdio.h>
#include<string.h>
int main()
{
char s[100];
int i,j;
gets(s);
for(i=0,j=strlen(s)-1; i<j; i++,j--)
{
char t;
t=s[i];
s[i]=s[j];
s[j]=t;
}
puts(s);
return 0;
}
(9)在某一字符串中删除特定数字或者字符
#include<stdio.h>
int main()
{
int i,j,n,a[10]={1,1,2,1,3,3,2,1,3,2};
scanf("%d",&n);
for(i=0,j=0;i<10;i++)
{
if(a[i]!=n) //如果删除数字类型的 if(a[i]<'0' || a[i]>'9')
a[j++]=a[i];
}
for(i=0;i<j;i++)
printf("%d ",a[i]);
printf("\n");
}
(10)自定义删除函数
int fun(int x[],int a,int b) //可将b的类型改成 char 用于比较字符 或 改成字符数组 比较字符串
{
int i,j;
for(i=0,j=0;i<a;i++)
{
if(x[i]!=b)
x[j++]=x[i];
}
return j;
}